天天看點

MySQL快速入門(一)

1.什麼是資料庫

          資料庫是“按照資料結構來組織、存儲和管理資料的倉庫”。是一個長期存儲在計算機内的、有組織的、有共享的、統一管理的資料集合。

         資料庫是以一定方式儲存在一起、能與多個使用者共享、具有盡可能小的備援度、與應用程式彼此獨立的資料集合,可視為電子化的檔案櫃——存儲電子檔案的處所,使用者可以對檔案中的資料進行新增、查詢、更新、删除等操作。

         資料庫分關系型資料庫和非關系型資料庫。

    1.1.關系型資料庫

        關系型資料庫,是指采用了關系模型來組織資料的資料庫,其以行和列的形式存儲資料,以便于使用者了解,關系型資料庫這一系列的行和列被稱為表,一組表組成了資料庫。

         下面是示例MySQL資料庫結構的大緻圖解

MySQL快速入門(一)

    1.2.非關系型資料庫

        NoSQL,泛指非關系型的資料庫。NoSQL最常見的解釋是“non-relational”, “Not Only SQL”也被很多人接受。NoSQL僅僅是一個概念,泛指非關系型的資料庫,差別于關系資料庫,它們不保證關系資料的ACID特性。

2.目前流行的有哪些關系型資料庫

    2.1:MySQL

         MySQL是一種開放源代碼的關系型資料庫管理系統(RDBMS),它是一個小型的資料庫,因為其速度、可靠性和适應性而備受關注。MySQL資料庫系統使用最常用的資料庫管理語言--結構化查詢語言(SQL)進行資料庫管理。由于MySQL是開放源代碼免費的,是以任何人都可以在General Public License的許可下下載下傳并根據個性化的需要對其進行修改。MySQL一開始被sun公司十億美金收購,後來又被oracle以74億美金收購,可謂是一波三折,MySQL生命力還是挺頑強的,是以MySQL5.5以上的版本都是由Oracle推出的,我們現在使用的都是5.X版本。

    2.2:oracle

        oracle是由甲骨文公司的一款大型關系型資料庫管理系統,系統可移植性好、使用友善、功能強,适用于各類大、中、小、微機環境。它是一種高效率、可靠性好的、适應高吞吐量的資料庫方案。但是由于是收費的,大部分中小企業普遍不使用它。

    2.3:DB2

         IBM公司的資料庫産品,收費的。常應用在銀行系統中. 在中國的網際網路公司,要求去IOE(阿裡提出的IBM小型機、Oracle資料庫、EMC儲存設備)

    2.4:SQLServer

         MicroSoft 公司收費的中型的資料庫。C#、.net等語言常使用。

    2.5:SyBase

         已經淡出曆史舞台。提供了一個非常專業資料模組化的工具PowerDesigner。

    2.6:SQLite

         嵌入式的小型資料庫,應用在手機端。

3.MySQL的安裝圖解

3.1:在Windows上安裝

l 配置MysQL服務

MySQL快速入門(一)

l 啟動和關閉(必須以管理運作cmd指令視窗)

MySQL快速入門(一)

l 登入

格式1:cmd>  mysql –u使用者名 –p密碼

例如:mysql -uroot –proot

MySQL快速入門(一)

格式2:cmd>  mysql --user=使用者名 --host=ip位址 --password=密碼

3.1.1: SQLyog 安裝與使用

l 安裝:

提供的SQLyog軟體為免安裝版,可直接使用

l 使用:

MySQL快速入門(一)

輸入使用者名、密碼,點選連接配接按鈕,進行通路MySQL資料庫進行操作

MySQL快速入門(一)

在Query視窗中,輸入SQL代碼,選中要執行的SQL代碼,按F8鍵運作,或按執行按鈕運作。

3.2 Linux上安裝MySQL

3.2.1 第一種本地安裝,檢視Linux上是否 存在MySQL

         rpm -qa|grep mysql

     如果有,解除安裝方法:

          因為Linux自帶MySQL,但是版本較低對現在的需求可能會很吃力

          yum remove mysql mysql-server mysql-libs mysql-common

          rm -rf /var/lib/mysql

          rm /etc/my.cnf

          檢視是否還有mysql軟體,有的話繼續删除。軟體解除安裝完畢後如果需要可以删除mysql的資料庫:/var/lib/mysql

          如果沒有網絡環境可以使用參考資料中的mysql-rpm檔案夾下的mysql安裝包來安裝。

          第一步:将以下檔案上傳到linux系統

MySQL快速入門(一)

         第二步:使用rpm指令進行安裝

                          [root@bogon mysql-rpm]# rpm -ivh mysql-community-*

         安裝後,啟動服務、設定密碼、遠端授權後既可以使用。

                                service mysqld start

                              設定root使用者密碼

                         mysql資料庫安裝完以後隻會有一個root管理者賬号,但是此時的root賬号還并沒有為其設定密碼,在第一次啟動mysql服務時,會進行資料庫的一些初始化工作,在輸出的一大串資訊中,我們看到有這樣一行資訊 :

                              /usr/bin/mysqladmin -u root password \'new-password\'  // 為root賬号設定密碼

                  mysql遠端連接配接授權

                               mysql>GRANT ALL PRIVILEGES ON *.* TO \'myuser\'@\'%\' IDENTIFIED BY \'mypassword\' WITH GRANT OPTION;

            注意:\'myuser\'、\'mypassword\' 需要替換成實際的使用者名和密碼。

3.2.2 第二種線上安裝方式

       3.2.2.1 下載下傳rpm包

    要使用yum 安裝mysql,要使用mysql的yum倉庫,先從官網下載下傳适合你系統的倉庫http://dev.mysql.com/downloads/repo/yum/,我們是centos6.4對應的rpm包為:mysql-community-release-el6-5.noarch.rpm,然後将mysql-community-release-el6-5.noarch.rpm上傳到linux系統。

MySQL快速入門(一)

       3.2.2.2  安裝倉庫清單

     注意:在上傳的mysql的rpm包目前目錄下,執行以下指令:

               yum localinstall mysql-community-release-el6-5.noarch.rpm 

 4.   SQL語句

        4.1  什麼是SQL語句

                        全稱Structured Query Language,簡稱SQL,中文叫結構化查詢語言。

                      關系資料庫語言的國際标準。SQL92、SQL99

                      不隻是mysql還有其他資料庫,在SQL92或者SQL99這些國際SQL标準基礎之上,它們還擴充了自己的一些SQL語句,比如MySQL中的limit關鍵字

        4.2  SQL分類

                           資料定義語言:簡稱DDL(Data Definition Language),用來定義資料庫對象:資料庫,表,列等。關鍵字:create,alter,drop等

                           資料操作語言:簡稱DML(Data Manipulation Language),用來對資料庫中表的記錄進行更新。關鍵字:insert,delete,update等

                           資料控制語言:簡稱DCL(Data Control Language),用來定義資料庫的通路權限和安全級别,及建立使用者;關鍵字:grant等

                           資料查詢語言:簡稱DQL(Data Query Language),用來查詢資料庫中表的記錄。關鍵字:select,from,where等

        4.3   SQL語句的使用

               建立資料庫:

                              文法:

                                * create database 資料庫名;

                                * create database 資料庫名 character set 字元集;

MySQL快速入門(一)

                 檢視資料庫:

                            檢視資料庫伺服器中的所有的資料庫:show databases;

                            檢視某個資料庫的定義的資訊:show create database 資料庫名;

                  删除資料庫:

                              drop database 資料庫名稱;

         4.4  操作表

                  4.4.1   字段類型

                           常用的類型有:

                                          數字型:int

                                          浮點型:double

                                         字元型:varchar(可變長字元串)

                                         日期類型:date(隻有年月日,沒有時分秒)

                                                           datetime(年月日,時分秒)

                                          boolean類型:不支援

             分類                         類型名稱                                                                  說明
            整數類型 tinyInt 很小的整數
smallint 小的整數
mediumint 中等大小的整數
int(integer) 普通大小的整數
           小數類型 float 單精度浮點數
double 雙精度浮點數
decimal(m,d) 壓縮嚴格的定點數------開發時用
            日期類型 year YYYY  1901~2155
time HH:MM:SS  -838:59:59~838:59:59
date YYYY-MM-DD 1000-01-01~9999-12-3
datetime-開發用 YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00~ 9999-12-31 23:59:59
timestamp YYYY-MM-DD HH:MM:SS  1970~01~01 00:00:01 UTC~2038-01-19 03:14:07UTC
     文本、二進制類型 CHAR(M) M為0~255之間的整數
VARCHAR(M) M為0~65535之間的整數
TINYBLOB 允許長度0~255位元組
BLOB 允許長度0~65535位元組
MEDIUMBLOB 允許長度0~167772150位元組
LONGBLOB 允許長度0~4294967295位元組
TINYTEXT 允許長度0~255位元組
TEXT 允許長度0~65535位元組
MEDIUMTEXT 允許長度0~167772150位元組
LONGTEXT 允許長度0~4294967295位元組
VARBINARY(M) 允許長度0~M個位元組的變長位元組字元串
BINARY(M) 允許長度0~M個位元組的定長位元組字元串

                                          建立表:

                                    create table 表名(

                                                    字段名 類型(長度) 限制,

                                                    字段名 類型(長度) 限制

                                                           );

                                     單表限制:

                                               * 主鍵限制:primary key

                                               * 唯一限制:unique

                                               * 非空限制:not null

                                               * 注意:主鍵限制 = 唯一限制 + 非空限制

                                       檢視表:

                                             檢視資料庫中的所有表:show tables;

                                             檢視表結構:desc 表名;

                                        删除表:

                                                 drop table 表名;

                                        修改表:

                                                 alter table 表名 add 列名 類型(長度) 限制; --修改表添加列.

                                                 alter table 表名 modify 列名 類型(長度) 限制; --修改表修改列的類型長度及限制.

                                                 alter table 表名 change 舊列名 新列名 類型(長度) 限制; --修改表修改列名.

                                                 alter table 表名 drop 列名; --修改表删除列.

                                                 rename table 表名 to 新表名; --修改表名

                                                 alter table 表名 character set 字元集; --修改表的字元集

                 4.4.2    向表中插入資料:insert

                                                  文法:

                                                                    insert into 表 (列名1,列名2,列名3..) values  (值1,值2,值3..); -- 向表中插入某些列

                                                                    insert into 表 values (值1,值2,值3..); --向表中插入所有列

                                                                    insert into 表 (列名1,列名2,列名3..) values select (列名1,列名2,列名3..) from 表

                                                                    insert into 表 values select * from 表

                                                   注意:

                                                          1. 列名數與values後面的值的個數相等

                                                   2. 列的順序與插入的值得順序一緻

                                                          3. 列名的類型與插入的值要一緻.

                                                   4. 插入值得時候不能超過最大長度.

                                                          5.  值如果是字元串或者日期需要加引号’’ (一般是單引号)

                   4.4.3    更新記錄:update

                                                      文法:

                                                                update 表名 set 字段名=值,字段名=值;

                                                                update 表名 set 字段名=值,字段名=值 where 條件;

                                                   注意:

                                                 1. 列名的類型與修改的值要一緻.

                                                 2. 修改值得時候不能超過最大長度.

                                                        3. 值如果是字元串或者日期需要加’’

                     4.4.4   删除: delete

                                                       文法:

                                                           delete from 表名 [where 條件];

          4.5   查詢表

                       4.5.1 查詢語句

                                                   SELECT [DISTINCT]*[列名,列名] FROM  表 [WHERE 條件].

          4.6  條件查詢   

比較運算符 >  <  <=   >=   =  <> 大于、小于、大于(小于)等于、不等于
BETWEEN  ...AND... 顯示在某一區間的值(含頭含尾)
IN(set) 顯示在in清單中的值,例:in(100,200)
LIKE ‘張_’ 模糊查詢,Like語句中,% 代表零個或多個任意字元,_ 代表一個字元,例first_name like ‘_a%’;
IS NULL 判斷是否為空
邏輯運算符 and 多個條件同時成立
or 多個條件任一成立
not 不成立,例:where not(salary>100);

           4.7   聚合函數   

                                       特點:隻對單列進行操作

                                        常用的聚合函數:

                                               sum():求某一列的和

                                               avg():求某一列的平均值

                                        max():求某一列的最大值 

                                        min():求某一列的最小值

                                        count():求某一列的元素個數

             4.8   文法順序和執行順序(重要)

                         l MySQL查詢文法順序

                                                1. SELECT

                                                2. FROM

                                                3. LEFT JOIN

                                                4. ON

                                                5. WHERE

                                                6. GROUP BY

                                                7. HAVING

                                                8. ORDER BY

                                                9. LIMIT

                                      執行順序

                                         示例SQL:

                                      SELECT * FROM user LEFT JOIN order ON user.id = order.uid WHERE order.price > 1000 GROUP BY user.name HAVING count(1) > 5 ORDER BY user.name LIMIT 0,10

                          1. FROM(将最近的兩張表,進行笛卡爾積)---VT1(虛拟表)

                          2. ON(将VT1按照它的條件進行過濾)---VT2

                          3. LEFT JOIN(保留左表的記錄)---VT3

                          4. WHERE(過濾VT3中的記錄)--VT4…VTn

                          5. GROUP BY(對VT4的記錄進行分組)---VT5

                          6. HAVING(對VT5中的記錄進行過濾)---VT6

                          7. SELECT(對VT6中的記錄,選取指定的列)--VT7

                          8. ORDER BY(對VT7的記錄進行排序)--遊标

                          9. LIMIT(對排序之後的值進行分頁)

                   WHERE條件執行順序(影響性能)

                           1. MYSQL:從左往右去執行WHERE條件的。

                           2. Oracle:從右往左去執行WHERE條件的。

                           結論:寫WHERE條件的時候,優先級高的部分要去編寫過濾力度最大的條件語句。

MySQL快速入門(一)