程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server 入門(三)

SQL Server 入門(三)

編輯:關於SqlServer
數據排序
ORDER BY子句按指定的順序對數據排序(ordering data)。它要求一個列名字列表或非負整數列表來指定列的位置。分別用ASC代表升序,DESC代表降序,默認為ASC。

限制返回行的數目
不使用WHERE子句而限制結果中的行數是可能的。“TOP”子句能按指定數目或百分值來限制行數。

數據分組和計算聚合函數
聚合(aggregate)函數計算表中數據的總和。SQL Server提供以下的聚合函數:
· AVG 這個函數計算平均值。語法如下:
AVG ([ALL | DISTINCT] expression)
關鍵字DISTINCT只用來計算不同值的平均值,如果有許多重復值,這些值只計算一次,默認為ALL。
Expression可以是涉及一列或多列的算術表達式。
· MIN 這個函數查找所提供表達式中的最小值。語法如下:
MIN (expression)
· MAX 此函數的功能是在提供的表達式中查找最大值。語法如下:
MAX (expression)
注意: 如果地字符串類型使用MIN和MAX,則輸出依賴於為SQL Server定義的順序。MIN和MAX不能在位上使用。
· SUM SUM計算所有數據值的和。語法如下:
SUM ([ALL | DISTINCT] expression)
注意:SUM和AVG只能用於數值數據類型。
· COUNT 計算表達式值的數目。語法如下:
COUNT ([ALL | DISTINCT] expression)
COUNT有另一種用法,它可以返回被選擇的行數。
如:SELECT NumRows = COUNT (*) FROM titles
聚合函數忽略所有空值,但COUNT(*)除外。盡管所有聚合函數的計算基於無空值的情況,然而COUNT(*)計算所有的行(包括有空值的行)。

1. GROUP BY子句
GROUP BY子句在被定義的數據的基礎上建立比較小的組,並且對每一個組進行聚合函數計算。換句話說,它產生每一組的總體信息。GROUP BY可以把多於一列當成組合列(Grouping Columns)。它總結組合列中不重復值的信息。
使用了GROUP BY子句的選擇列表中只能包含以下項:
· 常量值。
· 組合列。
· 表達式。每個表達式為每組返回一個值(如聚合函數)。如果一列除了在組合列中外,還在選擇列表中,則它有多個值給組合列的每一個不重復值,這種結構類型是不允許的。
2. GROUP BY和HAVING
HAVING子句用來向使用GROUP BY子句的查詢中增加數據過濾准則。HAVING的用法和SELECT中的WHERE子句一樣。在一個包含GROUP BY子句的查詢中使用WHERE子句是可以的。HAVING和WHERE有相同的語法。HAVING和WHERE的不同這處是:
· 在WHERE子句中,在分組進行以前,去除不滿足條件的行,在HAVING子句中,在分組之後條件被應用。
· HAVING可在條件中包含聚合函數,但WHERE不能。
注意:GROUP BY和HAVING子句不能使用文本或圖像數據類型。
3. COMPUTE BY子句
COMPUTE BY子句可以得到詳細或總的記錄。它把數據分成較小的組,然後為每組建立詳細記錄結果數據集(象SELECT),它也可為每組產生總的記錄(象GROUP BY)。
在COMPUT BY中,定義BY子句不是必要的。如果沒有定義BY子句,則認為整個表為一個組,並且只有兩個結果數據集產生,一個擁有所有詳細記錄,另一個只有一行,它擁有總記錄。
注意:當在COMPUTE中使用BY時,則要求在所有組合列中包含ORDER BY。

Cube和Rollup操作
CUBE和ROLLUP操作可比簡單的GROUP BY產生更多的聚合值。在產生交叉標簽報告(cross tab reports)時,這些操作非常有用。如果查詢使用n個組合列,則有2n個計算聚合的組合。

從多個表中訪問數據
我們已討論了如何訪問單個表中的數據。從多個表中訪問數據也是可能的。從多個表中訪問數據稱為連接表(joining a table)。
1、 CROSS JOIN(笛卡爾積)
CROSS JOIN是簡單地、不加任何約束條件地把表組合。CROSS JOIN後結果的行數是連接前兩個表行數的乘積。如果對兩個分別有好幾千行的表進行連接,則結果是不可想象的。
2、 INNER JOIN
INNER JOIN是組合兩個表最常用的方法。INNER JOIN是基於一個判別式進行的,這個判別式稱為連接條件。連接條件和WHERE子句一起定義。連接條件由來自兩個表中的列組成,並使用一個比較條件來對列的值進行比較。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved