SELECT
定義:
列一個列的SQL指令。
指令語法:
1.普通列取
SELECT [DISTINCT] field1_name [AS field1_new_name],field2_name...
FROM table_name [table_new_name]
[WHERE criteria]
[GROUP BY fieldA_name,fieldB_name...] [HAVING criteria]
[ORDER BY fieldG_name DESC/[ASC], fieldH_name DESC/[ASC]...];
- 可以使用函數
- WHERE條件句(criteria)語法可參考: WHERE - SQL語句
-
執行順序:
FROM>WHERE>GROUP BY
>彙總函數(Aggregation Functions)>HAVING
>SELECT>DISTINCT>ORDER BY
2.相等連接(equi-join)列取
SELECT [DISTINCT] table1_name.field1_name [AS field1_new_name],table2_name.field2_name...
FROM table1_name [table1_new_name],table2_name [table2_new_name],table3_name [table3_new_name]...
[WHERE table1_name.fieldA_name = table2_name.fieldB_name AND table1_name.fieldD_name = table3_name.fieldC_name AND criteria]
[GROUP BY fieldA_name,fieldB_name...]
[HAVING criteria] [ORDER BY fieldG_name DESC/[ASC], fieldH_name DESC/[ASC]...];
-
連接的資料表可能有重複的欄位名稱,所以最好在考試中寫出欄位全名
(例如 abc.field_name或table_name.field_name) - 可以使用函數
- WHERE條件句(criteria)語法可參考: WHERE - SQL語句
-
Executing order:
FROM>WHERE>GROUP BY
>彙總函數(Aggregation Functions)HAVING
>SELECT>DISTINCT>ORDER BY
3.複雜列取
SELECT [DISTINCT] table1_name.field1_name [AS field1_new_name],table2_name.field2_name...
FROM table1_name [table1_new_name] LEFT JOIN/RIGHT JOIN/FULL JOIN/INNER JOIN table2_name [table2_new_name]
ON table1_name.fieldA_name = table2_name.fieldB_name
LEFT JOIN/RIGHT JOIN/FULL JOIN/INNER JOIN table3_name [table3_new_name] ON table1_name.fieldD_name = table3_name.fieldC_name ...
[WHERE criteria]
[GROUP BY table2_name.fieldA_name,table1_name.fieldB_name...]
[HAVING criteria] [ORDER BY table1_name.fieldG_name DESC/[ASC], table2_name.fieldH_name DESC/[ASC]...]
[UNION/UNION ALL/INTERSECT/(EXCEPT/MINUS) SELECT...]
[UNION/UNION ALL/INTERSECT/(EXCEPT/MINUS) SELECT...]...;
- EXCEPT和MINUS為等效指令,分別在於MySQL只支援EXCEPT,教科書依據MySQL,而HKDSE ICT SQL指令參考表只列出MINUS
-
連接的資料表可能有重複的欄位名稱,所以最好在考試中寫出欄位全名
(例如 abc.field_name或table_name.field_name) - 可以使用函數
- WHERE條件句(criteria)語法可參考: WHERE - SQL語句
-
Executing order:
FROM>ON>OUTER JOIN>WHERE>GROUP BY
>彙總函數(Aggregation Functions)>HAVING
>SELECT>DISTINCT>ORDER BY
其他參考:
SQL order of execution:LinkMySQL:Link
「長。」某位中六學生說道
留言
發佈留言