程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> T-SQL 查詢語句的履行次序解析

T-SQL 查詢語句的履行次序解析

編輯:MSSQL

T-SQL 查詢語句的履行次序解析。本站提示廣大學習愛好者:(T-SQL 查詢語句的履行次序解析)文章只能為提供參考,不一定能成為您想要的結果。以下是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查詢》一書。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved