SQL:DML、DQL、DCL
DML:Data Manipulation Language(資料操作語言)
DML用來對資料庫中的資料記錄進行增刪改操作,
- DML-添加資料
- 給指定欄位添加資料(一條資料)
INSERT INTO 表名(欄位名1,欄位名2,...) VALUES(值1,值2,...);
- 給全部欄位添加資料(一條資料)
INSERT INTO 表名 VALUES(值1,值2,...);
- 批量添加資料
# 指定欄位
INSERT INTO 表名(欄位名1,欄位名2,...) VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);
# 所有欄位
INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);
注意:
- 插入資料時,指定的欄位順序需要與值的順序是一一對應的,
- 字串和日期型資料應該包含在引號中,
- 插入的資料大小,應該在欄位的規定范圍內,
- DML-修改資料
UPDATE 表名 SET 欄位名1=值1,欄位名2=值2,...[WHERE 條件];
-- 若不帶where條件,則修改整張表全部記錄的同一個欄位為同一個值
-- 例子:
update emp set name='youhui',gender='女' where id=10;
- DML-洗掉資料
DELETE FROM 表名 [WHERE 條件];
--注意:DELETE陳述句的條件可以有,也可以沒有,如果沒有條件,則會洗掉整張表的所有資料,即表會被清空,
--DELETE陳述句不能洗掉某一個欄位的值(可以使用UPDATE),
--例子:
delete from emp where id=10;
DQL:Data Query Language(資料查詢語言)
DQL用來查詢資料庫中表的記錄,
查詢關鍵字:SELECT
- DQL-語法(單表查詢)
--撰寫順序
SELECT
欄位串列
FROM
表名串列
WHERE
條件串列
GROUP BY
分組欄位串列
HAVING
分組后條件串列
ORDER BY
排序欄位串列
LIMIT
分頁引數
- DQL-基本查詢
- 查詢多個欄位
SELECT 欄位1,欄位2,欄位3... FROM 表名;
SELECT * FROM 表名;
- 設定別名(不是必須)
SELECT 欄位1 [AS 別名1],欄位2[AS 別名2] ... FROM 表名;
- 去除重復記錄
SELECT DISTINCT 欄位串列 FROM 表名;
- DQL-條件查詢(WHERE)
- 語法
SELECT 欄位串列 FROM 表名 WHERE 條件串列;
- 條件:可以是比較運算子和邏輯運算子
| 比較運算子 | 功能 |
|---|---|
| > | 大于 |
| >= | 大于等于 |
| < | 小于 |
| <= | 小于等于 |
| = | 等于 |
| <> 或 != | 不等于 |
| BETWEEN 最小值 AND 最大值 | 在某個范圍之內(含最小、最大值) |
| IN(...) | 在IN之后的串列中的值,多選一 |
| LIKE 占位符 | 模糊查詢(_匹配單個字符,%匹配任意個字符) |
| IS NULL | 是NULL |
| 邏輯運算子 | 功能 |
|---|---|
| AND 或 && | 并且(多個條件同時成立) |
| OR 或 || | 或者(多個條件任意一個成立) |
| NOT 或 ! | 非,不是 |
- 聚合函式(count、max、min、avg、sum)
- 介紹:聚合函式是將一列資料作為一個整體,進行縱向計算,
- 常見聚合函式:都是作用于表中的某一列的
| 函式 | 功能 |
|---|---|
| count | 統計數量 |
| max | 最大值 |
| min | 最小值 |
| avg | 平均值 |
| sum | 求和 |
- 語法:
SELECT 聚合函式(欄位串列) FROM 表名;
例子:select count(*) from emp;
--注意:null值不參與所有聚合函式運算
- DQL-分組查詢(GROUP BY)
- 語法:
SELECT 欄位串列 FROM 表名 [WHERE 條件] GROUP BY 分組欄位名 [HAVING 分組后過濾條件];
- where與having區別
- 執行時機不同:where是分組之前進行過濾,不滿足where條件,不進行分組;而having是分組之后對結果進行過濾,
- 判斷條件不同:where不能對聚合函式進行判斷,而having可以,
注意:
- 執行順序:where > 聚合函式 > having,
- 分組之后,查詢的欄位一般為聚合函式和分組欄位,查詢其他欄位無任何意義,
- DQL-排序查詢(ORDER BY)
- 語法:
SELECT 欄位串列 FROM 表名 ORDER BY 欄位1 排序方式1, 欄位2 排序方式2;
例子:
select * from emp order by entrytime;
- 排序方式:
- ASC:升序(默認值)
- DESC:降序
注意:如果是多欄位排序,當第一個欄位值相同時,才會根據第二個欄位進行排序,
- DQL-分頁查詢
- 語法:
SELECT 欄位串列 FROM 表名 LIMIT 起始索引,查詢記錄數;
- 注意:
- 起始索引從0開始,起始索引=(查詢頁碼 - 1)*每頁顯示記錄數,
- 分頁查詢是資料庫的方言,不同的資料庫有不同的實作,MySQL中是LIMIT,
- 如果查詢的是第一頁的資料,起始索引可以省略,直接簡寫為limit 查詢記錄數,
- DQL-執行順序

DCL:Data Control Language
DQL是用來管理資料庫用戶、控制資料庫的訪問權限的,
- DCL-管理用戶:管理哪些用戶可以訪問當前資料庫
- 查詢用戶
USE mysql;
SELECT * FROM user;
- 創建用戶
CREATE USER '用戶名'@'主機名' IDENTIFIED BY '密碼';
- 修改用戶密碼
ALTER USER '用戶名'@'主機名' IDENTIFIED WITH mysql_native_password BY '新密碼';
- 洗掉用戶
DROP USER '用戶名'@'主機名';
注意:
- 主機名可以使用 % 通配,
- 這類SQL開發人員操作的比較少,主要是DBA(Database Administrator,資料庫管理員)使用,
- DCL-權限控制:控制當前用戶連接上MySQL資料庫之后可以訪問哪些資料庫哪些表以及對這些表執行什么樣的操作,
MySQL中定義了很多種權限,但是常用的就以下幾種:
| 權限 | 說明 |
|---|---|
| ALL,ALL PRIVILEGES | 所有權限 |
| SELECT | 查詢資料 |
| INSERT | 插入資料 |
| UPDATE | 修改資料 |
| DELETE | 洗掉資料 |
| ALTER | 修改表 |
| DROP | 修改資料表/庫/視圖 |
| CREATE | 創建資料庫/表 |
- 查詢權限
SHOW GRANTS FOR '用戶名'@'主機名';
- 授予權限
GRANT 權限串列 ON 資料庫名.表名 TO '用戶名'@'主機名';
- 撤銷權限
REVOKE 權限串列 ON 資料庫名.表名 FROM '用戶名'@'主機名';
- 注意:
- 多個權限之間,使用逗號分隔,
- 授權時,資料庫名和表名可以使用 * 進行通配,代表所有,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/547709.html
標籤:MySQL
下一篇:MySQL基礎:函式
