日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

SQL查询语句执行的逻辑顺序

發布時間:2023/12/13 综合教程 24 生活家
生活随笔 收集整理的這篇文章主要介紹了 SQL查询语句执行的逻辑顺序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、簡介

  大家都知道SELECT語句是用來查詢數據表中的數據的,構成SELECT語句的還有各種元素(where、from、group by等),不同元素又代表了不同的處理邏輯,那么這些元素在執行查詢時處理的順序是怎么樣的?

本文就說明每個元素在執行查詢時的邏輯順序和作用。

二、邏輯查詢和物理查詢

   邏輯查詢,是一個術語名詞,其意思是SQL查詢在處理的原理和概念,理解SQL語句背后的查詢邏輯是為了讓我們把查詢知識更好的融會貫通。在分析邏輯查詢的原理時,往往表面上會看似效率低下。

但是真正在執行的時候,數據庫服務器引擎實行物理查詢,數據庫服務器引擎不會按部就班的按照邏輯查詢的方式和步驟去執行,它會在遵守“邏輯查詢”的規范和要求的前提下,實行優化方案。

三、執行順序

對于大多數編程語言,代碼的執行是按照編寫時的順序處理的,在SQL中有所不同。就select來說,雖然它出現在語句的首部,但是它實際上并不是第一個處理的元素。

通過示例代碼更好的描述select查詢的邏輯。

select  empid,YEAR(orderdate) as orderyear,COUNT(*) as numorder
from Sales.Orders 
where custid=71
group by empid,YEAR(orderdate)
having COUNT(*) >1
order by empid,orderyear

SQL語句解讀:

此查詢要查出客戶ID為71其下的訂單,按照員工ID和訂單年份進行分組,并且對分組后的數據進行篩選,篩選訂單數量大于1的。

查詢顯示的字段信息有:員工ID、訂單年份和訂單數量,并按照員工ID和訂單年份進行了排序。

查詢語句的執行順序:

FROM
WHERE
GROUP BY
HAVING
SELECT
ORDER BY

按照執行邏輯我們可以對比下示例中的語法,可以得出一個結論,SQL語句的邏輯執行順序不是按照我們編寫的語法格式順序去執行的。

將語法按照邏輯執行順序編寫,分析每個元素子句執行的功能:

四、SQL語句的元素不按照編寫的順序執行

  SQL設計師想把編寫SQL語句的構思,就好像我們說一段話一樣,讓我們更好的編寫查詢語句。試想,一個人對另一個人下達一個指令,通常是這樣描述:“給我廚房里左上方抽屜中的車鑰匙”。

我們按照這樣的方式去編寫SQL語句就變道很直觀。但如果你對機器或者計算機程序去表達指令,你就不得不以操作的角度去表達你的指令,指令會像這樣描述:“去廚房,打開左上方的抽屜,拿車鑰匙,帶給我”。

所以我們編寫SQL語句時,就可以像人與人之間表達指令一樣,就像查詢語句先從SELECT開始(你需要什么),而邏輯查詢就像機器執行指令的概念一樣(先去找到執行地點,所以它首先處理FROM)。

總結

以上是生活随笔為你收集整理的SQL查询语句执行的逻辑顺序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。