mysql系列基礎篇01---通用的語法及分類

通用語法及分類

  • DDL: 數據定義語言,用來定義數據庫對象(數據庫、表、字段)
  • DML: 數據操作語言,用來對數據庫表中的數據進行增刪改
  • DQL: 數據查詢語言,用來查詢數據庫中表的記錄
  • DCL: 數據控制語言,用來創建數據庫用戶、控制數據庫的控制權限

一、DDL(數據定義語言)

1、數據庫操作

1.1 創建數據庫:
CREATE DATABASE [ IF NOT EXISTS ] 數據庫名 [ DEFAULT CHARSET 字符集] [COLLATE 排序規則 ];
1.2 刪除數據庫:
DROP DATABASE [ IF EXISTS ] 數據庫名;

注意:UTF8字符集長度爲3字節,有些符號佔4字節,所以推薦用utf8mb4字符集

2、表操作

2.1 查詢表結構:
DESC 表名;
2.2 查詢指定表的建表語句:
SHOW CREATE TABLE 表名;

2.3 創建表:

CREATE TABLE 表名(
    字段1 字段1類型 [COMMENT 字段1註釋],
    字段2 字段2類型 [COMMENT 字段2註釋],
    字段3 字段3類型 [COMMENT 字段3註釋],
    ...
    字段n 字段n類型 [COMMENT 字段n註釋]
)[ COMMENT 表註釋 ];

2.4 添加字段:
ALTER TABLE 表名 ADD 字段名 類型(長度) [COMMENT 註釋] [約束];
例:ALTER TABLE emp ADD nickname varchar(20) COMMENT '暱稱';

2.5 修改數據類型:
ALTER TABLE 表名 MODIFY 字段名 新數據類型(長度);
2.6 修改字段名和字段類型:
ALTER TABLE 表名 CHANGE 舊字段名 新字段名 類型(長度) [COMMENT 註釋] [約束];
例:將emp表的nickname字段修改爲username,類型爲varchar(30)
ALTER TABLE emp CHANGE nickname username varchar(30) COMMENT '暱稱';

2.7 刪除字段:
ALTER TABLE 表名 DROP 字段名;

2.8 修改表名:
ALTER TABLE 表名 RENAME TO 新表名

2.9 刪除表:
DROP TABLE [IF EXISTS] 表名;
2.10 刪除表,並重新創建該表:
TRUNCATE TABLE 表名;

二、DML(數據操作語言)

1、插入數據庫

方法一:

INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...);

方法二:

INSERT INTO 表名 (字段名1, 字段名2) 
SELECT 
值1, 值2 FROM 表名01

2、更新數據庫

方法一:直接更新表

UPDATE emp SET name = 'Jack' WHERE id = 1;

方法二:聯表更新

update t_sett_readysettledetail a 
 inner join t_stockmanage_deptproductbatchstocktrack b on a.trackcode = b.TrackCode and a.deptid=b.deptid
 set a.supplierid = b.supplierid ,a.suppliername = b.SupplierName
where a.supplierId is null

三、DQL(數據查詢語言)

1、語法

 

SELECT
    字段列表
FROM
    表名字段
WHERE
    條件列表
GROUP BY
    分組字段列表
HAVING
    分組後的條件列表
ORDER BY
    排序字段列表
LIMIT
    分頁參數

 

2、條件

比較運算符功能
> 大於
>= 大於等於
< 小於
<= 小於等於
= 等於
<> 或 != 不等於
BETWEEN … AND … 在某個範圍內(含最小、最大值)
IN(…) 在in之後的列表中的值,多選一
LIKE 佔位符 模糊匹配(_匹配單個字符,%匹配任意個字符)
IS NULL 是NULL
邏輯運算符功能
AND 或 && 並且(多個條件同時成立)
OR 或 || 或者(多個條件任意一個成立)
NOT 或 ! 非,不是

3、聚合函數

3.1 不分組語法:
SELECT 聚合函數(字段列表) FROM 表名;
例:
SELECT count(id) from employee where workaddress = "廣東省";

3.2 分組的語法:
SELECT 字段列表 FROM 表名 [ WHERE 條件 ] GROUP BY 分組字段名 [ HAVING 分組後的過濾條件 ];

3.3 where 和 having 的區別:

    • 執行時機不同:where是分組之前進行過濾,不滿足where條件不參與分組;having是分組後對結果進行過濾。
    • 判斷條件不同:where不能對聚合函數進行判斷,而having可以。
    • 執行順序:where > 聚合函數 > having

4、分頁查詢

SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查詢記錄數;

5、DQL執行順序

FROM -> WHERE -> GROUP BY -> SELECT -> ORDER BY -> LIMIT

 

四、DCL(數據庫控制語言)

-- 創建用戶test,能在任意主機訪問
create user 'test'@'%' identified by '123456';
create user 'test' identified by '123456';
-- 修改密碼
alter user 'test'@'localhost' identified with mysql_native_password by '1234';
-- 刪除用戶
drop user 'test'@'localhost';

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章