1. 程式人生 > 其它 >Mysql語法順序和執行順序

Mysql語法順序和執行順序

Sql語句的執行順序
例:SELECT `name`,COUNT(`name`) AS num FROM student WHERE grade < 60 GROUP BY `name` HAVING num >= 2 ORDER BY num DESC,`name` ASC LIMIT 0,2;

1、首先會執行from語句,把資料庫的表文件載入到記憶體中。
2、執行where語句,根據篩選條件過濾出資料並且在記憶體中生成一張臨時表。
3、如果有group by語句,會根據group by把記憶體中的臨時表切割成多張臨時表
4、執行select語句,如果語句中沒有group by,則在臨時表中執行select語句,若有group by語句,則會在多張臨時表中分別執行select語句。
5、如果語句中有having關鍵字,則執行完select語句後執行having,對資料進行二次過濾,值得注意的是,執行where語句時,是不能用到欄位別名的,因為執行where時,還沒有執行select,所以這時是不能使用欄位別名的,但是執行having時,是可以用欄位別名的,因為having語句是在select語句執行之後執行的,所以可以用到欄位別名。
6、當上述語句執行完成後,繼續會執行order by語句,進行排序後執行limit分頁語句,然後返回查詢結果,結束當前sql語句的執行。