通用語法及分類
- 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';