Microsoft SqlServer2008技術內幕:T-Sql語言基礎-讀書筆記-單表查詢SELECT語句元素

一、select語句邏輯處理順序:數據庫

FORM架構

WHERE函數

GROUP BY性能

HAVING對象

SELECT排序

  OVER索引

  DISTINCT效率

  TOPselect

ORDER BY總結

總結:

二、FORM子句的表名稱應該帶上數據庫架構名稱,好比:MIS.UserInfo,提升性能。查詢語句中標識符很是規,用'"來分隔,好比:"MIS"."UserInfo"

三、WHERE子句有索引的列查詢效率高,返回結果是邏輯表達式爲True的行,False和UNKNOWN的行不返回。

四、GROUP BY以後,邏輯處理對象爲組,每一組爲一行,GROUP BY的元素惟一出現一次。select顯示的列只能包括GROUP BY出現的列,其餘列只能做爲聚合函數(COUNT,MAX,MIN,SUM,AVG)的輸入。

五、COUNT(*),COUNT(列名)不相同,COUNT(*)包括NULL,聚合函數括弧內能夠用DISTINCT

六、SELECT子句中表達式定義別名:表達式 AS 別名,表達式= 別名,表達式 別名。若是select的列沒有用","分開,則認爲後面是一個別名。別名不能在邏輯處理比select靠前的語句中和select子句中。

七、帶ORDER BY的查詢返回一個遊標的結果。

八、當SELECT子句中指定了DISTINCT,ORDER BY子句只能選取SELECT列表中出現的元素

九、WITH TIES 返回與TOP n行中最後一行的排序值相同的其餘行

十、OVER子句只能在SELECT和ORDER BY中使用,可以返回基本列的同時,在同一行對基本列進行聚合。

十一、OVER子句支持四種排名函數:ROW_NUMBER(行號),RANK(以前有多少),DENSE_RANK(前面有多少),NTILE(接受一個組數,對結果集分組,爲每個行代表組號)。SELECT列表中不能同時出現ROW_NUMBER和DISTINCT。

十二、OVER括弧內能夠用PARTITION BY(相似於GROUP BY),ORDER BY。

相關文章
相關標籤/搜索