国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

SQL Server 7.0 入門(三)

2024-08-31 00:48:50
字體:
來源:轉載
供稿:網友
數據排序
       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子句一起定義。連接條件由來自兩個表中的列組成,并使用一個比較條件來對列的值進行比較。通過比較的值包含在結果數據集中,以下是inner join的語法:
語法1:(ansi 92)
select <select_list>
from <table1> inner join <table2>
on <table1>.<column name> = <table2>.<column name>
語法2:
select <select_list>
from <table1>,<table2> where <table1>.<column name> = <table2>.<column name>
在from 子句中可為表定義別名,并在任何地方都可用別名代替真名。
注意:如果作為連接條件的列中有空值,則空值不能和任何值匹配,因此結果中不包含有空值的行。
3、  left outer join
在inner join中,只有在兩個表中匹配的行才能在結果數據集中。但在left outer join中,所有左邊表中的行都出現在結果數據集中,如果左邊表中的某一行在右邊表中沒有匹配的行,則以空值取代右邊表中的值和它連接。
語法如下:(ansi 92)
select <select_list>
from <table1> left outer join <table2>
on <table1>.<column name> = <table2>.<column name>
4、  right outer join
right out join和left outer join相似,不同的是把右邊的表作為外部表(所有右邊表中的行包含在結果數據集中)。
語法如下:
select <select_list>
from <table1> right outer join <table2>
on <table1>.<column name> = <table2>.<column name>
5、  full outer join
在full outer join中,所有兩個表中的行都包含在結果數據集中。
語法如下:
select <select_list>
from <table1> full outer join <table2>
on <table1>.<column name> = <table2>.<column name>

case語句
    當對不同條件產生不同的結果值時,可使用case語句。
    case語句計算所有定義的條件,并按條件是否為真而返回結果。
語法如下:
case [<input_expression>]
when <when_expression> then <result_expression>
[else <else_expression>]
end
input_expression是任何有效的sql server表達式或布爾表達式。
when_expression是任何有效的sql server表達式或布爾表達式。這個表達式和input_expression比較,如果input_expression沒有定義,則when_expression應該是一個布爾表達式。
result_expression是任何有效的sql server表達式。如果when_expression和input_expression的比較返回true(如果定義了input_expression)或when_expression的值為true,則計算表達式,并返回其結果。否則計算else_expression中的表達式,并返回其結果。
例如:
select au_fname,au_lname,
state=case state
              when ‘ca’ then ‘california’
              when ‘ks’ then ‘kansas’
         end
from authors


union

       union語句把兩個或多個查詢的結果組合成一個結果集。
       語法如下:
       select <select_list>
       from <table_list>
       where <join_condition>
       union [all]
       select <table_list>
       from <table_list>
       where <join_condition>
       all關鍵字指定重復的數據也將包含在最終結果數據集中。如果需要,一個查詢中可以有許多union語句。所有select_list應該有相同數目的列,且是相同或兼容的數據類型。

go命令       go命令用來標志一個查詢批處理(query batch)的結束。查詢批處理是tsql語句的集合,這些語句集合在一起執行。go與osql或sql server query analyzer一起使用。
注冊會員,創建你的web開發資料庫,
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 睢宁县| 广南县| 沾益县| 涟源市| 浦东新区| 洪雅县| 兴宁市| 林芝县| 报价| 鄂托克前旗| 油尖旺区| 明水县| 泗洪县| 诸暨市| 新余市| 横山县| 凤冈县| 游戏| 吕梁市| 五常市| 大姚县| 抚宁县| 翁源县| 吕梁市| 鹰潭市| 五莲县| 英德市| 马关县| 黄冈市| 大荔县| 汕头市| 繁峙县| 保定市| 隆子县| 海南省| 龙江县| 安义县| 盐山县| 中阳县| 宣武区| 民乐县|