SQL語句的各個關鍵字的解析過程詳細總結建站知
導讀:1建站知識由于最近需要做一些sql query性能提升的研究,因此研究了一下sql語句的解析過程;本文是我在看了各種資料后手機總結網站seo優化軟件網站建設。
由于最近需要做一些sql query性能提升的研究,因此研究了一下sql語句的解決過程。在園子里看了下,大家寫了很多相關的文章,大家的側重點各有不同。本文是我在看了各種資料后手機總結的,會詳細的,一步一步的講述一個sql語句的各個關鍵字的解析過程,歡迎大家互相學習。
SQL語句的解析順序簡單的說一個sql語句是按照如下的順序解析的:
1. FROM FROM后面的表標識了這條語句要查詢的數據源。和一些子句如,(1-J1)笛卡爾積,(1-J2)ON過濾,(1-J3)添加外部列,所要應用的對象。FROM過程之后會生成一個虛擬表VT1。 (1-J1)笛卡爾積 這個步驟會計算兩個相關聯表的笛卡爾積(CROSS JOIN) ,生成虛擬表VT1-J1。 (1-J2)ON過濾 這個步驟基于虛擬表VT1-J1這一個虛擬表進行過濾,過濾出所有滿足ON 謂詞條件的列,生成虛擬表VT1-J2。 (1-J3)添加外部行 如果使用了外連接,保留表中的不符合ON條件的列也會被加入到VT1-J2中,作為外部行,生成虛擬表VT1-J3。 2. WHERE 對VT1過程中生成的臨時表進行過濾,滿足where子句的列被插入到VT2表中。 3. GROUP BY 這個子句會把VT2中生成的表按照GROUP BY中的列進行分組。生成VT3表。 4. HAVING 這個子句對VT3表中的不同的組進行過濾,滿足HAVING條件的子句被加入到VT4表中。 5. SELECT 這個子句對SELECT子句中的元素進行處理,生成VT5表。 (5-1)計算表達式 計算SELECT 子句中的表達式,生成VT5-1 (5-2)DISTINCT 尋找VT5-1中的重復列,并刪掉,生成VT5-2 (5-3)TOP 從ORDER BY子句定義的結果中,篩選出符合條件的列。生成VT5-3表 ORDER BY 從VT5-3中的表中,根據ORDER BY 子句的條件對結果進行排序,生成VC6表。 客戶,訂單的查詢例子首先創建一個Customers表,插入如下數據:
customerid city
FISSA Madrid
FRNDO Madrid
KRLOS Madrid
MRPHS Zion
創建一個Orders表,插入如下數據:
orderid customerid
1 FRNDO
2 FRNDO
3 KRLOS
4 KRLOS
5 KRLOS
6 MRPHS
7 NULL
假如我們想要查詢來自Madrid的,訂單數小于3的客戶,并把他們的訂單數顯示出來,結果按照訂單數從小到大進行排序。
復制代碼 代碼如下:
SELECT C.customerid, COUNT(O.orderid) AS numorders FROM dbo.Customers AS C LEFT OUTER JOIN dbo.Orders AS O ON C.customerid = O.customerid WHERE C.city = 'Madrid'網站建設公司 GROUP BY C.customerid HAVING COUNT(O.orderid) < 3 ORDER BY numorders
查詢結果為:customerid numorders
聲明: 本文由我的SEOUC技術文章主頁發布于:2023-05-23 ,文章SQL語句的各個關鍵字的解析過程詳細總結建站知主要講述語句,關鍵字,SQL網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_6167.html