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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

T-SQL查询-逻辑查询处理

發布時間:2025/3/15 数据库 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 T-SQL查询-逻辑查询处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  查詢語句大家用的很多,但是知道語句執行的順序和各各階段的作用的人卻很少。這里給大家簡單介紹一下。

(5)SELECT (5-2) DISTINCT(5-3)TOP(<top_specification>)(5-1) <select_list>

(1)FROM (1-J) <left_table> <join_type> JOIN <right_table> on <on_predicate>

(2)WHERE <where_predicate>

(3)GROUP BY <group_by_specification>

(4)HAVING <having_predicate>

(6)ORDER BY <order_by_list>;

  每一步都會生成一個虛擬表,該虛擬表會作為下一步的輸入。這些虛擬表對于調用者是不可用的,只有最后一步生成的虛擬表才會返回給調用者。如果在查詢中沒有指定某一個子句,則會跳過相應的步驟。接下來就簡單地描述一下這些不同的邏輯步驟。

(1)FROM FROM階段標識出查詢的來源表,處理表運算符,每個表運算符也會應用一系列子階段。例如,在聯接運算中涉及的階段是(1-J1)笛卡爾積、(1-J2)ON篩選器和(1-J3)添加外部行。FROM階段生成虛擬表VT1。

(1-J1)笛卡爾積 這個階段對表運算符涉及的兩個表執行笛卡爾積(交叉聯接),生成虛擬表VT1-J1。

(1-J2)ON篩選器?這個階段對VT1-J1中的行根據ON子句中出現的謂語進行篩選。只有讓該謂語取值為TRUE的行,才能插入VT1-J2中。

(1-J3)添加外部行?如果指定了OUTER JOIN(相對于CROSS JOIN 或 INNER JOIN),則將保留表(preserved table)中沒有找到匹配的行,作為外部行添加到VT1-J2中,生成VT1-J3。

(2)WHERE?這個階段根據在WHERE子句中出現的謂語(<where_predicate>)對于VT1中的行進行篩選。只有讓謂語計算結果為TRUE的行,才會插入VT2中。

(3)GROUP BY?按照GROUP BY子句中指定的列名列表,將VT2中的行進行分組,生成VT3。

(4)HAVING 根據HAVING子句中出現的謂語(<having_predicate>)對VT3中的分組進行篩選。只有讓謂語計算結果為TRUE的組,才會插入到VT4。

(5)SELECT?處理SELECT子句中的元素,生成VT5。

(5-1)計算表達式?計算SELECT列表中的表達式,生成VT5-1。

(5-2)DISTINCT 刪除VT5-1中的重復行,生成VT5-2。

(5-3)TOP 根據ORDER BYi子句定義的邏輯排序,從VT5-2中選擇前面指定數量或百分比的行,生成表VT5-3。

(6)ORDER BY 根據ORDER BY子句中指定的列名列表,對VT5-3中的行進行排序,生成游標VC6。

以上就是一個完整的T-SQL語句的執行過程,希望能給大家幫助。

以上內容摘自《Microsoft SQL Server 2008技術內幕 T-SQL查詢》一書。

轉載于:https://www.cnblogs.com/strugglepcx/archive/2011/06/14/2080395.html

總結

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

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