1. 程式人生 > >SQL 中的語法順序與執行順序

SQL 中的語法順序與執行順序

SQL 語句的語法順序是:
SELECT DISTINCT
< select_list >
FROM
< left_table > < join_type >
JOIN < right_table > ON < join_condition >
WHERE
< where_condition >
GROUP BY
< group_by_list >
HAVING
< having_condition >
ORDER BY
< order_by_condition >
LIMIT < limit_number >
與sql語句的書寫順序並不是一樣的,而是按照下面的順序來執行
from–where–group by–having–select–order by,
from:需要從哪個資料表檢索資料
where:過濾表中資料的條件
group by:如何將上面過濾出的資料分組
having:對上面已經分組的資料進行過濾的條件
select:檢視結果集中的哪個列,或列的計算結果
order by :按照什麼樣的順序來檢視返回的資料

from 子句–執行順序為從後往前、從右到左
表名(最後面的那個表名為驅動表,執行順序為從後往前, 所以資料量較少的表儘量放後)
多表連線時,使用表的別名並把別名字首於每個Column上。可以減少解析的時間並減少那些由Column 歧義引起的語法錯誤.

where子句–執行順序為自下而上、從右到左

group by–執行順序從左往右分組

執行select語句,使用聚集函式進行計算,再執行distinct, distinct一般放在select最後,
(聚合函式忽略null值), count(distinct(id))這種先執行distinct再聚合;

使用having子句篩選分組;

計算所有的表示式;

使用order by對結果集進行排序,執行順序從左往右分組

limit 分頁