MySQL之一條sql語句是如何執行的

2021-10-01 20:28:38 字數 555 閱讀 7117

大體來說,mysql可以分為server層和儲存引擎層兩部分:

server層包括聯結器、查詢快取、分析器、優化器和執行器等,涵蓋mysql的大多數核心服務功能,以及所有的內建函式(如日期、時間、數學和加密函式等),所有跨儲存引擎的功能都在這一層實現,比如儲存過程、觸發器和檢視等。

儲存引擎層負責資料的儲存和提取。其架構模式是外掛程式式的,支援innodb、myisam、memory等多個儲存引擎,現在最常用的是innodb。

聯結器:

查詢快取:

分析器:

優化器:

執行器:

question

如果表t中沒有欄位k,而你執行了這個語句select * from t where k=1,那肯定是會報「不存在這個列」的錯誤: "unknown column 『k』 in 『where clause』」。你覺得這個錯誤是在上面提到的哪個階段報出來的呢?

注:極客時間mysql實戰45講筆記

一條SQL語句是怎麼執行的?

大體來說,mysql 可以分為 server 層和儲存引擎層兩部分。server 層 包括聯結器 查詢快取 分析器 優化器 執行器 儲存引擎層 負責資料的儲存和提取。其架構模式是外掛程式式的,支援 innodb myisam memory 等多個儲存引擎。不同的儲存引擎共用乙個server 層。聯結...

一條SQL語句研究

現有 select from t where a in 5,3,2,1,8,9,30.假設 a 是主鍵,in裡面的引數是唯一的。現要求輸出的結果集按照 in 提供的引數順序排序。而不是按照a本身的排序規則排序?另 如果不要求使用臨時表或表變數,那麼又有什麼辦法實現。臨時表方案參卡 create ta...

sql語句ding 求一條sql語句

我理解你的問題是每乙個使用者id在乙個部門中所有的許可權,你給的資料好像不詳細,我新增了一些資料,你看看滿足需求不。sql with authority as 2 select 3029 kuid,205 krid,21 kdid from dual union all 3 select 3029 ...