數(shù)據(jù)操縱語句大全_第1頁
數(shù)據(jù)操縱語句大全_第2頁
數(shù)據(jù)操縱語句大全_第3頁
數(shù)據(jù)操縱語句大全_第4頁
數(shù)據(jù)操縱語句大全_第5頁
已閱讀5頁,還剩86頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第四章數(shù)據(jù)操縱語句4.1在SQLServerManagementStudio中查看記錄

4.2INSERT語句4.3UPDATE語句4.4DELETE語句4.5簡單查詢4.6數(shù)據(jù)統(tǒng)計查詢

第一頁,共九十一頁。14.1在SQLServerManagementStudio中查看記錄4.1.1打開表4.1.2快速定位記錄4.1.3返回前幾條記錄第二頁,共九十一頁。24.1.1打開表例:在SQLserverManagementStudio中打開“Northwind”數(shù)據(jù)庫中的“products”表。1.啟動【SQLserverManagementStudio】,在【對象資源管理器】中展開樹形目錄,定位到【products】表。2.右擊【products】表,在彈出的快捷菜單中選擇【打開表】選項。3.此時已經(jīng)將【products】表打開了,右邊對話框顯示的是【products】表里的記錄內容,該表格對話框名為【結果窗格】。第三頁,共九十一頁。34.1.2快速定位記錄在【結果窗格】的最下方,可以快速定位到上一條、下一條記錄,也可以直接跳到第一條、最后一條記錄。如果要想跳到某一條記錄的話,在文本框內輸入數(shù)字,再按回車鍵。

第四頁,共九十一頁。44.1.3返回前幾條記錄1.在打開表之后,調出【屬性】對話框。調出方法為:單擊菜單欄中的【視圖】|【屬性窗口】選項。在【屬性】對話框里,展開【TOP規(guī)范】選項,在【(最前面)】下拉列表框里選擇【是】選項,在【percent】下拉列表框里選擇【否】選項,在【表達式】文本框里輸入數(shù)字“10”。2.選擇【結果窗格】,然后再單擊【運行SQL】按鈕。在【結果窗格】里只顯示前十條記錄。第五頁,共九十一頁。5第四章數(shù)據(jù)操縱語句4.1在SQLServerManagementStudio中查看記錄

4.2INSERT語句

4.3UPDATE語句4.4DELETE語句4.5簡單查詢4.6數(shù)據(jù)統(tǒng)計查詢

第六頁,共九十一頁。64.2INSERT語句4.2.1在SSMS中插入記錄4.2.2用INSERT語句記錄第七頁,共九十一頁。74.2.1在SSMS中插入記錄注意事項:1.標識列、計算列的字段不能輸入字段內容。2.不能為NULL值的字段必須輸入字段內容。3.輸入字段內容的數(shù)據(jù)類型要和字段定義的數(shù)據(jù)類型一致。4.如果字段上有約束,一定要符合約束要求。5.如果要讓字段輸入默認值,則不用在字段內輸入任何數(shù)據(jù),在保存記錄時,SQLserver會自動填入默認值,但前提是該字段設置有默認值。

第八頁,共九十一頁。84.2.2用INSERT語句記錄語法格式如下:INSERT[INTO]

table_name

{[(column_list)]{VALUES({expression}[,...n])}}第九頁,共九十一頁。94.2.2用INSERT語句記錄語法注釋:

[INTO]:一個可選的關鍵字,可以將它用在INSERT和目標表之間。table_name:將要接收數(shù)據(jù)的表或table變量的名稱。

(column_list):要在其中插入數(shù)據(jù)的一列或多列的列表。必須用圓括號將column_list括起來,并且用逗號進行分隔。VALUES:引入要插入的數(shù)據(jù)值的列表。對于column_list(如果已指定)中或者表中的每個列,都必須有一個數(shù)據(jù)值。必須用圓括號將值列表括起來。如果VALUES列表中的值與表中列的順序不相同,或者未包含表中所有列的值,那么必須使用column_list明確地指定存儲每個傳入值的列。第十頁,共九十一頁。104.2.2用INSERT語句記錄1.最簡單的INSERT語句

[示范案例1]

在“Northwind”數(shù)據(jù)庫的“OrderDetails”表里插入一條記錄,其中“OrderID”字段的值為10248;“ProductID”字段的值為1;“UnitPrice”字段的值為10;“Quantity”字段的值為2;“Discount”字段的值為0.8。程序清單如下:INSERT[orderdetails](orderid,productid,unitprice,quantity,discount)VALUES(10248,1,10,2,0.8)第十一頁,共九十一頁。114.2.2用INSERT語句記錄2.省略清單的INSERT語句[示范案例2]

在上例中省略字段清單,程序清單如下:INSERT[orderdetails]VALUES(10249,2,10,2,0.9)第十二頁,共九十一頁。124.2.2用INSERT語句記錄3.標識列、允許為空字段的處理[示范案例3]

在“Northwind”數(shù)據(jù)庫的“Categories”表里插入一條記錄,其中“CategoryName”字段的值為“圖書”;“Description”字段的值為“所有類型的圖書”。程序清單如下:INSERTINTOcategories(categoryname,description)VALUES('圖書','所有類型的圖書')第十三頁,共九十一頁。134.2.2用INSERT語句記錄4.有默認值字段的處理[示范案例4]

在“學生”數(shù)據(jù)庫中創(chuàng)建“教師”表(性別為有默認值列)

。在該表中錄入數(shù)據(jù)。程序清單如下:INSERTINTOteachers(teach_id,teach_name,tsex,tdegree)VALUES('rj001','李波',DEFAULT,'本科')第十四頁,共九十一頁。144.2.2用INSERT語句記錄5.省略VALUES清單的INSERT語句

在T-SQL中,有一種簡單的插入多行的方法。這種方法是使用SELECT語句查詢出的結果代替VALUES子句。這種方法的語法結構如下:

INSERT[INTO]table_name(column_name1[,column_name2,…column_namen])

SELECTcolumn_name[,…n]

FROMtable_name

WHEREsearch_conditions第十五頁,共九十一頁。154.2.2用INSERT語句記錄[示范案例5]在“Northwind”數(shù)據(jù)庫中,從“Employees”表里查出“EmployeeID”、“LastName”、“FirstName”、“PostalCode”、“City”、“Address”、“HomePhone”7個字段,組成一個“雇員通信錄”表。第十六頁,共九十一頁。164.2.2用INSERT語句記錄程序清單如下:CREATETABLE雇員通信錄(雇員IDintprimarykey,姓氏nvarchar(20)notnull,名字nvarchar(10)notnull,郵政編碼nvarchar(10)null,城市nvarchar(15)null,地址nvarchar(60)null,家庭電話nvarchar(24)null)GOINSERTINTO雇員通信錄SELECTemployeeid,lastname,firstname,postalcode,city,address,homephoneFROMemployeesGO第十七頁,共九十一頁。17第四章數(shù)據(jù)操縱語句4.1在SQLServerManagementStudio中查看記錄

4.2INSERT語句4.3UPDATE語句

4.4DELETE語句4.5簡單查詢4.6數(shù)據(jù)統(tǒng)計查詢

第十八頁,共九十一頁。184.3UPDATE語句4.3.1在SSMS中更新記錄4.3.2用UPDATE語句更新記錄第十九頁,共九十一頁。194.3.1在SSMS中更新記錄注意事項:1.在修改char和nchar這類長度固定的字段時,要注意其后的空格。2.在可以為空值NULL的字段中,如果要設為NULL,可以按Ctrl+0鍵。3.如果將記錄字段內容修改過后,又想回到修改前的值,可用將光標聚焦到該字段,然后按Esc鍵。4.如果想放棄整條記錄的修改,可以連按兩次Esc鍵。第二十頁,共九十一頁。204.3.2用UPDATE語句更新記錄語法格式如下:

UPDATEtable_name

SET{column_name={expression|DEFAULT|NULL}}[,...n][FROM{<table_source>}[,...n]][WHERE<search_condition>]<table_source>::=table_name[[AS]table_alias][WITH(<table_hint>[,...n])]第二十一頁,共九十一頁。214.3.2用UPDATE語句更新記錄語法注釋:table_name:需要更新的表的名稱。SET:指定要更新的列或變量名稱的列表。column_name:含有要更改數(shù)據(jù)的列的名稱。{expression|DEFAULT|NULL}:列值表達式。

<table_source>:修改數(shù)據(jù)來源表。

第二十二頁,共九十一頁。224.3.2用UPDATE語句更新記錄[示范案例6]使用T-SQL語句,將“Northwind”數(shù)據(jù)庫“Employees”表中“EmployeeID”字段值為1的記錄的“LastName”字段值修改為“bb”。程序清單如下:

UPDATEemployeesSETlastname='bb'WHEREemployeeid=1第二十三頁,共九十一頁。234.3.2用UPDATE語句更新記錄[示范案例7]用計算值來更新記錄,修改“Northwind”數(shù)據(jù)庫“Products”表中“ProductID”字段值為1的記錄的“UnitPrice”字段的值,使其值在當前的基礎上減少5。程序清單如下:

UPDATEproductsSETunitprice=unitprice-5WHEREproductid=1第二十四頁,共九十一頁。24第四章數(shù)據(jù)操縱語句4.1在SQLServerManagementStudio中查看記錄

4.2INSERT語句4.3UPDATE語句4.4DELETE語句

4.5簡單查詢4.6數(shù)據(jù)統(tǒng)計查詢

第二十五頁,共九十一頁。254.4DELETE語句4.4.1在SSMS中刪除記錄4.4.2用DELETE語句刪除記錄4.4.3用Truncatetable語句刪除記錄

第二十六頁,共九十一頁。264.4.1在SSMS中刪除記錄注意事項:1.記錄刪除之后不能再撤消刪除。2.一次可以刪除多條記錄。3.在選擇記錄后,按Delete鍵也可以進行刪除操作。4.如果要刪除的記錄是其他表的外鍵字段,刪除操作可能會影響外鍵表。第二十七頁,共九十一頁。274.4.2用DELETE語句刪除記錄語法格式如下:DELETEtable_name[FROM{<table_source>}[,...n]][WHERE{<search_condition>}]<table_source>::=table_name[[AS]table_alias][,...n])]

第二十八頁,共九十一頁。284.4.2用DELETE語句刪除記錄

語法注釋:table_name:是要從其中刪除行的表的名稱。FROM<table_source>:指定附加的FROM子句。table_name[[AS]table_alias]:是為刪除操作提供標準的表名。WHERE:指定用于限制刪除行數(shù)的條件。如果沒有提供WHERE子句,則DELETE刪除表中的所有行。<search_condition>:指定刪除行的限定條件。對搜索條件中可以包含的謂詞數(shù)量沒有限制。

第二十九頁,共九十一頁。294.4.2用DELETE語句刪除記錄[示范案例8]將“Northwind”數(shù)據(jù)庫“OrderDetails”表中“OrderID”字段值為10251的記錄刪除。程序清單如下:

DELETE[orderdetails]WHEREorderid=10251第三十頁,共九十一頁。304.4.2用DELETE語句刪除記錄[示范案例9]在“Northwind”數(shù)據(jù)庫中刪除雇員“Nancy”的所有訂單。在該例中刪除的數(shù)據(jù)引用的是雇員表中的數(shù)據(jù)。程序清單如下:

select*fromorderswhereemployeeid=1

DELETEordersFROMemployeesWHEREemployees.employeeid=orders.employeeidANDemployees.firstname='Nancy'第三十一頁,共九十一頁。314.4.3用TRUNCATETABLE語句刪除記錄基本語法格式:TRUNCATETABLEtable_name功能:刪除表中的所有記錄語法注釋:TRUNCATETABLE:為關鍵字

table_name:為要刪除所用記錄的表名。第三十二頁,共九十一頁。324.4.3用TRUNCATETABLE語句刪除記錄TRUNCATE與DELETE比較:比DELETE快,不記錄日志的操作,它將釋放表的數(shù)據(jù)和索引所占據(jù)的所有空間及所有為全部索引分配的頁,刪除的數(shù)據(jù)是不可恢復的。第三十三頁,共九十一頁。334.4.3用TRUNCATETABLE語句刪除記錄[示范案例10]刪除學生信息管理數(shù)據(jù)庫student中教師表teachers中的所有記錄

。程序清單如下:DELETEteachers或TRUNCATETABLEteachers第三十四頁,共九十一頁。34第四章數(shù)據(jù)操縱語句4.1在SQLServerManagementStudio中查看記錄

4.2INSERT語句4.3UPDATE語句4.4DELETE語句4.5簡單查詢4.6數(shù)據(jù)統(tǒng)計查詢

第三十五頁,共九十一頁。354.5簡單查詢

4.5.1選擇表中的若干列

4.5.2選擇表中的若干記錄

4.5.3對查詢的結果排序

第三十六頁,共九十一頁。364.5簡單查詢基本語法格式:SELECT[DISTINCT|TOPn[PERCENT][WITHTIES]]select_list

FROMtable_list[WHEREsearch_conditions]

[ORDERBYorder_list[ASC|DESC]]

第三十七頁,共九十一頁。374.5簡單查詢注釋說明:SELECT子句用于指定所選擇的要查詢的特定表中的列,它可以是星號(*)、表達式、列表、變量等。FROM子句用于指定要查詢的表或者視圖,最多可以指定16個表或者視圖,用逗號相互隔開。WHERE子句用來限定查詢的范圍和條件。ORDERBY用于指定排序方式。DISTINCT用于消除結果集中的重復值。TOPn[PERCENT]用于顯示前n條或n%條的記錄信息.WITHTIES用于在結果集中包含附加記錄,在使用ORDER

BY子句時,當出現(xiàn)兩個或多個記錄和最后一條記錄的值相等時,這些附加記錄也將出現(xiàn)在結果集中。第三十八頁,共九十一頁。384.5.1選擇表中的若干列1.查詢表中的所有列[示范案例11]

查詢“Northwind”數(shù)據(jù)庫中Categories表中的所有記錄

。程序清單如下:USEnorthwindGOSELECT*FROMcategoriesGO

第三十九頁,共九十一頁。394.5.1選擇表中的若干列2.查詢表中部分列

[示范案例12]查詢“Northwind”數(shù)據(jù)庫中“Categories”表中的“categoryname”和“description”字段

。程序清單如下:

USEnorthwindGOSELECTcategoryname,DescriptionFROMcategoriesGO第四十頁,共九十一頁。404.5.1選擇表中的若干列3.為結果集內的列指定別名格式:表達式AS別名由于計算列不是數(shù)據(jù)表中的列,所以用到了“AS”關鍵字來指定列的別名。即使要查詢的列是數(shù)據(jù)表中真實存在的列,也可以用“AS”來指定別名。關鍵字AS可以省略。第四十一頁,共九十一頁。414.5.1選擇表中的若干列[示范案例13]查詢“Northwind”數(shù)據(jù)庫中“OrderDetails”表中每個訂單的總價

。程序清單如下:USEnorthwindGOSELECTorderid,productid,unitprice,quantity,discount,unitprice*(1-discount)*quantityASzongjiaFROM[orderdetails]GO

第四十二頁,共九十一頁。424.5.2選擇表中的若干記錄1.查看不重復記錄—DISTINCT例如,在“Northwind”數(shù)據(jù)庫中要查看貨物在哪些城市里有過銷售記錄。在訂購表“Orders”中有一個字段是“ShipCity”,通過查詢這個字段,就可以了解貨物曾經(jīng)銷往過哪些城市。如果程序代碼如下:

SELECTshipcityFROMorders

或SELECTALLshipcityFROMorders第四十三頁,共九十一頁。434.5.2選擇表中的若干記錄如果要顯示不重復的記錄的話,可以使用如下代碼:SELECTDISTINCTshipcityFROMordersDistinct關鍵字可以同時指定多個字段,例如同時指定兩個字段的話,那么查詢的結果是兩個字段同時不重復的記錄,如以下代碼:SELECTDISTINCTshipname,shipcityFROMorders第四十四頁,共九十一頁。444.5.2選擇表中的若干記錄[示范案例14]在“northwind”數(shù)據(jù)庫中“suppliers”表中檢索所有行,但每個國家“Country”只顯示一次。程序清單如下:USEnorthwindGOSELECTDISTINCTcountryFROMsuppliersGO

第四十五頁,共九十一頁。454.5.2選擇表中的若干記錄2.查看滿足條件記錄—WHERE

如果只希望得到表中滿足特定條件的一些記錄,用戶可以在查詢語句中使用WHERE子句。第四十六頁,共九十一頁。464.5.2選擇表中的若干記錄常用的查詢條件:查詢條件運算符意義比較=,>,<,>=-,<=,!=,<>,!>,!<;NOT+上述運算符比較大小確定范圍BETWEENAND,NOTBETWEENAND判斷值是否在范圍內確定集合IN,NOTIN判斷值是否為列表中的值字符匹配LIKE,NOTLIKE判斷值是否與指定的字符通配格式相符空值ISNULL,ISNOTNULL判斷值是否為空多重條件AND,OR,NOT用于多重條件判斷第四十七頁,共九十一頁。47(1)比較大小

[示范案例15]查詢“Northwind”數(shù)據(jù)庫中“Products”表中庫存量unitinstock不為零的產(chǎn)品

。程序清單如下:USEnorthwindGOSELECT*FROMproductsWHEREunitsinstock<>0

GO

4.5.2選擇表中的若干記錄第四十八頁,共九十一頁。48(2)確定范圍[示范案例16]在“Northwind”數(shù)據(jù)庫中“products”表中檢索“unitprice”在$10.00到$20.00之間的所有產(chǎn)品的產(chǎn)品名稱和單價

。程序清單如下:SELECT*FROMproductsWHEREunitpriceBETWEEN10AND20GO

4.5.2選擇表中的若干記錄第四十九頁,共九十一頁。49(3)確定集合IN[示范案例17]在“northwind”數(shù)據(jù)庫中“suppliers”表中檢索坐落在日本或意大利的公司列表

。程序清單如下:SELECT*FROMsuppliersWHEREcountryIN('Japan','Italy')4.5.2選擇表中的若干記錄第五十頁,共九十一頁。504.5.2選擇表中的若干記錄(4)模糊查詢—通配符:語法格式:

[not]like‘<匹配串>’[ESCAPE‘<換碼字符>’]%:代表任意長度的字符串(長度可為0)的字符串。_:代表任意單個字符。[]:表示和方括號中列出的任意一個字符相匹配。[^]:表示不在方括號中列出的任意一個字符。%[_]%:特殊字符的處理用【】匹配。第五十一頁,共九十一頁。514.5.2選擇表中的若干記錄字符匹配[示范案例18]在“northwind”數(shù)據(jù)庫“customers”表中檢索公司名稱中包含字符串“restaurant”公司名稱。程序清單如下:SELECT*FROMcustomersWHEREcompanynameLIKE'%restaurant%'第五十二頁,共九十一頁。524.5.2選擇表中的若干記錄轉義字符的使用:[示范案例19]在“northwind”數(shù)據(jù)庫的類別“categories”表查詢類別名稱categoryName中包含下劃線’_’的所有的類別記錄信息

。程序清單如下:

SELECT*FROMcategoriesWHEREcategorynameLIKE'%_%'

第五十三頁,共九十一頁。534.5.2選擇表中的若干記錄(5)涉及空值(非空值)查詢

列表達式is[not]null[示范案例20]在“northwind”數(shù)據(jù)庫“Customers”表中查看區(qū)域為空值的顧客信息

。程序清單如下:SELECT*FROMcustomersWHEREregionISNULL第五十四頁,共九十一頁。544.5.2選擇表中的若干記錄(6)多重條件查詢[示范案例21]在“northwind”數(shù)據(jù)庫“products”表中檢索產(chǎn)品名稱“productname”以字母T開頭或產(chǎn)品標識為46,并且單價大于$16.00

。程序清單如下:SELECT*FROMproductsWHERE(productnameLIKE't%'ORproductid=46)ANDunitprice>16第五十五頁,共九十一頁。554.5.2選擇表中的若干記錄3.限制返回行數(shù)—TOPTOPn

[PERCENT][WITHTIES][示范案例22]在“Northwind”數(shù)據(jù)庫“orderdetails”訂單明細表中查看訂購數(shù)量最多的五條訂單

。程序清單如下:SELECTTOP5*FROM[orderdetails]ORDERBYquantityDESC第五十六頁,共九十一頁。564.5.3對查詢的結果排序用戶可以使用ORDERBY子句對查詢結果按照一個或多個屬性列的升序(ASC)或降序(DESC)排列,默認為升序。如果不使用ORDERBY子句,則結果集按照記錄在表中的順序排列?;菊Z法格式:ORDERBY列名[,列名]DESC|ASC

第五十七頁,共九十一頁。574.5.3對查詢的結果排序[示范案例23]在“Northwind”數(shù)據(jù)庫“products”產(chǎn)品表中查看所有產(chǎn)品記錄,并以產(chǎn)品名排序。程序清單如下:SELECT*FROMproductsORDERBYproductname第五十八頁,共九十一頁。584.5.3對查詢的結果排序當按多列排序時,先按前面的列排序,如果值相同再按后面的列排序。[示范案例24]在“Northwind”數(shù)據(jù)庫“products”產(chǎn)品表中查看所有產(chǎn)品記錄,并以供應商編號和產(chǎn)品名排序。程序清單如下:

SELECT*FROMproductsORDERBYsupplierid,productname

第五十九頁,共九十一頁。59第四章數(shù)據(jù)操縱語句4.1在SQLServerManagementStudio中查看記錄

4.2INSERT語句4.3UPDATE語句4.4DELETE語句4.5簡單查詢4.6數(shù)據(jù)統(tǒng)計查詢

第六十頁,共九十一頁。604.6數(shù)據(jù)統(tǒng)計查詢4.6.1使用聚合函數(shù)4.6.2對結果進行分組4.6.3用COMPUTE子句來歸類

第六十一頁,共九十一頁。614.6.1使用聚合函數(shù)SQLServer提供了許多聚合函數(shù),主要有:聚合函數(shù)描述AVG(列名)計算給定列的平均值COUNT

(列名)計算表達式中值的數(shù)目COUNT

(*)計算所選擇的行的數(shù)目MAX

(列名)計算給定列的中的最大值MIN

(列名)計算給定列的中最小值SUM(列名)計算給定列的中所有值的和第六十二頁,共九十一頁。624.6.1使用聚合函數(shù)

字段的數(shù)據(jù)類型決定了可以用在該字段上的聚合函數(shù)類型。如:SUM和AVG只能用在數(shù)據(jù)類型代表數(shù)字的字段上。第六十三頁,共九十一頁。634.6.1使用聚合函數(shù)[示范案例25]

在“Northwind”數(shù)據(jù)庫中查詢“employees”表中雇員的數(shù)目

。程序清單如下:

SELECTcount(*)AS雇員數(shù)目

FROMemployees第六十四頁,共九十一頁。644.6.1使用聚合函數(shù)實驗并思考:1)如果本例中將count(*)更改為count(employeeid),其顯示的個數(shù)為多少?2)如果改為count(city)呢?結果又如何呢?

第六十五頁,共九十一頁。654.6.1使用聚合函數(shù)對包含空值的字段使用聚合函數(shù)時,應注意SQLServer的聚合函數(shù)(COUNT(*)除外)將忽略字段中的空值。COUNT(*)將計算所有的行,即使每個字段都含有空值。第六十六頁,共九十一頁。664.6.2對結果進行分組GROUPBY子句將查詢結果集按某一列或多列值分組,分組列的值相等的為一組,并對每一組進行統(tǒng)計計算。對查詢結果集分組的目的是為了細化聚合函數(shù)的作用對象。

GROUPBY子句的語法格式為:

GROUPBY[ALL]列名[,列名]…[WITH{CUBE|ROLLUP}][HAVING篩選條件表達式]第六十七頁,共九十一頁。674.6.2對結果進行分組

語法注釋:ALL:用于指定包含所有組和結果集

。BY列名:是按列名指定的字段進行分組

。使用WITHCUBE會對GROUPBY所列出的所有分組字段進行匯總運算

。使用WITHROLLUP會對GROUPBY所列出的第一個分組字段進行匯總運算

。HAVING篩選條件表達式:表示對生成的組篩選后再對滿足條件的組進行統(tǒng)計

。

第六十八頁,共九十一頁。68USEnorthwindSELECTproductid,orderid

,quantityFROM[orderdetails]

GOproductidorderidquantity11511102110222531153230productidtotal_quantity235只對滿足

WHERE

子句的行分組productidtotal_quantity115235345USEnorthwindSELECTproductid,SUM(quantity)AStotal_quantityFROM[orderdetails]GROUPBYproductid

GO示例

1USEnorthwindSELECTproductid,SUM(quantity)AStotal_quantityFROM[orderdetails]

WHEREproductid=2GROUPBYproductid

GO示例24.6.2對結果進行分組第六十九頁,共九十一頁。694.6.2對結果進行分組[示范案例26]統(tǒng)計“northwind”數(shù)據(jù)庫“orders”表中每個城市的訂單總數(shù)。程序清單如下:

SELECTshipcity,count(orderid)AS訂單總數(shù)

FROMordersGROUPBYshipcity第七十頁,共九十一頁。704.6.2對結果進行分組使用GROUPBY子句時,應注意SQLServer將為每一組計算一個匯總值,并把匯總值保存在一個字段中。對于指定的一組,SQLServer只生成一條記錄,不返回詳細信息。SQLServer只對滿足WHERE子句的記錄進行分組和匯總。不要對可能包含空值的字段使用GROUPBY子句,因為空值也將被當作一組,而不管記錄是否滿足WHERE子句的條件。第七十一頁,共九十一頁。71USEnorthwindSELECTproductid,orderid,quantityFROM[orderdetails]

GOproductidorderidquantity11511102110222531153230productidtotal_quantity235345USEnorthwindSELECTproductid,SUM(quantity)AStotal_quantityFROM[orderdetails]GROUPBYproductid

HAVINGSUM(quantity)>=30

GO示例4.6.2對結果進行分組第七十二頁,共九十一頁。724.6.2對結果進行分組[示范案例27]統(tǒng)計“northwind”數(shù)據(jù)庫訂購“orders”表中訂單總數(shù)超過20的城市,以及這些城市的訂單總數(shù)和總運費

。程序清單如下:

SELECTshipcity,count(orderid)訂單總數(shù),

sum(freight)運貨費總數(shù)

FROMordersGROUPBYshipcityHAVINGcount(orderid)>20第七十三頁,共九十一頁。73USEnorthwindSELECTproductid,orderid,quantityFROM[orderdetails]

GOproductidorderidquantity11511102110222531153230USEnorthwindSELECTproductid,orderid,SUM(quantity)AStotal_quantityFROM[orderdetails]

GROUPBYproductid,orderidGO示例

4.6.2對結果進行分組productidorderidquantity11152110222531153230第七十四頁,共九十一頁。744.6.2對結果進行分組[示范案例28]在“northwind”數(shù)據(jù)庫訂購“orders”表中按年份統(tǒng)計每個城市的訂單總數(shù)

。程序清單如下:

SELECTshipcity,count(orderid)訂單總數(shù),year(orderdate)AS訂購年份FROMordersGROUPBYshipcity,year(orderdate)ORDERBYshipcity,year(orderdate)第七十五頁,共九十一頁。754.6.2對結果進行分組CUBE操作符比ROLLUP操作符多產(chǎn)生兩個匯總值總數(shù)對

orderid1中的所有行匯總對

orderid2中的所有行匯總只對productid1中的行匯總productid1、orderid1的具體值productid1、orderid2的具體值只對

productid2中的行匯總productid2、orderid1的具體值productid2、orderid2的具體值只對

productid3中的行匯總productid3、orderid1的具體值productid3、orderid2的具體值productidorderidtotal_quantityNULLNULL95NULL130NULL2651NULL1511512102NULL35211022253NULL4531153230描述USEnorthwindSELECTproductid,orderid,SUM(quantity)AStotal_quantityFROM[orderdetails]GROUPBYproductid,orderid

WITHCUBE

ORDERBYproductid,orderid

GO示例第七十六頁,共九十一頁。764.6.2對結果進行分組[示范案例29]統(tǒng)計“Northwind”數(shù)據(jù)庫“orders”表中每個城市的訂單總數(shù),并進行匯總。程序清單如下:SELECTshipcity,count(orderid)AS訂單總數(shù)FROMordersGROUPBYshipcityWITHCUBE第七十七頁,共九十一頁。774.6.2對結果進行分組聯(lián)合使用GROUPBY子句和CUBE操作符,能生成基于GROUPBY子句指定的所有字段的可能組合使用GROUPBY子句和CUBE操作符時,應注意如果在GROUPBY子句中有

n

個字段或表達式,SQLServer將在結果集中返回2n

種可能的組合。結果集中含有NULL的記錄代表該記錄由CUBE操作符生成。第七十八頁,共九十一頁。784.6.2對結果進行分組描述USEnorthwindSELECTproductid,orderid,SUM(quantity)AStotal_quantityFROM[orderdetails]GROUPBYproductid,orderid

WITHROLLUPORDERBYproductid,orderid

GO示例productidorderidtotal_quantityNULLNULL951NULL1511512102NULL35211022253NULL4531153230總數(shù)只對productid1中的行匯總productid1、orderid1的具體值productid1、orderid2的具體值只對

productid2中的行匯總productid2、orderid1的具體值productid2、orderid2的具體值只對

productid3中的行匯總productid3、orderid1的具體值productid3、orderid2的具體值第七十九頁,共九十一頁。794.6.2對結果進行分組[示范案例30]在“Northwind”數(shù)據(jù)庫“orders”表中按年份統(tǒng)計每個城市的訂單總數(shù),并按城市進行匯總。程序清單如下:

SELECTshipcity,year(orderdate)AS訂購年份,

count(orderid)AS訂單總數(shù)

FROMordersGROUPBYshipcity,year(orderdate)WITHROLLUP

第八十頁,共九十一頁。804.6.2對結果進行分組聯(lián)合使用GROUPBY子句和ROLLUP操作符,計算組中的匯總值使用GROUPBY子句和ROLLUP操作符時,應注意SQLServer處理GROUPBY中字段列表的順序是從右到左,然后對每個組使用聚合函數(shù)。SQLServer將在結果集中增加一行,這行將顯示總和或平均值之類的匯總值,新增的行以NULL標識。第八十一頁,共九十一頁。814.6.3用COMPUTE子句來歸類COMPUTE子句對查詢結果集中的所有記錄進行匯總統(tǒng)計,并顯示所有參加匯總記錄的詳細信息。當與by一起使用時,COMPUTE子句在結果集內生成控制中斷和小計。可在同一查詢內指定COMPUTE

BY和COMPUTE。使用語法格式為:COMPUTE聚合函數(shù)(列名)[BY列名]第八十二頁,共九十一頁。824.6.3用COMPUTE子句來歸類注釋說明:聚合函數(shù)(列名):例如SUM(),AVG(),COUNT()等。此處的列名用于指明要用來匯總函數(shù)處理的字段或表達式,在此不能用字段別名,并且必須是SELECT子句列表中的一項

。BY列名:按指定列名的字段進行分組計算,并顯示被統(tǒng)計記錄的詳細信息

。BY選項必須與ORDERBY子句一起使用

。第八十三頁,共九十一頁。834.6.3用COMPUTE子句來歸類USEnorthwindSELECTproductid,orderid,quantityFROM[orderdetails]COMPUTESUM(quantity)

GOCOMPUTE示例

1USEnorthwindSELECTproductid,orderid

,quantityFROM[orderdetails]

GOproductidorderidquantity11511102110222531153230productidorderidquantity1151210

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論