1、MySQL的語句執行順序
見原文吧(MySQL的語句執行順序 - houqijun - 博客園),我再描述也沒人家好...
2、子查詢執行順序
參考:SQL嵌套子查詢和相關子查詢的執行過程有什么區別(推薦) - 南無 - 博客園(包含詳細的舉例和步驟說明)
2.1 子查詢分類
子查詢又稱內部查詢,而包含子查詢的語句稱之外部查詢(又稱主查詢)。
所有的子查詢可以分為兩類,即相關子查詢和非相關子查詢。
- 相關子查詢:執行依賴於外部查詢的數據,外部查詢執行一行,子查詢就執行一次。
- 非相關子查詢(又叫嵌套子查詢):獨立於外部查詢的子查詢,子查詢總共執行一次,執行完畢后將值傳遞給外部查詢。
2.2 子查詢執行過程
2.2.1 相關子查詢執行過程
執行過程
- 從外層查詢中取出一個元組(即一行),將元組相關列的值傳給內層查詢。
- 執行內層查詢,得到子查詢操作的值。
- 外查詢根據子查詢返回的結果或結果集得到滿足條件的行。
- 然后外層查詢取出下一個元組重復做步驟1-3,直到外層的元組全部處理完畢。
注意:什么是元組?關系是一張表,表中的每行bai(即數據庫中的每條記錄)就是一個元組。
2.2.2 非相關子查詢(嵌套子查詢)執行過程
執行過程
- 執行子查詢,其結果不被顯示,而是傳遞給外部查詢,作為外部查詢的條件使用。
- 執行外部查詢,並顯示整個結果。