- 最基本的SELECT語(yǔ)句:
SELECT 字段1,字段2,字段3,... FROM 表名
SELECT 1+1, 2*3;
SELECT 1+1, 2*3
FROM DULE; #DULE 偽表
*代表表中的所有字段;
- 列的別名,可以省略
AS,可以用一對(duì) " " 引用。SELECT 字段1 別名1,字段2 AS 別名2,字段3 "別名 3" FROM 表名 - 去重,
SELECT DISTINKT 字段1 FROM 表名; - 空值參與運(yùn)算,其結(jié)果也一定是空值,
NULL不等同于''或0,在語(yǔ)句中替換為IFNULL(字段名,默認(rèn)值)解決; - 著重號(hào) `` ,當(dāng)變量名為關(guān)鍵字時(shí),用``以區(qū)分;
SELECT *
FROM `ORDER`;
- 查詢常數(shù),給每一行數(shù)據(jù)增加一個(gè)常數(shù)作為一列;
SELECT '中國(guó)人', id, name
FROM `staffs`;
- 查詢表中所有關(guān)鍵字信息,使用
DESCRIBE | DESC 表名查詢; - 使用
WHERE關(guān)鍵字進(jìn)行條件判斷,WHERE需要跟在FROM后面。語(yǔ)法:SELECT FROM 表名 WHERE 條件。
SELECT *
FROM staffs
WHERE department = 'frontend';
- 運(yùn)算符
運(yùn)算符內(nèi)容較多,跳轉(zhuǎn)查看詳情 - 排序
SELECT staff_id, salary * 12 annual_salary
FROM staffs
ORDER BY annual_salary DESC;
- 沒有查詢條件的情況下,默認(rèn)按照添加數(shù)據(jù)的順序排序;
- 使用
ORDER BY 字段名 排序方式進(jìn)行排序; - 排序方式有升序
ASC、降序DESC兩種,默認(rèn)為升序,可以省略,NULL值作為最小的參與排序; - 排序依賴的字段可以是別名,但
WHERE條件判斷的字段不能用別名。因?yàn)檎Z(yǔ)句執(zhí)行的順序是: 執(zhí)行FROM table找到表 => 執(zhí)行WHERE語(yǔ)句找到滿足該條件的全部數(shù)據(jù) => 執(zhí)行SELECT語(yǔ)句過濾出需要的字段 => 執(zhí)行ORDER BY語(yǔ)句進(jìn)行排序。由此可見,條件判斷時(shí)還未定義字段別名,而排序時(shí)別名已定義好。由此可見,ORDER BY語(yǔ)句一定排在SELECT語(yǔ)句后。 - 多列排序:需要有多個(gè)字段作為排序依據(jù)。
SELECT *
FROM staffs
ORDER BY department_id, salary DESC;
- 分頁(yè)
# 從第40條開始,每頁(yè)顯示10條
SELECT *
FROM staffs
LIMIT 40,10
-
LIMIT offset位置偏移量,pageSize每頁(yè)條數(shù),關(guān)系為:offset = pageSize * (當(dāng)前第幾頁(yè) - 1); - 當(dāng)從0開始時(shí),0可省略;
- 在MySQL8.0中,可以使用語(yǔ)法
LIMIT 每頁(yè)條數(shù)OFFSET 位置偏移量實(shí)現(xiàn)。 -
LIMIT語(yǔ)句必須放在整個(gè)SELECT語(yǔ)句的最后,因?yàn)檫@樣可以減少輸出,提升效率。
- 多表聯(lián)查
- 等值連接 vs 非等值連接
- 自連接 vs 非自連接
- 內(nèi)連接 vs 外連接