版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、SQL Server 2019 數(shù)據(jù)庫(kù)程序設(shè)計(jì)語(yǔ)言數(shù)據(jù)庫(kù)程序設(shè)計(jì)語(yǔ)言第第8章章 數(shù)據(jù)操作數(shù)據(jù)操作8.1 用用SELECT語(yǔ)句查詢記錄語(yǔ)句查詢記錄 1、檢索數(shù)據(jù)、檢索數(shù)據(jù) 2、數(shù)據(jù)分組與匯總、數(shù)據(jù)分組與匯總 3、其它操作、其它操作 1、檢索數(shù)據(jù)、檢索數(shù)據(jù)1.1 運(yùn)用運(yùn)用 SELECT 語(yǔ)句檢索數(shù)據(jù)語(yǔ)句檢索數(shù)據(jù)1.2 過(guò)濾數(shù)據(jù)過(guò)濾數(shù)據(jù)1.3 設(shè)置結(jié)果集格式設(shè)置結(jié)果集格式1.4 需要考慮的性能問(wèn)題需要考慮的性能問(wèn)題1.5 推薦操作推薦操作 1.1 運(yùn)用運(yùn)用 SELECT 語(yǔ)句檢索數(shù)據(jù)語(yǔ)句檢索數(shù)據(jù)1.1.1 運(yùn)用運(yùn)用 SELECT 語(yǔ)句語(yǔ)句1.1.2 指定列指定列1.1.3 運(yùn)用運(yùn)用 WHERE 子句
2、指定行子句指定行SELECT ALL | DISTINCTTOP n FROM ,n WHERE GROUP BY ,n HAVING ORDER BY ,n基本語(yǔ)法基本語(yǔ)法運(yùn)用運(yùn)用 SELECT 語(yǔ)句語(yǔ)句用用 括起來(lái)的是可選項(xiàng),括起來(lái)的是可選項(xiàng),SELECT 是必需的是必需的選擇列表指定了要返回的列選擇列表指定了要返回的列WHERE 子句指定限制查詢的條件子句指定限制查詢的條件 在搜索條件中,可以使用比較操作符、在搜索條件中,可以使用比較操作符、字符串、邏輯操作符來(lái)限制返回的行數(shù)字符串、邏輯操作符來(lái)限制返回的行數(shù)1.1.1 運(yùn)用運(yùn)用 SELECT 語(yǔ)句語(yǔ)句運(yùn)用運(yùn)用 SELECT 語(yǔ)句續(xù))語(yǔ)句
3、續(xù))FROM 子句知道了返回的行和列所屬的表子句知道了返回的行和列所屬的表DISTINCT 選項(xiàng)從結(jié)果集中消除了重復(fù)的行,選項(xiàng)從結(jié)果集中消除了重復(fù)的行,TOP n 選項(xiàng)限定了要返回的行數(shù)選項(xiàng)限定了要返回的行數(shù)GROUP BY 子句是對(duì)結(jié)果集進(jìn)行分組子句是對(duì)結(jié)果集進(jìn)行分組HAVING 子句是在分組的時(shí)候,對(duì)字段或表子句是在分組的時(shí)候,對(duì)字段或表達(dá)式指定搜索條件達(dá)式指定搜索條件ORDER BY 子句對(duì)結(jié)果集按某種條件進(jìn)行排子句對(duì)結(jié)果集按某種條件進(jìn)行排序序 1.1.1 運(yùn)用運(yùn)用 SELECT 語(yǔ)句語(yǔ)句指定列指定列1.1.2 指定列指定列在選擇列表中指定要從表中返回的列在選擇列表中指定要從表中返回的列
4、在選擇列表中可以包含字段名、表達(dá)式、所選關(guān)鍵在選擇列表中可以包含字段名、表達(dá)式、所選關(guān)鍵字或要賦值的局部變量。其語(yǔ)法為字或要賦值的局部變量。其語(yǔ)法為 := *| 表名表名 | 視圖名視圖名 | 表的別名表的別名.* |字段名字段名 | 表達(dá)式表達(dá)式 |$IDENTITY | $ROWGUID AS 字段別名字段別名 | 字段別名字段別名 = 表達(dá)式表達(dá)式 ,.n l指定要檢索的字段時(shí),請(qǐng)注意指定要檢索的字段時(shí),請(qǐng)注意l選擇列表將按照指定順序查找并顯示所查詢的字選擇列表將按照指定順序查找并顯示所查詢的字段段l不同的字段名用不同的字段名用“,”分開(kāi)分開(kāi)l在選擇列表中,避免或盡量少使用符號(hào)在選擇列表
5、中,避免或盡量少使用符號(hào)“ * ”。該符。該符號(hào)代表選擇表中所有的字段號(hào)代表選擇表中所有的字段運(yùn)用運(yùn)用 WHERE 子句指定行子句指定行1.1.3 運(yùn)用運(yùn)用 WHERE 子句指定行子句指定行通過(guò)使用通過(guò)使用 WHERE 子句,可以得到基于搜索條件的行子句,可以得到基于搜索條件的行 := NOT | ( ) AND | ORNOT | ( ) ,.n l列出了可以在列出了可以在 WHERE 子句中包含的表達(dá)式子句中包含的表達(dá)式列表列表l運(yùn)用運(yùn)用 WHERE 子句指定行時(shí),請(qǐng)注意子句指定行時(shí),請(qǐng)注意l在所有數(shù)據(jù)類型為在所有數(shù)據(jù)類型為 char、nchar、varchar、nvarchar、text
6、、datetime和和 smalldatetime 的數(shù)據(jù)周?chē)?,必須的?shù)據(jù)周?chē)?,必須使用單引?hào)(使用單引號(hào)()l在使用在使用 SELECT 語(yǔ)句時(shí),盡量使用語(yǔ)句時(shí),盡量使用 WHERE 語(yǔ)句限語(yǔ)句限制將要返回的行制將要返回的行運(yùn)用運(yùn)用 WHERE 子句指定行續(xù))子句指定行續(xù))5BuchananStevenSales ManagerUSE northwindSELECT employeeid, lastname, firstname, titleFROM employeesWHERE employeeid = 5GO例如例如 1.1.3 運(yùn)用運(yùn)用 WHERE 子句指定行子句指定行 1、檢索數(shù)據(jù)、
7、檢索數(shù)據(jù)1.1 運(yùn)用運(yùn)用 SELECT 語(yǔ)句檢索數(shù)據(jù)語(yǔ)句檢索數(shù)據(jù)1.2 過(guò)濾數(shù)據(jù)過(guò)濾數(shù)據(jù)1.3 設(shè)置結(jié)果集格式設(shè)置結(jié)果集格式1.4 需要考慮的性能問(wèn)題需要考慮的性能問(wèn)題1.5 推薦操作推薦操作 過(guò)濾數(shù)據(jù)過(guò)濾數(shù)據(jù)1.2 過(guò)濾數(shù)據(jù)過(guò)濾數(shù)據(jù)過(guò)濾的類型過(guò)濾的類型搜索條件搜索條件使用比較運(yùn)算符使用比較運(yùn)算符、=、=、使用字符串比較符使用字符串比較符LIKE和和NOT LIKE使用邏輯運(yùn)算符使用邏輯運(yùn)算符AND、OR檢索一定范圍內(nèi)的值檢索一定范圍內(nèi)的值BETWEEN和和NOT BETWEEN使用值列表作為搜索條使用值列表作為搜索條件件IN和和NOT IN檢索未知值檢索未知值IS NULL和和IS NOT
8、NULL使用比較運(yùn)算符使用比較運(yùn)算符1.2.1 使用比較運(yùn)算符使用比較運(yùn)算符使用比較操作符來(lái)比較表中的值與指定的值或表使用比較操作符來(lái)比較表中的值與指定的值或表達(dá)式的值達(dá)式的值USE northwindSELECT lastname, cityFROM employeesWHERE country = USAGO使用字符串比較符使用字符串比較符1.2.2 使用字符串比較符使用字符串比較符l在比較字符串時(shí),可以使用在比較字符串時(shí),可以使用 LIKE 和通配符來(lái)查找和通配符來(lái)查找需要的行需要的行通配符的種類通配符的種類通配符通配符描述描述%0或多個(gè)字符串或多個(gè)字符串_任何任何單單個(gè)的字符個(gè)的字符在
9、指定區(qū)域或集合內(nèi)的任何在指定區(qū)域或集合內(nèi)的任何單單個(gè)字符個(gè)字符不在指定區(qū)域或集合內(nèi)的任何不在指定區(qū)域或集合內(nèi)的任何單單個(gè)字符個(gè)字符使用字符串比較符續(xù))使用字符串比較符續(xù))1.2.2 使用字符串比較符使用字符串比較符表達(dá)式表達(dá)式LIKE %EENLIKE _EENLIKE CKLIKE S-VLIKE 990-90-9LIKE A-Z0-9FMLIKE MCLIKE 5_% ESCAPE LIKE ABA-Z ESCAPE 使用邏輯運(yùn)算符使用邏輯運(yùn)算符1.2.3 使用邏輯運(yùn)算符使用邏輯運(yùn)算符l用邏輯操作符用邏輯操作符 AND、OR 和和 NOT 來(lái)連接一系列的表來(lái)連接一系列的表達(dá)式,及優(yōu)化查詢過(guò)
10、程。使用邏輯運(yùn)算符時(shí),遵達(dá)式,及優(yōu)化查詢過(guò)程。使用邏輯運(yùn)算符時(shí),遵循下列原則循下列原則l運(yùn)用運(yùn)用 AND 返回滿足所有條件的行返回滿足所有條件的行l(wèi)運(yùn)用運(yùn)用 OR 返回滿足任一條件的行返回滿足任一條件的行l(wèi)運(yùn)用運(yùn)用 NOT 返回不滿足條件的行返回不滿足條件的行l(wèi)有多個(gè)表達(dá)式時(shí),使用圓括號(hào)有多個(gè)表達(dá)式時(shí),使用圓括號(hào)l為表達(dá)式分組為表達(dá)式分組l改變表達(dá)式求值順序改變表達(dá)式求值順序l增加表達(dá)式的可讀性增加表達(dá)式的可讀性使用邏輯運(yùn)算符續(xù))使用邏輯運(yùn)算符續(xù))l搜索條件的順序搜索條件的順序lMicrosoft SQL Server 首先求首先求 NOT 表達(dá)式的值,然后表達(dá)式的值,然后是是 AND,最后是
11、,最后是 ORl當(dāng)表達(dá)式中所有的操作符優(yōu)先級(jí)相同時(shí),求值順序當(dāng)表達(dá)式中所有的操作符優(yōu)先級(jí)相同時(shí),求值順序由左到右由左到右1.2.3 使用邏輯運(yùn)算符使用邏輯運(yùn)算符(productname LIKE T% OR productid = 46) AND (unitprice 16.00) (productname LIKE T% )OR (productid = 46 AND unitprice 16.00) 檢索一定范圍內(nèi)的值檢索一定范圍內(nèi)的值運(yùn)用運(yùn)用 BETWEEN 來(lái)查詢?cè)谝欢ǚ秶鷥?nèi)的值,來(lái)查詢?cè)谝欢ǚ秶鷥?nèi)的值,運(yùn)用運(yùn)用 BETWEEN 時(shí),留意時(shí),留意SQL Server 返回的結(jié)果集中,包
12、含范圍內(nèi)的返回的結(jié)果集中,包含范圍內(nèi)的邊緣值邊緣值盡量使用盡量使用 BETWEEN,而不用,而不用 AND 和比較操和比較操作符表示的表達(dá)式(作符表示的表達(dá)式(=x AND x AND y)要返回不在指定區(qū)域的行時(shí),運(yùn)用要返回不在指定區(qū)域的行時(shí),運(yùn)用 NOT BETWEEN1.2.4 檢索一定范圍內(nèi)的值檢索一定范圍內(nèi)的值unitprice BETWEEN 10 AND 20使用值列表作為搜索條件使用值列表作為搜索條件1.2.5 使用值列表作為搜索條件使用值列表作為搜索條件l運(yùn)用運(yùn)用 IN 語(yǔ)句指定一個(gè)值的列表作為查詢條件。運(yùn)語(yǔ)句指定一個(gè)值的列表作為查詢條件。運(yùn)用用 IN 時(shí),留意時(shí),留意l運(yùn)用
13、運(yùn)用 IN 搜索條件和使用由搜索條件和使用由 OR 操作符連起來(lái)的一系操作符連起來(lái)的一系列比較操作符,其效果是等價(jià)的列比較操作符,其效果是等價(jià)的l在搜索條件中不能包含在搜索條件中不能包含 NULL 值,這將返回不可預(yù)值,這將返回不可預(yù)測(cè)的結(jié)果集測(cè)的結(jié)果集l運(yùn)用運(yùn)用 NOT IN 搜索條件來(lái)返回值不在指定列表中的搜索條件來(lái)返回值不在指定列表中的行。運(yùn)用行。運(yùn)用 NOT 會(huì)降低數(shù)據(jù)檢索速度會(huì)降低數(shù)據(jù)檢索速度country IN (Japan, Italy)country= Japan or country= Italy檢索未知值檢索未知值1.2.6 檢索未知值檢索未知值l輸入數(shù)據(jù)時(shí),沒(méi)有指定一個(gè)字
14、段的值,且此字段輸入數(shù)據(jù)時(shí),沒(méi)有指定一個(gè)字段的值,且此字段沒(méi)有定義默認(rèn)值的值,稱此字段含有空值沒(méi)有定義默認(rèn)值的值,稱此字段含有空值NULL)l運(yùn)用運(yùn)用 IS NULL 搜索條件來(lái)查詢某指定列沒(méi)任何信息搜索條件來(lái)查詢某指定列沒(méi)任何信息的行。需要返回含有空值的行時(shí),留意的行。需要返回含有空值的行時(shí),留意l把空值和任何表達(dá)式比較都會(huì)失敗,因?yàn)榭罩挡话芽罩岛腿魏伪磉_(dá)式比較都會(huì)失敗,因?yàn)榭罩挡坏扔谌魏伪磉_(dá)式等于任何表達(dá)式l在在 CREATE TABLE 語(yǔ)句里,定義一個(gè)字段是否允許語(yǔ)句里,定義一個(gè)字段是否允許空值的存在空值的存在l運(yùn)用運(yùn)用 IS NOT NULL 來(lái)查詢指定列中非空的行來(lái)查詢指定列中非空
15、的行Score IS NULL 1、檢索數(shù)據(jù)、檢索數(shù)據(jù)1.1 運(yùn)用運(yùn)用 SELECT 語(yǔ)句檢索數(shù)據(jù)語(yǔ)句檢索數(shù)據(jù)1.2 過(guò)濾數(shù)據(jù)過(guò)濾數(shù)據(jù)1.3 設(shè)置結(jié)果集格式設(shè)置結(jié)果集格式1.4 需要考慮的性能問(wèn)題需要考慮的性能問(wèn)題1.5 推薦操作推薦操作 設(shè)置結(jié)果集格式設(shè)置結(jié)果集格式對(duì)數(shù)據(jù)進(jìn)行排序?qū)?shù)據(jù)進(jìn)行排序消除重復(fù)行消除重復(fù)行改變列名改變列名使用字面值使用字面值FOR子句子句UNION ALL1.3 設(shè)置結(jié)果集格式設(shè)置結(jié)果集格式對(duì)數(shù)據(jù)進(jìn)行排序?qū)?shù)據(jù)進(jìn)行排序1.3.1 對(duì)數(shù)據(jù)進(jìn)行排序?qū)?shù)據(jù)進(jìn)行排序l運(yùn)用運(yùn)用 ORDER BY 子句為結(jié)果集中的行排序時(shí),有升子句為結(jié)果集中的行排序時(shí),有升序和降序兩種。使用序和
16、降序兩種。使用ORDER BY 時(shí),留意時(shí),留意l除非使用除非使用 ORDER BY 指定順序,指定順序,SQL Server 并不主并不主動(dòng)為結(jié)果集中的行排序動(dòng)為結(jié)果集中的行排序lSQL Server 缺省地按升序排列缺省地按升序排列l(wèi)ORDER BY 子句中指定的列并不一定要出現(xiàn)在選擇子句中指定的列并不一定要出現(xiàn)在選擇列表中列表中l(wèi)可以按照字段名、計(jì)算出的值或表達(dá)式進(jìn)行排序可以按照字段名、計(jì)算出的值或表達(dá)式進(jìn)行排序l可以在可以在 ORDER BY 子句中引用某字段在選擇列表中子句中引用某字段在選擇列表中的位置而進(jìn)行排序的位置而進(jìn)行排序lORDER BY 子句不能用于數(shù)據(jù)類型子句不能用于數(shù)據(jù)
17、類型 text 、ntext或或 image 字段字段對(duì)數(shù)據(jù)進(jìn)行排序續(xù))對(duì)數(shù)據(jù)進(jìn)行排序續(xù))USE northwindSELECT productid, productname, categoryid, unitprice FROM products ORDER BY categoryid, unitprice DESCGO38Cote de Blaye1263.500043Ipoh Coffee146.00002Chang119.000063Vegie-spread243.90008Northwoods Cranberry Sauce240.000061Sirop drable228.5000
18、例如例如1.3.1 對(duì)數(shù)據(jù)進(jìn)行排序?qū)?shù)據(jù)進(jìn)行排序消除重復(fù)行消除重復(fù)行1.3.2 消除重復(fù)行消除重復(fù)行l(wèi)用用 DISTINCT 可以消除重復(fù)行,使結(jié)果集列出惟一可以消除重復(fù)行,使結(jié)果集列出惟一的值。運(yùn)用的值。運(yùn)用 DISTINCT 時(shí),留意時(shí),留意l除非指定除非指定 DISTINCT 子句,否則子句,否則 SELECT 語(yǔ)句將返回語(yǔ)句將返回所有滿足搜索條件的行所有滿足搜索條件的行l(wèi)選擇列表中所有列的組合值將決定其惟一性選擇列表中所有列的組合值將決定其惟一性l包含任何惟一組合值的行都將被檢索到并被返回包含任何惟一組合值的行都將被檢索到并被返回到結(jié)果集中到結(jié)果集中l(wèi)除非使用了除非使用了 ORDER
19、BY 子句,否則子句,否則 DISTINCT 子句將子句將按隨機(jī)的順序顯示結(jié)果集中的行按隨機(jī)的順序顯示結(jié)果集中的行消除重復(fù)行續(xù))消除重復(fù)行續(xù))USE northwindSELECT DISTINCT country FROM suppliers ORDER BY countryGOAustraliaBrazilCanadaDenmarkFinlandFranceGermanyItalyJapanNetherlandsNorwaySingaporeSpainSwedenUKUSA例如例如1.3.2 消除重復(fù)行消除重復(fù)行改變列名改變列名1.3.3 改變列名改變列名l為了提高可讀性,可以為選擇列表中
20、的字段名為了提高可讀性,可以為選擇列表中的字段名起別名起別名l改變字段名時(shí),應(yīng)注意改變字段名時(shí),應(yīng)注意l缺省情況下,結(jié)果集所顯示的字段名,就是在缺省情況下,結(jié)果集所顯示的字段名,就是在 CREATE TABLE 語(yǔ)句中指定的字段名語(yǔ)句中指定的字段名l如果字段名中有空格,或字段名不符合如果字段名中有空格,或字段名不符合 SQL Server 命名規(guī)則,用單引號(hào)來(lái)標(biāo)識(shí)這個(gè)字段名命名規(guī)則,用單引號(hào)來(lái)標(biāo)識(shí)這個(gè)字段名l可以為經(jīng)過(guò)計(jì)算的包含函數(shù)、字符符號(hào)的字段可以為經(jīng)過(guò)計(jì)算的包含函數(shù)、字符符號(hào)的字段起別名起別名l字段名中至多可以包含字段名中至多可以包含128個(gè)字符個(gè)字符改變列名續(xù))改變列名續(xù))USE no
21、rthwindSELECT firstname AS First, lastname Last ,Employee ID: =employeeid FROM employeesNancyDavolio1AndrewFuller2JanetLeverling3MargaretPeacock4StevenBuchanan5MichaelSuyama6RobertKing7LauraCallahan8AnneDodsworth91.3.3 改變列名改變列名例如例如使用字面值使用字面值1.3.4 使用字面值使用字面值l使用字面值可以增加結(jié)果集的可讀性,符號(hào)可能使用字面值可以增加結(jié)果集的可讀性,符號(hào)可能
22、是字母、數(shù)字或標(biāo)識(shí),它們被用作特定的值。其是字母、數(shù)字或標(biāo)識(shí),它們被用作特定的值。其語(yǔ)法為語(yǔ)法為SELECT 字段名字段名 |字符串符號(hào)字符串符號(hào) ,字段名,字段名 |字符串符號(hào)字符串符號(hào) FROM 表名表名USE northwindSELECT firstname, lastname ,Identification number:, employeeidFROM employeesGOFORFOR子句子句FOR子句用來(lái)指定子句用來(lái)指定BROWSE或或XML選項(xiàng),主要在應(yīng)用選項(xiàng),主要在應(yīng)用程序的開(kāi)發(fā)中經(jīng)常使用。程序的開(kāi)發(fā)中經(jīng)常使用。FOR子句生成子句生成XML的詳細(xì)的詳細(xì)使用介紹請(qǐng)參考第使用介
23、紹請(qǐng)參考第24章。本節(jié)通過(guò)一個(gè)使用章。本節(jié)通過(guò)一個(gè)使用FOR子子句的示例,簡(jiǎn)單說(shuō)明其一般的功能。句的示例,簡(jiǎn)單說(shuō)明其一般的功能。1.3.5 FOR子句子句USE northwindSELECT country FROM suppliers ORDER BY country for xml autoGO例如例如UNION ALLUNION ALL將兩個(gè)或更多查詢的結(jié)果合并為單個(gè)結(jié)果集,該結(jié)將兩個(gè)或更多查詢的結(jié)果合并為單個(gè)結(jié)果集,該結(jié)果集包含聯(lián)合查詢中的所有查詢的全部行。果集包含聯(lián)合查詢中的所有查詢的全部行。UNION 運(yùn)算不同于使用聯(lián)接合并兩個(gè)表中的列的運(yùn)算。運(yùn)算不同于使用聯(lián)接合并兩個(gè)表中的列的
24、運(yùn)算。 1.3.6 UNION ALLUSE AdventureWorks SELECT ProductModelID, Name FROM Production.ProductModel UNION SELECT ProductModelID, Name FROM dbo.ProductModel2 ORDER BY Name ;運(yùn)用運(yùn)用 UNION 合并兩個(gè)查詢結(jié)果集的基本規(guī)則:合并兩個(gè)查詢結(jié)果集的基本規(guī)則: 所有查詢中的列數(shù)和列的順序必須相同。所有查詢中的列數(shù)和列的順序必須相同。數(shù)據(jù)類型必須兼容。數(shù)據(jù)類型必須兼容。需要考慮的性能問(wèn)題需要考慮的性能問(wèn)題非邏輯操作會(huì)降低查詢速度非邏輯操作會(huì)降
25、低查詢速度 比如:比如:NOT BETWEEN 、NOT IN 和和 IS NOT NULL LIKE 搜索條件會(huì)降低查詢速度搜索條件會(huì)降低查詢速度使用精確查詢或在一定范圍的查詢可能會(huì)提使用精確查詢或在一定范圍的查詢可能會(huì)提高數(shù)據(jù)查詢速度高數(shù)據(jù)查詢速度ORDER BY 子句可能降低數(shù)據(jù)查詢速度子句可能降低數(shù)據(jù)查詢速度 由于由于 SQL Server 在返回第一行前,必須對(duì)在返回第一行前,必須對(duì)結(jié)果集中所有的行進(jìn)行計(jì)算并排序結(jié)果集中所有的行進(jìn)行計(jì)算并排序1.4 需要考慮的性能問(wèn)題需要考慮的性能問(wèn)題推薦操作推薦操作運(yùn)用運(yùn)用 DISTINCT 子句消除結(jié)果集中重復(fù)的行子句消除結(jié)果集中重復(fù)的行通過(guò)改變
26、字段名和使用字面值來(lái)提高結(jié)果集的可讀性通過(guò)改變字段名和使用字面值來(lái)提高結(jié)果集的可讀性提出問(wèn)題提出問(wèn)題我們遇到了下面的問(wèn)題:我們擁有桌子和椅子兩種我們遇到了下面的問(wèn)題:我們擁有桌子和椅子兩種產(chǎn)品,每種產(chǎn)品都有紅色和藍(lán)色兩種顏色。產(chǎn)品,每種產(chǎn)品都有紅色和藍(lán)色兩種顏色。每種顏色的桌子有多少庫(kù)存,每種顏色的椅子有多每種顏色的桌子有多少庫(kù)存,每種顏色的椅子有多少庫(kù)存。少庫(kù)存。椅子有多少庫(kù)存,不論它是什么顏色;桌子有多少椅子有多少庫(kù)存,不論它是什么顏色;桌子有多少庫(kù)存,不論它是什么顏色。庫(kù)存,不論它是什么顏色。紅色的商品一共有多少庫(kù)存,藍(lán)色的商品一共有多紅色的商品一共有多少庫(kù)存,藍(lán)色的商品一共有多少庫(kù)存。
27、少庫(kù)存。這個(gè)時(shí)候大家發(fā)現(xiàn),我們需要的是以不同商品種類這個(gè)時(shí)候大家發(fā)現(xiàn),我們需要的是以不同商品種類和顏色進(jìn)行排列組合的小計(jì)報(bào)表。和顏色進(jìn)行排列組合的小計(jì)報(bào)表。8.2、 數(shù)據(jù)分組與匯總數(shù)據(jù)分組與匯總運(yùn)用運(yùn)用 TOP n 列出前列出前 n 個(gè)記錄個(gè)記錄運(yùn)用運(yùn)用 TABLESAMPLE 限制結(jié)果集限制結(jié)果集使用聚合函數(shù)使用聚合函數(shù)GROUP BY 的基礎(chǔ)知識(shí)的基礎(chǔ)知識(shí)在結(jié)果集中生成匯總值在結(jié)果集中生成匯總值運(yùn)用運(yùn)用 COMPUTE 和和 COMPUTE BY 子句子句推薦操作推薦操作運(yùn)用運(yùn)用 TOP n 列出前列出前 n 個(gè)記錄個(gè)記錄8.2.1 運(yùn)用運(yùn)用 TOP n 列出前列出前 n 個(gè)記錄個(gè)記錄l關(guān)
28、鍵字關(guān)鍵字 TOP n 只列出結(jié)果集中前只列出結(jié)果集中前 n 個(gè)或個(gè)或 前前 n% 的記的記錄。運(yùn)用錄。運(yùn)用 TOP n 或或 TOP n PERCENT 時(shí),應(yīng)注意時(shí),應(yīng)注意l在在 ORDER BY 子句中指定值的范圍子句中指定值的范圍l關(guān)鍵字關(guān)鍵字 TOP 后使用無(wú)符號(hào)的整數(shù)后使用無(wú)符號(hào)的整數(shù)l假設(shè)假設(shè) TOP n PERCENT 生成小數(shù),那么生成小數(shù),那么 SQL Server 將將把這個(gè)數(shù)取整把這個(gè)數(shù)取整l可以在結(jié)果集中用可以在結(jié)果集中用 WITH TIES 子句包含那些值相等子句包含那些值相等的記錄,這時(shí)結(jié)果集中可以包含任意數(shù)目的行的記錄,這時(shí)結(jié)果集中可以包含任意數(shù)目的行部分語(yǔ)法:
29、部分語(yǔ)法:SELECT ALL | DISTINCT SELECT ALL | DISTINCT TOP n PERCENT WITH TIES TOP n PERCENT WITH TIES 要求:要求:1、檢索出、檢索出SC表中的所有成績(jī)表中的所有成績(jī)記錄記錄2、檢索出、檢索出SC表中的前表中的前5條成績(jī)條成績(jī)記錄記錄3、檢索出、檢索出SC表中的前表中的前50%的成的成績(jī)記錄績(jī)記錄4、檢索出、檢索出SC表中的前表中的前8%的成的成績(jī)記錄。注意觀察有幾條記錄績(jī)記錄。注意觀察有幾條記錄?5、檢索出、檢索出SC表中成績(jī)前表中成績(jī)前5名的名的學(xué)生學(xué)號(hào)學(xué)生學(xué)號(hào)1 1、select select *
30、* from sc from sc運(yùn)用運(yùn)用 TOP n 列出前列出前 n 個(gè)記錄個(gè)記錄8.2.1 運(yùn)用運(yùn)用 TOP n 列出前列出前 n 個(gè)記錄個(gè)記錄2 2、select top 5 select top 5 * * from sc from sc3 3、select top 50 percent select top 50 percent * * from sc from sc4 4、select top 8 percent select top 8 percent * * from sc from scselect top 5 with tiesselect top 5 with ties
31、* * from sc from scorder by score descorder by score descselect top 5 select top 5 * * from sc from scorder by score descorder by score desc運(yùn)用運(yùn)用 TOP n 列出前列出前 n 個(gè)記錄個(gè)記錄8.2.1 運(yùn)用運(yùn)用 TOP n 列出前列出前 n 個(gè)記錄個(gè)記錄限制結(jié)果集大小的另一種方法是在執(zhí)行限制結(jié)果集大小的另一種方法是在執(zhí)行一個(gè)語(yǔ)句之前執(zhí)行一個(gè)語(yǔ)句之前執(zhí)行 SET ROWCOUNT n 語(yǔ)語(yǔ)句。句。SET ROWCOUNT 與與 TOP 的不同之的不同之處在
32、于:處在于: TOP 子句適用于指定了該子句的單個(gè)子句適用于指定了該子句的單個(gè) SELECT 語(yǔ)句。在執(zhí)行另一個(gè)語(yǔ)句。在執(zhí)行另一個(gè) SET ROWCOUNT 語(yǔ)句之前,語(yǔ)句之前,SET ROWCOUNT 會(huì)一直有效,例如執(zhí)行會(huì)一直有效,例如執(zhí)行 SET ROWCOUNT 0 將會(huì)關(guān)閉此選項(xiàng)。將會(huì)關(guān)閉此選項(xiàng)。SET ROWCOUNT n運(yùn)用運(yùn)用 TOP n 列出前列出前 n 個(gè)記錄個(gè)記錄運(yùn)用運(yùn)用 TABLESAMPLE 限制結(jié)果集限制結(jié)果集使用聚合函數(shù)使用聚合函數(shù)GROUP BY 的基礎(chǔ)知識(shí)的基礎(chǔ)知識(shí)在結(jié)果集中生成匯總值在結(jié)果集中生成匯總值運(yùn)用運(yùn)用 COMPUTE 和和 COMPUTE BY 子
33、句子句推薦操作推薦操作8.2、 數(shù)據(jù)分組與匯總數(shù)據(jù)分組與匯總運(yùn)用運(yùn)用 TABLESAMPLE 限制結(jié)果集限制結(jié)果集 8.2.2使用使用 TABLESAMPLE 限制結(jié)果集限制結(jié)果集 lTABLESAMPLE 子句將從子句將從 FROM 子句中的表返回的行子句中的表返回的行數(shù)限制到樣本數(shù)或行數(shù)的某一百分比。數(shù)限制到樣本數(shù)或行數(shù)的某一百分比。l不能對(duì)視圖使用不能對(duì)視圖使用 TABLESAMPLE。部分語(yǔ)法:部分語(yǔ)法:TABLESAMPLE SYSTEM (sample_number PERCENT | TABLESAMPLE SYSTEM (sample_number PERCENT | ROWS
34、 ) ROWS ) -執(zhí)行幾次代碼,所得到的結(jié)果是不同的執(zhí)行幾次代碼,所得到的結(jié)果是不同的 USE AdventureWorks ;USE AdventureWorks ; GOGO SELECT count(SELECT count(* *) ) FROM Sales.Customer TABLESAMPLE SYSTEM (10 FROM Sales.Customer TABLESAMPLE SYSTEM (10 PERCENT) ;PERCENT) ;運(yùn)用運(yùn)用 TABLESAMPLE TABLESAMPLE 限制結(jié)果集限制結(jié)果集 運(yùn)用運(yùn)用 TOP n 列出前列出前 n 個(gè)記錄個(gè)記錄運(yùn)用運(yùn)
35、用 TABLESAMPLE 限制結(jié)果集限制結(jié)果集使用聚合函數(shù)使用聚合函數(shù)GROUP BY 的基礎(chǔ)知識(shí)的基礎(chǔ)知識(shí)在結(jié)果集中生成匯總值在結(jié)果集中生成匯總值運(yùn)用運(yùn)用 COMPUTE 和和 COMPUTE BY 子句子句推薦操作推薦操作8.2、 數(shù)據(jù)分組與匯總數(shù)據(jù)分組與匯總使用聚合函數(shù)續(xù))使用聚合函數(shù)續(xù))8.2.3 使用聚合函數(shù)使用聚合函數(shù)l計(jì)算諸如平均值和總和的函數(shù)稱為聚合函數(shù)計(jì)算諸如平均值和總和的函數(shù)稱為聚合函數(shù)lSQL Server 對(duì)整個(gè)表或表里某個(gè)組中的字段進(jìn)行匯對(duì)整個(gè)表或表里某個(gè)組中的字段進(jìn)行匯總、計(jì)算,然后生成單個(gè)的值總、計(jì)算,然后生成單個(gè)的值l可以在可以在 SELECT 語(yǔ)句中單獨(dú)使用
36、聚合函數(shù),也可以語(yǔ)句中單獨(dú)使用聚合函數(shù),也可以與語(yǔ)句與語(yǔ)句 GROUP BY 聯(lián)合使用聯(lián)合使用l除了除了 COUNT函數(shù),如果記錄集中沒(méi)有滿足函數(shù),如果記錄集中沒(méi)有滿足 WHERE 子句的記錄,則所有函數(shù)返回空值,子句的記錄,則所有函數(shù)返回空值, COUNT返回返回 0l字段的數(shù)據(jù)類型決定了可以用在該字段上的聚合字段的數(shù)據(jù)類型決定了可以用在該字段上的聚合函數(shù)類型函數(shù)類型l如:如:SUM 和和 AVG 只能用在數(shù)據(jù)類型代表數(shù)字的字只能用在數(shù)據(jù)類型代表數(shù)字的字段上段上SUM和和AVG。 SUM和和AVG分別用于求表達(dá)式中所有分別用于求表達(dá)式中所有值項(xiàng)的總和與平均值。語(yǔ)法格式:值項(xiàng)的總和與平均值。語(yǔ)
37、法格式: SUM | AVG (ALL | DISTINCT expression) SUM | AVG忽略空值。忽略空值。使用聚合函數(shù)續(xù))使用聚合函數(shù)續(xù))8.2.3 使用聚合函數(shù)使用聚合函數(shù)使用聚合函數(shù)續(xù))使用聚合函數(shù)續(xù))MAX和和MIN。 MAX和和MIN分別用于求表達(dá)式中所有值分別用于求表達(dá)式中所有值項(xiàng)的最大值和最小值。語(yǔ)法格式:項(xiàng)的最大值和最小值。語(yǔ)法格式: MAX | MIN (ALL | DISTINCT expression) 只能用在數(shù)字、字符、和時(shí)間日期數(shù)據(jù)類型。只能用在數(shù)字、字符、和時(shí)間日期數(shù)據(jù)類型。MAX | MIN忽略空值。忽略空值。8.2.3 使用聚合函數(shù)使用聚合函數(shù)
38、COUNT與與COUNT(*)。用于統(tǒng)計(jì)組中滿足條件的行數(shù)或。用于統(tǒng)計(jì)組中滿足條件的行數(shù)或總行數(shù)。語(yǔ)法格式:總行數(shù)。語(yǔ)法格式: COUNT ( ALL | DISTINCT expression | *) 選擇選擇*時(shí)將統(tǒng)計(jì)總行數(shù)。時(shí)將統(tǒng)計(jì)總行數(shù)。COUNT忽略空值,忽略空值, COUNT(*)計(jì)算空值。計(jì)算空值。使用聚合函數(shù)續(xù))使用聚合函數(shù)續(xù))8.2.3 使用聚合函數(shù)使用聚合函數(shù)使用含有空值的聚合函數(shù)使用含有空值的聚合函數(shù)空值能使聚合函數(shù)產(chǎn)生意想不到的結(jié)果空值能使聚合函數(shù)產(chǎn)生意想不到的結(jié)果對(duì)包含空值的字段使用聚合函數(shù)時(shí),應(yīng)注意對(duì)包含空值的字段使用聚合函數(shù)時(shí),應(yīng)注意SQL Server 的聚合
39、函數(shù)的聚合函數(shù)COUNT(*) 除外將忽略字段除外將忽略字段中的空值中的空值COUNT(*)將計(jì)算所有的行,即使每個(gè)字段都含有)將計(jì)算所有的行,即使每個(gè)字段都含有空值空值 使用含有空值的聚合函數(shù)使用含有空值的聚合函數(shù)create table table1(sno char(5),age tinyint)insert into table1 values(95001,null)insert into table1 values(95002,null)insert into table1 values(null,null)insert into table1 values(95003
40、,null)-以下返回的結(jié)果分別是什么以下返回的結(jié)果分別是什么select count(*) from table1select count(sno)from table1select count(age)from table1select avg(age)from table1ISNULL 如果第一個(gè)表達(dá)式為非如果第一個(gè)表達(dá)式為非 NULL,返回第,返回第一個(gè)表達(dá)式,否則返回第二個(gè)表達(dá)式一個(gè)表達(dá)式,否則返回第二個(gè)表達(dá)式ISNULL( )的使用的使用 ISNULL(表達(dá)式表達(dá)式1,表達(dá)式,表達(dá)式2)ISNULL( )的使用的使用 select avg(salary) select avg(sa
41、lary) from avg_testfrom avg_testselect select avg(isnull(salary,0) avg(isnull(salary,0) from avg_testfrom avg_testl常見(jiàn)的聚合函數(shù)及其描述常見(jiàn)的聚合函數(shù)及其描述聚合函數(shù)聚合函數(shù)描述描述AVGAVG返回組中值的平均值??罩祵⒈缓雎浴7祷亟M中值的平均值??罩祵⒈缓雎浴OUNTCOUNT表達(dá)式中值的數(shù)目表達(dá)式中值的數(shù)目COUNT (COUNT (* *) ) 所選擇的行的數(shù)目所選擇的行的數(shù)目MAXMAX返回表達(dá)式的最大值。返回表達(dá)式的最大值。MAX MAX 忽略任何空值。對(duì)于字符列,忽
42、略任何空值。對(duì)于字符列,MAX MAX 查找排序序列查找排序序列的最大值。的最大值。MINMIN返回表達(dá)式的最小值。返回表達(dá)式的最小值。MIN MIN 忽略任何空值。對(duì)于字符列,忽略任何空值。對(duì)于字符列,MIN MIN 查找排序序列查找排序序列的最低值。的最低值。SUMSUM返回表達(dá)式中所有值的和,或只返回返回表達(dá)式中所有值的和,或只返回 DISTINCT DISTINCT 值。值。SUM SUM 只能用于數(shù)字列。只能用于數(shù)字列??罩祵⒈缓雎???罩祵⒈缓雎浴ROUPINGGROUPING是一個(gè)聚合函數(shù)是一個(gè)聚合函數(shù), ,它產(chǎn)生一個(gè)附加的列,當(dāng)用它產(chǎn)生一個(gè)附加的列,當(dāng)用 CUBE CUBE 或
43、或 ROLLUP ROLLUP 運(yùn)算符添加行運(yùn)算符添加行時(shí),附加的列輸出值為時(shí),附加的列輸出值為1 1,當(dāng)所添加的行不是由,當(dāng)所添加的行不是由 CUBE CUBE 或或 ROLLUP ROLLUP 產(chǎn)生時(shí),產(chǎn)生時(shí),附加列值為附加列值為0 0。僅在與包含。僅在與包含 CUBE CUBE 或或 ROLLUP ROLLUP 運(yùn)算符的運(yùn)算符的 GROUP BY GROUP BY 子句相聯(lián)子句相聯(lián)系的選擇列表中才允許分組。系的選擇列表中才允許分組。分組用于區(qū)分由分組用于區(qū)分由 CUBE CUBE 和和 ROLLUP ROLLUP 返回的空值和標(biāo)準(zhǔn)的空值。作為返回的空值和標(biāo)準(zhǔn)的空值。作為CUBE CUBE
44、 或或 ROLLUP ROLLUP 操作結(jié)果返回的操作結(jié)果返回的 NULL NULL 是是 NULL NULL 的特殊應(yīng)用。它在結(jié)果集內(nèi)作為列的特殊應(yīng)用。它在結(jié)果集內(nèi)作為列的占位符,意思是的占位符,意思是 全體全體 。運(yùn)用運(yùn)用 TOP n 列出前列出前 n 個(gè)記錄個(gè)記錄運(yùn)用運(yùn)用 TABLESAMPLE 限制結(jié)果集限制結(jié)果集使用聚合函數(shù)使用聚合函數(shù)GROUP BY 的基礎(chǔ)知識(shí)的基礎(chǔ)知識(shí)在結(jié)果集中生成匯總值在結(jié)果集中生成匯總值運(yùn)用運(yùn)用 COMPUTE 和和 COMPUTE BY 子句子句推薦操作推薦操作8.2、 數(shù)據(jù)分組與匯總數(shù)據(jù)分組與匯總GROUP BY 的基礎(chǔ)知識(shí)的基礎(chǔ)知識(shí)運(yùn)用運(yùn)用 GROUP
45、 BY 子句子句聯(lián)合使用聯(lián)合使用 GROUP BY 子句和子句和 HAVING 子句子句8.2.4 GROUP BY 的基礎(chǔ)知識(shí)的基礎(chǔ)知識(shí)n聯(lián)合使用聚合函數(shù)和聯(lián)合使用聚合函數(shù)和 GROUP BY 子句,能夠把表中子句,能夠把表中的數(shù)據(jù)按字段分組,并對(duì)組中數(shù)據(jù)進(jìn)行匯總。的數(shù)據(jù)按字段分組,并對(duì)組中數(shù)據(jù)進(jìn)行匯總。n語(yǔ)法:語(yǔ)法:n GROUP BY ALLgroup_by_expression,nn WITH CUBE | ROLLUP n group_by_expression 用于分組的表達(dá)式,用于分組的表達(dá)式,WITH指定指定CUBE或或ROLLUP操作符。操作符。GROUP BY 的基礎(chǔ)知識(shí)的
46、基礎(chǔ)知識(shí)8.2.4 GROUP BY 的基礎(chǔ)知識(shí)的基礎(chǔ)知識(shí)USE northwindSELECT productid, orderid ,quantity FROM orderhistGO11523534511512102110222531153230235只對(duì)滿足只對(duì)滿足 WHERE 子句的行分組子句的行分組USE northwindSELECT productid ,SUM(quantity) AS total_quantity FROM orderhist WHERE productid = 2 GROUP BY productidGO例如例如 2USE northwindSELECT
47、productid ,SUM(quantity) AS total_quantity FROM orderhist GROUP BY productidGO例如例如 1GROUP BY 的基礎(chǔ)知識(shí)的基礎(chǔ)知識(shí)8.2.4 GROUP BY 的基礎(chǔ)知識(shí)的基礎(chǔ)知識(shí)l運(yùn)用運(yùn)用 GROUP BY 子句時(shí),應(yīng)注意子句時(shí),應(yīng)注意lSQL Server 將為每一組計(jì)算一個(gè)匯總值,并把匯總值將為每一組計(jì)算一個(gè)匯總值,并把匯總值保存在一個(gè)字段中保存在一個(gè)字段中l(wèi)對(duì)于指定的一組,對(duì)于指定的一組,SQL Server 只生成一條記錄,不返只生成一條記錄,不返回詳細(xì)信息回詳細(xì)信息lSQL Server 只對(duì)滿足只對(duì)滿足
48、WHERE 子句的記錄進(jìn)行分組和子句的記錄進(jìn)行分組和匯總匯總l不要對(duì)可包含空值的字段使用不要對(duì)可包含空值的字段使用 GROUP BY 子句,因子句,因?yàn)榭罩狄矊⒈划?dāng)作一組為空值也將被當(dāng)作一組l聯(lián)合使用關(guān)鍵字聯(lián)合使用關(guān)鍵字 ALL 和和 GROUP BY 子句時(shí),組合字子句時(shí),組合字段中含有空值的行都將被列出,而不管記錄是否滿段中含有空值的行都將被列出,而不管記錄是否滿足足 WHERE 子句的條件子句的條件運(yùn)用運(yùn)用 GROUP BY 子句子句 運(yùn)用運(yùn)用 GROUP BY 子句子句-下面的例子給出了針對(duì)所有下面的例子給出了針對(duì)所有type和和pub_id的唯一組合進(jìn)行的唯一組合進(jìn)行分
49、類并統(tǒng)計(jì)計(jì)算的情況。分類并統(tǒng)計(jì)計(jì)算的情況。use pubsgoselect type,pub_id,avg(price) avg_price,sum(price) sum_pricefrom titleswhere type in (business,trad_cook)group by all type,pub_idorder by typecreate table p1(sno char(3),sex char(8),age int )insert into p1 values (001,m,20)insert into p1 values (null,null,null)insert i
50、nto p1 values (null,null,null)select count(sno) from p1 group by snol不要對(duì)可包含空值的字段使用不要對(duì)可包含空值的字段使用 GROUP BY 子句,因?yàn)榭罩狄矊⒈划?dāng)子句,因?yàn)榭罩狄矊⒈划?dāng)作一組作一組運(yùn)用運(yùn)用 GROUP BY 子句續(xù))子句續(xù))SELECT productid, orderid ,quantity FROM orderhistGOSELECT productid ,SUM(quantity) AS total_quantity FROM orderhist GROUP BY productidGO11523534
51、511511102110222531153230235只對(duì)滿足只對(duì)滿足 WHERE 子句的行分組子句的行分組SELECT productid ,SUM(quantity) AS total_quantity FROM orderhist WHERE productid = 2 GROUP BY productidGO例如例如 1例如例如 運(yùn)用運(yùn)用 GROUP BY 子句子句聯(lián)合使用聯(lián)合使用 GROUP BY 子句和子句和 HAVING 子句子句 聯(lián)合使用聯(lián)合使用 GROUP BY 子句和子句和 HAVING 子句子句l在分組的同時(shí),對(duì)字段或表達(dá)式指定搜索條件在分
52、組的同時(shí),對(duì)字段或表達(dá)式指定搜索條件l運(yùn)用運(yùn)用 HAVING 子句時(shí),應(yīng)注意子句時(shí),應(yīng)注意l只在使用只在使用 GROUP BY 子句的同時(shí),運(yùn)用子句的同時(shí),運(yùn)用 HAVING 子子句來(lái)限制分組句來(lái)限制分組l可以引用任何出現(xiàn)在選擇列表中的字段可以引用任何出現(xiàn)在選擇列表中的字段l不要聯(lián)合使用關(guān)鍵字不要聯(lián)合使用關(guān)鍵字 ALL 和和 HAVING 子句。子句。 由于由于 HAVING 子句會(huì)忽略子句會(huì)忽略 ALL 關(guān)鍵字,并返回只符合關(guān)鍵字,并返回只符合 HAVING 條件的組條件的組聯(lián)合使用聯(lián)合使用 GROUP BY 子句和子句和 HAVING 子句續(xù))子句續(xù))SELECT productid, o
53、rderid ,quantity FROM orderhistGOSELECT productid, SUM(quantity) AS total_quantity FROM orderhist GROUP BY productid HAVING SUM(quantity)=30GO23534511512102110222531153230 聯(lián)合使用聯(lián)合使用 GROUP BY 子句和子句和 HAVING 子句子句WHERE 子句與子句與HAVING子句的區(qū)別:子句的區(qū)別: WHERE子句作用于基本表或視圖,從中選擇滿足子句作用于基本表或視圖,從中選擇滿足條件的記錄;條件的記錄;
54、HAVING子句作用于組,從中選擇滿足條件的組子句作用于組,從中選擇滿足條件的組聯(lián)合使用聯(lián)合使用 GROUP BY 子句和子句和 HAVING 子句續(xù))子句續(xù)) 聯(lián)合使用聯(lián)合使用 GROUP BY 子句和子句和 HAVING 子句子句運(yùn)用運(yùn)用 TOP n 列出前列出前 n 個(gè)記錄個(gè)記錄運(yùn)用運(yùn)用 TABLESAMPLE 限制結(jié)果集限制結(jié)果集使用聚合函數(shù)使用聚合函數(shù)GROUP BY 的基礎(chǔ)知識(shí)的基礎(chǔ)知識(shí)在結(jié)果集中生成匯總值在結(jié)果集中生成匯總值運(yùn)用運(yùn)用 COMPUTE 和和 COMPUTE BY 子句子句推薦操作推薦操作8.2、 數(shù)據(jù)分組與匯總數(shù)據(jù)分組與匯總在結(jié)果集中生成匯總值在結(jié)果集
55、中生成匯總值使用帶有使用帶有 CUBE 運(yùn)算符的運(yùn)算符的 GROUP BY 子句子句使用帶有使用帶有 ROLLUP 運(yùn)算符的運(yùn)算符的 GROUP BY 子句子句運(yùn)用運(yùn)用 GROUPING 函數(shù)函數(shù)8.2.5 在結(jié)果集中生成匯總值在結(jié)果集中生成匯總值使用帶有使用帶有 CUBE 運(yùn)算符的運(yùn)算符的 GROUP BY 子句子句 使用帶有使用帶有 CUBE 運(yùn)算符的運(yùn)算符的 GROUP BY 子句子句l使用帶有使用帶有CUBE運(yùn)算符的運(yùn)算符的GROUP BY子句創(chuàng)建并匯總子句創(chuàng)建并匯總所有可能的基于所有可能的基于GROUP BY子句分組的組合。子句分組的組合。l使用帶有使用帶有CUBE運(yùn)算
56、符的運(yùn)算符的GROUP BY子句用于提供標(biāo)子句用于提供標(biāo)準(zhǔn)的關(guān)系型格式的數(shù)據(jù)。準(zhǔn)的關(guān)系型格式的數(shù)據(jù)。select item,color,sum(quantity)from cpgroup by item,colorwith cubechair、blue的詳細(xì)值的詳細(xì)值chair、red的詳細(xì)值的詳細(xì)值匯總匯總chair的所有記錄的所有記錄table、blue的詳細(xì)值的詳細(xì)值table、red的詳細(xì)值的詳細(xì)值匯總匯總table的所有記錄的所有記錄總計(jì)總計(jì)匯總匯總bule的所有記錄的所有記錄匯總匯總red的所有記錄的所有記錄每種產(chǎn)品的每種顏色的總數(shù)量,每種產(chǎn)品的所有顏色的總數(shù)量,每種產(chǎn)品的每種顏色
57、的總數(shù)量,每種產(chǎn)品的所有顏色的總數(shù)量,每種顏色的所有產(chǎn)品的總數(shù)量,所有產(chǎn)品所有顏色的總數(shù)量。每種顏色的所有產(chǎn)品的總數(shù)量,所有產(chǎn)品所有顏色的總數(shù)量。使用帶有使用帶有 CUBE 運(yùn)算符的運(yùn)算符的 GROUP BY 子句子句 使用帶有使用帶有 CUBE 運(yùn)算符的運(yùn)算符的 GROUP BY 子句子句l運(yùn)用運(yùn)用 GROUP BY子句和子句和 CUBE 操作符時(shí),應(yīng)注意操作符時(shí),應(yīng)注意l如果在如果在 GROUP BY 子句中有子句中有 n 個(gè)字段或表達(dá)式,個(gè)字段或表達(dá)式,SQL Server 將在結(jié)果集中返回將在結(jié)果集中返回 2n 種可能的組合種可能的組合l結(jié)果集中含有結(jié)果集中含有 NULL
58、 的記錄代表該記錄由的記錄代表該記錄由 CUBE 操作操作符生成注意此符生成注意此NULL不是基本表中的實(shí)際空值)不是基本表中的實(shí)際空值)l不能同時(shí)使用關(guān)鍵字不能同時(shí)使用關(guān)鍵字 ALL 和操作符和操作符 CUBE使用帶有使用帶有 ROLLUP 運(yùn)算符的運(yùn)算符的 GROUP BY 子句子句 使用帶有使用帶有 ROLLUP 運(yùn)算符的運(yùn)算符的 GROUP BY 子句子句lROLLUP運(yùn)算符的功能類似于運(yùn)算符的功能類似于CUBE運(yùn)算符。運(yùn)算符。l使用帶有使用帶有ROLLUP運(yùn)算符的運(yùn)算符的GROUP BY子句匯總分組值子句匯總分組值l使用帶有使用帶有ROLLUP運(yùn)算符的運(yùn)算符的GROUP
59、 BY子句用于提供標(biāo)子句用于提供標(biāo)準(zhǔn)的關(guān)系型格式的數(shù)據(jù)。準(zhǔn)的關(guān)系型格式的數(shù)據(jù)。select item,color,sum(quantity)from cpgroup by item,colorwith rollupchair、blue的詳細(xì)值的詳細(xì)值chair、red的詳細(xì)值的詳細(xì)值匯總匯總chair的所有記錄的所有記錄table、blue的詳細(xì)值的詳細(xì)值table、red的詳細(xì)值的詳細(xì)值匯總匯總table的所有記錄的所有記錄總計(jì)總計(jì)每種產(chǎn)品的每種顏色的總數(shù)量,每種產(chǎn)品的所有顏色的總數(shù)量,每種產(chǎn)品的每種顏色的總數(shù)量,每種產(chǎn)品的所有顏色的總數(shù)量,所有產(chǎn)品所有顏色的總數(shù)量。所有產(chǎn)品所有顏色的總數(shù)量
60、。使用帶有使用帶有 ROLLUP 運(yùn)算符的運(yùn)算符的 GROUP BY 子句子句 使用帶有使用帶有 ROLLUP 運(yùn)算符的運(yùn)算符的 GROUP BY 子句子句l運(yùn)用運(yùn)用 GROUP BY 子句和子句和 ROLLUP 操作符時(shí),應(yīng)注意操作符時(shí),應(yīng)注意lSQL Server 將在結(jié)果集中增加一行,這行將顯示總和將在結(jié)果集中增加一行,這行將顯示總和或平均值之類的匯總值,新增的行以或平均值之類的匯總值,新增的行以 NULL 標(biāo)識(shí)標(biāo)識(shí)l不能同時(shí)使用關(guān)鍵字不能同時(shí)使用關(guān)鍵字 ALL 和操作符和操作符 ROLLUP運(yùn)用運(yùn)用 GROUPING 函數(shù)函數(shù) 運(yùn)用運(yùn)用 GROUPING 函
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 機(jī)場(chǎng)9米易折型玻璃鋼接閃桿 玻璃纖維航空易碎桿 場(chǎng)變放電避雷針
- 年產(chǎn)100萬(wàn)件汽車(chē)內(nèi)飾注塑零部件項(xiàng)目可行性研究報(bào)告模板-立項(xiàng)備案
- 護(hù)發(fā)防脫知識(shí)培訓(xùn)課件
- “雙減”政策下小學(xué)數(shù)學(xué)精準(zhǔn)教學(xué)案例分析-以“認(rèn)識(shí)鐘表”教學(xué)為例
- 二零二五年度垃圾處理設(shè)施承攬施工合同范本下載2篇
- 全國(guó)中小學(xué)生wedo機(jī)器人小小編程師-8.《蜘蛛機(jī)器人》說(shuō)課稿
- 山東省臨沂市莒南縣2024-2025學(xué)年八年級(jí)上學(xué)期1月期末生物試題( 含答案)
- 二零二五年度建筑工地勞務(wù)用工與施工現(xiàn)場(chǎng)能源消耗監(jiān)測(cè)合同3篇
- 印刷工藝 課件全套 楊中華 1 印刷概論 -6 印刷設(shè)計(jì)案例賞析
- 海南省??谑心承?024-2025學(xué)年高三上學(xué)期12月月考語(yǔ)文試卷(含答案)
- 樁裂縫計(jì)算(自動(dòng)版)
- 高邊坡施工危險(xiǎn)源辨識(shí)及分析
- 給排水全套資料表格模版
- 萬(wàn)噸鈦白粉項(xiàng)目建議
- 化妝品購(gòu)銷合同范本
- 7725i進(jìn)樣閥說(shuō)明書(shū)
- 銀監(jiān)會(huì)流動(dòng)資金貸款需求量測(cè)算表
- 榴園小學(xué)寒假留守兒童工作總結(jié)(共3頁(yè))
- 初中物理-電功率大題專項(xiàng)
- 時(shí)光科技主軸S系列伺服控制器說(shuō)明書(shū)
- 社會(huì)組織績(jī)效考核管理辦法
評(píng)論
0/150
提交評(píng)論