mysql基礎複習(SQL語句的四個分類),

今年哪年發表於2022-02-25

                                                                                                   (複習mysql ) 

(一)SQL分類:

SQL語句根據其功能,主要分為四類:DDL、DML、DQL、DCL。 DDL:

Data DefinitionLanguage (DDL)資料定義語言,用來定義資料庫物件(資料庫,表, 欄位)

DML:Data Manipulation Language 資料操作語言,用來對資料庫表中的資料進行增刪改

DQL: Data Query Language 資料查詢語言,用來查詢資料庫中表的記錄

DCL: Data Control Language 資料控制語言,用來建立資料庫使用者、控制資料庫的 訪問許可權。

 

(二)DDL  資料庫的操作

1、資料庫操作 查詢所有資料庫:show databases; 建立資料庫:create database 資料庫名; 刪除資料庫:drop database 資料庫名; 使用資料庫:use 資料庫名; 

2、表操作 查詢當前資料庫所有表:show tables;

檢視指定表結構:desc 表名; 查詢指定表的建表語句:show create table 表名;

建立表結構:create table 表名( 欄位1 欄位1型別, 欄位2 欄位2型別 ... );

3,MySQL中的資料型別有很多,主要分為三類:數值型別、字串型別、日期時間型別。 數值型別:有符號:SIGNED、無符號:UNSIGNED。預設是有符號。 浮點型可以用型別名稱後加(M,D)來表示,M表示該值的總共長度,D表示小數點後面的長度。

 

 

 

 

 

 

4,

字串型別: char 與 varchar 都可以描述字串,char是定長字串,指定長度多長,就佔用多少個字元 。而varchar是變長字串,指定的長度為最大佔用長度 。相對來說,char的效能會更高些。

5,日期時間型別:

 

 (一部分 比較常用的)

6,表格的格式:

修改表名 alter table 表名 rename to 新的表名;

新增列 alter table 表名 add 列名 資料型別;

修改列名稱 型別 alter table 表名 change 列名 新列名 列型別 刪除列 alter table 表名 drop 列名;

刪除表 drop table 表名;(會使用就可以)

 

(三)DML 

(1)   DML:DML英文全稱是Data Manipulation Language(資料操作語言),用來對資料庫中表的資料記錄進行增、刪、改操作 新增表資料語法: insert into 表名(列名1,..列名n) values(值1,...值n);

注意: 1 列名和值要一一對應。

2. 如果表名後,不定義列名,則預設給所有列新增值,如果第一列是主鍵列,我們需要在新增值時把第一列的值設定為null。

3. 除了數值型別,其他型別的值需要使用引號引起來。

 

 (2)  刪除表資料語法: delete from 表名 where 條件 注意:

1. 如果不加條件,則刪除表中所有記錄。

2. 如果要刪除所有記錄 1. delete from 表名; -- 不推薦使用。有多少條記錄就會執行多少次刪除操作

2. truncate table 表名; -- 推薦使用,效率更高先刪除表,然後再建立一張一樣的表。

 

 (3)修改表資料語法:

update 表名 set 列名1 = 值1, 列名2 = 值2,... where 條件;

注意: 如果不加任何條件,則會將表中所有記錄全部修改。

 

(四) DQL

DQL英文全稱是Data Query Language(資料查詢語言),資料查詢語言,用來查詢資料庫中表的記錄。

  (1)DQL 查詢語句語法結構: SELECT 欄位列表 FROM 表名列表 WHERE 條件列表 GROUP BY 分組欄位列表 HAVING 分組後條件列表 ORDER BY 排序欄位.

 

(2)DQL 查詢語句分類: 基本查詢(不帶任何條件)

       條件查詢(WHERE)

       聚合函式(count、max、min、avg、sum)

       分組查詢(group by) 排序查詢(order by)

        分頁查詢(limit)

(3)基礎查詢

     1、查詢多個欄位 SELECT 欄位1, 欄位2, 欄位3 ... FROM 表名 ; SELECT * FROM 表名 ; 注意 : * 號代表查詢所有欄位,在實際開發中儘量少用(不直觀、影響效率)。 

2、欄位設定別名 SELECT 欄位1 AS '別名1 ', 欄位2 AS '別名2' ... FROM 表名; SELECT 欄位1 [ 別名1 ] , 欄位2 [ 別名2 ] ... FROM 表名 3、去除重複記錄 SELECT DISTINCT 欄位列表 FROM 表名;

 

   (4)條件查詢

 

 

    (5)常用的比較運算子如下:

 

 

 

    (6)聚合函式

聚合函式 將一列資料作為一個整體,進行縱向計算 。 常見的聚合函式: 語法: SELECT 聚合函式(欄位列表) FROM 表名 ; 注意 : NULL值是不參與所有聚合函式運算的。

 

 

 

    (7分組查詢)

SELECT 欄位列表 FROM 表名 [ WHERE 條件 ] GROUP BY 分組欄位名 [ HAVING 分組 後過濾條件 ];

where與having區別 執行時機不同:where是分組之前進行過濾,不滿足where條件,不參與分組;而having是分組 之後對結果進行過濾。

判斷條件不同:where不能對聚合函式進行判斷,而having可以。

注意事項: • 分組之後,查詢的欄位一般為聚合函式和分組欄位,查詢其他欄位無任何意義。

• 執行順序: where > 聚合函式 > having 。

• 支援多欄位分組, 具體語法為 : group by columnA,columnB

   (8)排序方式:

SELECT 欄位列表 FROM 表名 ORDER BY 欄位1 排序方式1 , 欄位2 排序方式2 排序方式 : ASC : 升序(預設值) DESC: 降序 注意事項: • 如果是升序, 可以不指定排序方式ASC ; • 如果是多欄位排序,當第一個欄位值相同時,才會根據第二個欄位進行排序 ;

    (9)分頁查詢

SELECT 欄位列表 FROM 表名 LIMIT 起始索引, 查詢記錄數 注意事項: • 起始索引從0開始,起始索引 = (查詢頁碼 - 1)* 每頁顯示記錄數。

• 分頁查詢是資料庫的方言,不同的資料庫有不同的實現,MySQL中是LIMIT。

• 如果查詢的是第一頁資料,起始索引可以省略,直接簡寫為 limit 10。

 

 

       五     DCL

   (1),DCL:英文全稱是Data Control Language(資料控制語言),用來管理資料庫使用者、控制資料庫的訪問許可權。 管理使用者

     1、查詢使用者 select * from mysql.user;

      2、建立使用者 CREATE USER '使用者名稱'@'主機名' IDENTIFIED BY '密碼';

     3、修改使用者密碼 ALTER USER '使用者名稱'@'主機名' IDENTIFIED WITH mysql_native_password BY '新密碼' ;

    4、刪除使用者 DROP USER '使用者名稱'@'主機名' ;

    注意事項: • 在MySQL中需要通過使用者名稱@主機名的方式,來唯一標識一個使用者。

    • 主機名可以使用 % 通配。

   • 這類SQL開發人員操作的比較少,主要是DBA使用。

     許可權控制

              MySQL中定義了很多種許可權,但是常用的就以下幾種:

               

 

 

 

 

         

      (2), 查詢許可權 SHOW GRANTS FOR '使用者名稱'@'主機名'

    2、授予許可權 GRANT 許可權列表 ON 資料庫名.表名 TO '使用者名稱'@'主機名'

   3、撤銷許可權 REVOKE 許可權列表 ON 資料庫名.表名 FROM '使用者名稱'@'主機名'

    注意事項: • 多個許可權之間,使用逗號分隔 • 授權時, 資料庫名和表名可以使用 * 進行通配,代表所有。

     (3)函式:是指一段可以直接被另一段程式呼叫的程式或程式碼。 也就意味著,這一段    程式或程式碼在MySQL中 已經給我們提供了,我們要做的就是在合適的業務場景呼叫對應     的函式完成對應的業務需求即可。 MySQL中的函式主要分為以下四類: 字串函式、        數值函式、日期函式、流程函式。

      字串函式:

        

 

 

        數值函式:

                            

 

 

    

 

相關文章