首頁 >資料庫 >mysql教程 >sql關鍵字執行先後順序是什麼

sql關鍵字執行先後順序是什麼

清浅
清浅原創
2019-04-09 10:59:4414448瀏覽

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<=? ) m where r>?

select m.*(select t.*,t.rownum r from(
select a,b,c,d from table1 order by a desc
) t where rownum < = ? ) m
where r > ?

標準的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 成績" 進行排序.


總結:以上就是這篇文章的全部內容了,希望對大家有所幫助。

以上是sql關鍵字執行先後順序是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn