sql關鍵詞執行先后順序是什么

sql關鍵詞執行的先后順序是:首先執行from語句;然后是where語句,group by語句;接著是having語句;最后是order by語句。

sql關鍵詞執行先后順序是什么

【推薦課程:MySQL教程

sql關鍵詞執行順序

例:

select?m.*?from(select?t.*,rownum?r?from (select?id,name,e.username,e.realname?from?departments?d?,employees?e?where?d.manager=e.username(+) order?by?id?desc?)?t?where?rownum?  select?m.*(select?t.*,t.rownum?r?from( select?a,b,c,d?from?table1?order?by?a?desc )?t?where?rownum???

標準的 SQL 的解析順序為

(1)FROM 子句, 組裝來自不同數據源的數據

(2)WHERE 子句, 基于指定的條件對記錄進行篩選

(3)GROUP BY 子句, 將數據劃分為多個分組

(4)使用聚合函數進行計算

(5)使用 HAVING 子句篩選分組

(6)計算所有的表達式

(7)使用 ORDER BY 對結果集進行排序

在學生成績表中 (暫記為 tb_Grade), 把 “考生姓名”內容不為空的記錄按照 “考生姓名” 分組, 并且篩選分組結果, 選出 “總成績” 大于 600 分的

SQL 語句為:

 select?考生姓名,?max(總成績)?as?max總成績   from?tb_Grade   where?考生姓名?is?not?null   group?by?考生姓名   having?max(總成績)?>?600   order?by?max總成績

在上面的示例中 SQL 語句的執行順序如下:

(1)?首先執行 FROM 子句, 從 tb_Grade 表組裝數據源的數據

(2)執行 WHERE 子句, 篩選 tb_Grade 表中所有數據不為 NULL 的數據

(3)?執行 GROUP BY 子句, 把 tb_Grade 表按 “學生姓名” 列進行分組

(4)計算 max() 聚集函數, 按 “總成績” 求出總成績中最大的一些數值

(5)?執行 HAVING 子句, 篩選課程的總成績大于 600 分的.

(6)?執行 ORDER BY 子句, 把最后的結果按 “Max 成績” 進行排序.

總結:

? 版權聲明
THE END
喜歡就支持一下吧
點贊13 分享