MySQL:淺淺總結 DQL(基本語法、執行順序)
阿新 • • 發佈:2022-03-13
淺淺總結 DQL
DQL(Data Query Language):資料查詢語言
用於查詢資料庫中表的記錄。
本文是總結性文章,用於個人複習,不適合初學。
基本語法
SELECT FROM <left table> <join_type> JOIN <right_talbe> ON <join_condition> WHERE <where_condition> GROUP BY <group_by_list> HAVING <having_condition> ORDER BY <order_by_condition> LIMIT <limit_number>
-
基本查詢(
SELECT
不帶任何條件)-
*
:所有欄位,儘量少用(不直觀、影響效率) - 別名
-
去重:
DISTINCT
-
-
條件查詢(
WHERE
)-
比較運算子
-
>
、<
、>=
、<=
、=
、!=
或<>
-
BETWEEN ... AND ...
、IN(...)
-
LIKE ...
、IS NULL
-
-
邏輯運算子
-
AND
或&&
-
OR
或||
-
NOT
或!
-
-
比較運算子
-
聚合函式(
NULL
不參與聚合函式運算)COUNT
MAX
MIN
AVG
SUM
-
分組查詢(
GROUP BY
)- 支援多欄位分組
- 可以使用
HAVING
進行分組後過濾 -
HAVING
:分組後過濾,且支援對聚合函式的判斷
-
排序查詢(
ORDER BY
)-
ASC
:升序,預設 -
DESC
:降序 - 支援多欄位排序,按順序先後排序
-
例:按姓名升序,姓名相同則按年齡降序
(ORDER BY age, name DESC
)
-
-
分頁查詢(
LIMIT
)-
語法:
LIMIT 起始索引, 每頁記錄數
- 起始索引 = (查詢頁碼 - 1)* 每頁記錄數
-
例:查詢第 3 頁資料,每頁展示 10 條記錄
(LIMIT 20, 10
)
-
語法:
執行順序
(7) SELECT (1) FROM <left table> (3) <join_type> JOIN <right_talbe> (2) ON <join_condition> (4) WHERE <where_condition (5) GROUP BY <group_by_list> (6) HAVING <having_condition> (8) ORDER BY <order_by_condition> (9) LIMIT <limit_number>
- SELECT:選擇指定列
- DISTINCT:指定列去重
- FROM:指定查詢的表,計算笛卡爾積
- JOIN:連線型別,新增關聯外部表資料
- ON:連線條件
- WHERE:條件查詢(分組前過濾)
- GROUP BY:分組查詢
- HAVING:條件查詢(分組後過濾)
- ORDER BY:排序查詢
- LIMIT:分頁查詢