數(shù)據(jù)倉的基本操作方法_第1頁
數(shù)據(jù)倉的基本操作方法_第2頁
數(shù)據(jù)倉的基本操作方法_第3頁
數(shù)據(jù)倉的基本操作方法_第4頁
數(shù)據(jù)倉的基本操作方法_第5頁
已閱讀5頁,還剩111頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第五章 數(shù)據(jù)的基本操作5.1 數(shù)據(jù)的添加、修改和刪除5.2 簡單查詢5.3 連接查詢 5.4 子查詢目錄5.5 應(yīng)用舉例 通過第4章表的基基本操作作,用戶戶明確了了創(chuàng)建表表的目的的是為了了利用表表存儲和和管理數(shù)數(shù)據(jù)。本本章將在在第4章建立的的如圖5-1所示的“學(xué)生選選課管理理信息系系統(tǒng)”的的student數(shù)據(jù)庫的的用戶表表基礎(chǔ)上上講述數(shù)數(shù)據(jù)的基基本操作作。數(shù)據(jù)據(jù)的操作作主要包包括數(shù)據(jù)據(jù)庫表中中數(shù)據(jù)的的增加、修改、刪除和和查詢操操作。查查詢是數(shù)數(shù)據(jù)操作作的重點點,是用用戶必須須重點掌掌握的數(shù)數(shù)據(jù)操作作技術(shù)。5.1數(shù)據(jù)的添添加、修修改和刪刪除SQLServer數(shù)據(jù)厙的的新表建建好后,表中并并不包含

2、含任何記記錄,要要想實現(xiàn)現(xiàn)數(shù)據(jù)的的存儲,必須向向表中添添加數(shù)據(jù)據(jù)。同樣樣要實現(xiàn)現(xiàn)表的良良好管理理,則經(jīng)經(jīng)常需要要修改表表中的數(shù)數(shù)據(jù)。本本節(jié)主要要介紹數(shù)數(shù)據(jù)的添添加、修修改和刪刪除。在數(shù)據(jù)的的基本操操作中,常用到到T-SQL語句,我我們應(yīng)先先掌握如表5-1所示的SQL語句的語語法規(guī)則則。規(guī)則 含義 大寫 Transact-SQL關(guān)鍵字 斜體 Transact-SQL語法中用戶提供的參數(shù) |(豎線) 分隔括號或大括號內(nèi)的語法項目。只能選擇一個項目 (方括號) 可選語法項目,不必鍵入方括號 (大括號) 必選語法項目,不要鍵入大括號 ,n 表示前面的項可重復(fù)n次。每一項由英文逗號分隔 n 表示前面的項

3、可重復(fù)n次。每一項由空格分隔 加粗 數(shù)據(jù)庫名、表名、列名、索引名、存儲過程、實用工具、數(shù)據(jù)類型名以及必須按所顯示的原樣鍵入的文本 := 語法塊的名稱。此規(guī)則用于對可在語句中的多個位置使用的過長語法或語法單元部分進行分組和標記。適合使用語法塊的每個位置由括在尖括號內(nèi)的標簽表示: SQL語句的語語法規(guī)則則返回INSERTINTOtable_namecolumn_list VAIUES(data_values)其中各項項參數(shù)的的含義如如下:lINTO是是一個可可選的關(guān)關(guān)鍵字,可以將將它用在在INSERT和目標標表之間間。ltable_name是將要添添加數(shù)據(jù)據(jù)的表名名或table變量名名稱。l(co

4、lumn_list)是要添添加數(shù)據(jù)據(jù)的字段段名稱或或字段列列表,必必須用圓圓括號將將column_list括起來,并且用用逗號進進行分隔隔。若沒沒有指定定字段列列表,則則指全部部字段。lVALUES(data_values)用于引引入添加加記錄的的字段值值。必須須與column_list相對應(yīng)。也就是是說每一一個字段段必須對對應(yīng)一個個字段值值,且必必須用圓圓括號將將字段值值列表括括起來。如果VALUES列列表中的的值與表表中列的的順序不不相同,或者未未包含表表中所有有列的值值,那么么必須使使用column_list明確地指指定存儲儲每個傳傳入值的的列。5.1.1數(shù)據(jù)的添添加向表中添添加數(shù)據(jù)據(jù)可

5、以使使用INSERT語句。INSERT語句的語語法格式式如下:1.最簡單的的INSERT語句2.省略清單單的INSERT語句3.省略VALUES清單的INSERT語句4.向?qū)W生選選課系統(tǒng)統(tǒng)各表中中添加數(shù)數(shù)據(jù)實例如下下:【例5.1】在結(jié)構(gòu)如如圖5-2所示的“專業(yè)”表中添添加一行行記錄:在計算算機系部部中添加加一個電電子商務(wù)務(wù)專業(yè),查詢代代碼如下下:USEStudentGOINSERT專業(yè)(專業(yè)代碼碼,專業(yè)名稱稱,系部代碼碼)VALUES(0103,電子商務(wù)務(wù),01)GO 圖5-2“專業(yè)”表表結(jié)構(gòu)在查詢分分析器中中輸入上上述代碼碼,單擊擊按按紐紐,行結(jié)果如如圖5-3和圖5-4所示。用用戶要注注意V

6、ALUES列表中的的表達式式的數(shù)量量必須匹匹配列表表中的列列數(shù),表表達式的的數(shù)據(jù)類類型應(yīng)與與列的數(shù)數(shù)據(jù)類型型相兼容容。圖5-3簡單添加加數(shù)據(jù)語語句圖5-4查看運行行結(jié)果返回【例5.2】在結(jié)構(gòu)如如圖5-5所示的“班級”表中添添加2004級電子商商務(wù)班,查詢代代碼如下下:USEstudentGOINSERT班級圖5.4“班級”表表結(jié)構(gòu)VALUES(20041521,2004電子商務(wù)務(wù)班,0103, 01, )GO圖5-5“班級”表表結(jié)構(gòu)在查詢分分析器中中輸入上上述代碼碼并執(zhí)行行,即可可在“班班級”表表中增加加如圖5-6所示的值值為“20041521,2004電子商務(wù)務(wù)班,0103, 01, nul

7、l”的記錄,注意:此種方方法省略略了字段段清單,用戶必必須按照照這些列列在表中中定義的的順序提提供每一一個列的的值,建建議用戶戶在輸入入數(shù)據(jù)時時最好使使用列清清單。圖5-6執(zhí)行添加加數(shù)據(jù)語語句后的的結(jié)果返回【例5.3】創(chuàng)建“課課程”表表的一個個副本“課程l”表,將“課程”表的全全部數(shù)據(jù)據(jù)添加到到“課程程l”表中。代代碼如下下:USEstudentGOCREATEtable課程1(課程號char(4)not null,課程名char(20)notnull,學(xué)分smallintnull)GOINSERTINTO課程1(課程號,課程名,學(xué)分)SELECT課程號,課程名,學(xué)分FROM課程GO將上述代代

8、碼在查查詢分析析器中運運行,用戶可以以看到在在“課程程l”中增加了了4行數(shù)據(jù),如圖5-7所示。在T-SOL中,有一一種簡單單的插入入多行的的方法。這種方方法是使使用SELECT語句查詢詢出的結(jié)結(jié)果代替替VALUES子句。這這種方法法的語法法結(jié)構(gòu)如如下:INSERTINTOtable_name(column_name,n)SELECTcolumn_name,nFROMtable_nameWHEREsearch_conditions其中各項項參數(shù)的的含義如如下:search_conditions是查詢條條件。INSERT表和SELECT表的結(jié)果果集的列列數(shù)、列列序、數(shù)數(shù)據(jù)類型型必須一一致。圖5-7

9、增加多行行數(shù)據(jù)語語句執(zhí)行行結(jié)果返回考慮到本本章實驗驗的需要要,我們們向?qū)W生生選課系系統(tǒng)部分分表中添添加數(shù)據(jù)據(jù),在查查詢分析析器中分分別執(zhí)行行下列代代碼。(1)向“系系部”表表中添加加以下如如圖5-8所示的4條記錄,代碼如如下:USEStudentGOINSERT系系部(系部代代碼,系系部名名稱,系系主任)VALUES(01,計計算機系系,徐才智智)GO INSERT系系部(系部代代碼,系系部名名稱,系系主任)VALUES(02,經(jīng)經(jīng)濟管理理系,張博博)GOINSERT系系部(系部代代碼,系系部名名稱,系系主任)VALUES(03,數(shù)數(shù)學(xué)系,徐徐裕光)GO INSERT系系部(系部代代碼,系系部

10、名名稱,系系主任)VALUES(04,外外語系,李李濺波)GO圖5-87表結(jié)構(gòu)及及增加四四條記錄錄及執(zhí)行行結(jié)果返回(2)向“專業(yè)業(yè)”表添添加以下下如圖5-9所示的8條記錄,代碼如如下:USEStudentGOINSERT專業(yè)(專業(yè)代碼碼,專業(yè)名稱稱,系部代碼碼)VALUES(0101,軟件工程程,01)GO INSERT專業(yè)(專業(yè)代碼碼,專業(yè)名稱稱,系部代碼碼)VALUES(0102,信息管理理,01)GO INSERT專業(yè)(專業(yè)代碼碼,專業(yè)名稱稱,系部代碼碼)VALUES(0103,電子商務(wù)務(wù),01)GoINSERT專業(yè)(專業(yè)代碼碼,專業(yè)名稱稱,系部代碼碼)VALUES(0201,經(jīng)濟管理理

11、,02)GO INSERT專業(yè)(專業(yè)代碼碼,專業(yè)名稱稱,系部代碼碼)VALUES(0202,會計,02)GO INSERT專業(yè)(專業(yè)代碼碼,專業(yè)名稱稱,系部代碼碼)VALUES(0203,工商管理理,02)GO INSERT專業(yè)(專業(yè)代碼碼,專業(yè)名稱稱,系部代碼碼)VALUES(0301,經(jīng)濟數(shù)學(xué)學(xué),03)GO INSERT專業(yè)(專業(yè)代碼碼,專業(yè)名稱稱,系部代碼碼)VALUES(0401,國際商貿(mào)貿(mào)英語,04)GO 圖5-9表結(jié)構(gòu)及及增加8條記錄及及執(zhí)行結(jié)結(jié)果返回3)向“班班級”表表添加以以下如圖圖5-10所示的5條記錄,代碼如如下:USEstudentGOINSERT班級(班班級代碼碼,班級

12、名稱稱,專業(yè)代碼碼,系部代碼碼,備注)VALUES(010101001,01級軟件工工程001班,0101, 01, )GOINSERT班級(班班級代碼碼,班級名稱稱,專業(yè)代碼碼,系部代碼碼,備注)VALUES(010102002,01級信息管管理002班,0102, 01, )GOINSERT班級(班級代代碼,班級名稱稱,專業(yè)代碼碼,系部代碼碼,備注)VALUES(010201001,01級經(jīng)濟管管理001班,0201, 02, )GOINSERT班級(班級代代碼,班級名稱稱,專業(yè)代碼碼,系部代碼碼,備注)VALUES(010202001,01級會計002班,0202, 02, )GOINS

13、ERT班級(班級代碼碼,班級名稱稱,專業(yè)代碼碼,系部代碼碼,備注)VALUES(20041512,2004電子商務(wù)務(wù)班,0103,01,)Go圖5-10表結(jié)構(gòu)及及增加5條記錄及及執(zhí)行結(jié)結(jié)果返回(4)向“學(xué)學(xué)生”表表添加以以下如圖圖5-11所示的4條數(shù)據(jù)記記錄。代代碼如下下:USEstudentGOINSERT學(xué)生VALUES(010101001001,張斌,男,1970-5-4,2001-9-18,010101001, 01,0101)GOINSERT學(xué)生VALUES(010102002001,周紅瑜,女,1972-7-8,2001-9-18,010102002, 01,0102)GOINSE

14、RT學(xué)生VALUES(010201001001,賈凌云,男,1974-9-1,2002-9-18,010201001, 02,0201)GOINSERT學(xué)生VALUES(010202002001,向雪林,女,1976-10-1,2002-9-18,010202001,02,0202)GO圖5-11表結(jié)構(gòu)及及增加4條記錄及及執(zhí)行結(jié)結(jié)果返回(5)向“學(xué)學(xué)生”表表添加以以下如圖圖5-12所示的4條數(shù)據(jù)記記錄:USEstudentGOINSERT課程(課程號,課程名,學(xué)分)VALUES(0001,大學(xué)語文文,4)GOINSERT課程VALUES(0002,高等數(shù)學(xué)學(xué),4)GOINSERT課程(課程號,

15、課程名,學(xué)分)VALUES(0003,計算機基基礎(chǔ),4)GOINSERT課程(課程號,課程名,學(xué)分)VALUES(0004,數(shù)據(jù)庫概概論,4)GO圖5-12表結(jié)構(gòu)及及增加4條記錄及及執(zhí)行結(jié)結(jié)果返回(6)向“教教學(xué)計劃劃”表添添加如圖圖5-13所示的16條數(shù)據(jù)記記錄。代代碼如下下:USEstudentGOINSERT教學(xué)計劃劃(課程號,專業(yè)代碼碼,專業(yè)學(xué)級級,課程類型型,開課學(xué)期期,學(xué)分)VALUES(0001,0101,2001,公共必修修,1,4)GOINSERT教學(xué)計劃劃(課程號,專業(yè)代碼碼,專業(yè)學(xué)級級,課程類型型,開課學(xué)期期,學(xué)分)VALUES(0002,0101,2001,公共選修修,

16、2,4)GOINSERT教學(xué)計劃劃(課程號,專業(yè)代碼碼,專業(yè)學(xué)級級,課程類型型,開課學(xué)期期,學(xué)分)VALUES(0003,0101,2001,專業(yè)必修修,3,4)GOINSERT教學(xué)計劃劃(課程號,專業(yè)代碼碼,專業(yè)學(xué)級級,課程類型型,開課學(xué)期期,學(xué)分)VALUES(0004,0101,2001,專業(yè)選修修,4,4)GOINSERT教學(xué)計劃劃(課程號,專業(yè)代碼碼,專業(yè)學(xué)級級,課程類型型,開課學(xué)期期,學(xué)分)VALUES(0001,0102,2001,公共必修修,1,4)GOINSERT教學(xué)計劃劃(課程號,專業(yè)代碼碼,專業(yè)學(xué)級級,課程類型型,開課學(xué)期期,學(xué)分)VALUES(0002,0102,200

17、1,公共選修修,2,4)GOINSERT教學(xué)計劃劃(課程號,專業(yè)代碼碼,專業(yè)學(xué)級級,課程類型型,開課學(xué)期期,學(xué)分)VALUES(0003,0102,2001,專業(yè)必修修,3,4)GOINSERT教學(xué)計劃劃(課程號,專業(yè)代碼碼,專業(yè)學(xué)級級,課程類型型,開課學(xué)期期,學(xué)分)VALUES(0004,0102,2001,專業(yè)選修修,4,4)GOINSERT教學(xué)計劃劃(課程號,專業(yè)代碼碼,專業(yè)學(xué)級級,課程類型型,開課學(xué)期期,學(xué)分)VALUES(0001,0201,2001,公共必修修,1,4)GOINSERT教學(xué)計劃劃(課程號,專業(yè)代碼碼,專業(yè)學(xué)級級,課程類型型,開課學(xué)期期,學(xué)分)VALUES(0002,

18、0201,2001,公共選修修,2,4)GOINSERT教學(xué)計劃劃(課程號,專業(yè)代碼碼,專業(yè)學(xué)級級,課程類型型,開課學(xué)期期,學(xué)分)VALUES(0003,0201,2001,專業(yè)必修修,3,4)GOINSERT教學(xué)計劃劃(課程號,專業(yè)代碼碼,專業(yè)學(xué)級級,課程類型型,開課學(xué)期期,學(xué)分)VALUES(0004,0201,2001,專業(yè)選修修,4,4)GOINSERT教學(xué)計劃劃(課程號,專業(yè)代碼碼,專業(yè)學(xué)級級,課程類型型,開課學(xué)期期,學(xué)分)VALUES(0001,0202,2001,公共必修修,1,4)GOINSERT教學(xué)計劃劃(課程號,專業(yè)代碼碼,專業(yè)學(xué)級級,課程類型型,開課學(xué)期期,學(xué)分)VALU

19、ES(0002,0202,2001,公共選修修,2,4)GOINSERT教學(xué)計劃劃(課程號,專業(yè)代碼碼,專業(yè)學(xué)級級,課程類型型,開課學(xué)期期,學(xué)分)VALUES(0003,0202,2001,專業(yè)必修修,3,4)INSERT教學(xué)計劃劃(課程號,專業(yè)代碼碼,專業(yè)學(xué)級級,課程類型型,開課學(xué)期期,學(xué)分)VALUES(0004,0202,2001,專業(yè)選修修,4,4)GO 圖5-13表結(jié)構(gòu)及及增加16條記錄后后的執(zhí)行行結(jié)果 圖5-14表結(jié)構(gòu)及及增加4條記錄后后的執(zhí)行行結(jié)果(7)向“教教師”表表添加如如圖5-14所示的4條數(shù)據(jù)記記錄。代代碼如下下:其代碼如如下:USEstudentGOINSERT教師(教

20、師編號號,姓名,性別,出生日期期,學(xué)歷,職務(wù),職稱,系部代碼碼,專業(yè),備注)VALUES(100000000001,張學(xué)杰,男,1963-1-1,研究生,副主任,副教授,01,計算機,)GOINSERT教師(教師編號號,姓名,性別,出生日期期,學(xué)歷,職務(wù),職稱,系部代碼碼,專業(yè),備注)VALUES(100000000002,王鋼,男,1964-5-8,研究生,教學(xué)秘書書,講師,01,計算機,)GOINSERT教師(教師編號號,姓名,性別,出生日期期,學(xué)歷,職務(wù),職稱,系部代碼碼,專業(yè),備注)VALUES(100000000003,李麗,女,1972-7-1,本科,教師,助教,02,電視編輯輯,

21、)GOINSERT教師(教師編號號,姓名,性別,出生日期期,學(xué)歷,職務(wù),職稱,系部代碼碼,專業(yè),備注)VALUES(100000000004,周紅梅,男,1972-1-1,研究生,主任,副教授,02,機械,)GO(8)利用“教學(xué)計計劃”表表(如圖圖5-13所示)向向“教師師任課”表添加加如圖5-15所示的16條數(shù)據(jù)記記錄。代碼如下下:USEstudentGOINSERT教師任課課(教師編號號,課程號,專業(yè)學(xué)級級,專業(yè)代碼碼,學(xué)年,學(xué)期,學(xué)生數(shù))SELECT10000000+課程號,課程號,專業(yè)學(xué)級級,專業(yè)代碼碼,2001,開課學(xué)期期,0FROM教學(xué)計劃劃GO圖5-15表結(jié)構(gòu)及及增加16條記錄后

22、后的執(zhí)行行結(jié)果(9)向“課課程注冊冊”表添添加如圖圖5-16所示的16條數(shù)據(jù)記記錄(注注意,執(zhí)執(zhí)行下列列代碼后后還要手動動修改成成績一列列的值)。代碼如下下:USEstudentGOINSERT課程注冊冊(學(xué)號,課程號,教師編號號,專業(yè)代碼碼,專業(yè)學(xué)級級,選課類型型,學(xué)期,學(xué)年,成績,學(xué)分)SELECTDISTINCT學(xué)生.學(xué)號,教師任課課.課程號,教師任課課.教師編號號,教學(xué)計劃劃.專業(yè)代碼碼,教學(xué)計劃劃.專業(yè)學(xué)級級,教學(xué)計劃劃.課程類型型,教學(xué)計劃劃.開課學(xué)期期,0,0,0FROM學(xué)生JOIN班級ON學(xué)生.班級代碼碼=班級.班級代碼碼JOIN教學(xué)計劃劃ON班級.專業(yè)代碼碼=教學(xué)計劃劃.專業(yè)

23、代碼碼JOIN教師任課課ON教學(xué)計劃劃.課程號=教師任課課.課程號圖5-16表結(jié)構(gòu)及及增加16條記錄后后的執(zhí)行行結(jié)果 (10)為了教教學(xué)需要要,向“產(chǎn)品”表及“產(chǎn)品銷銷售”表表添加如如圖5-17和和圖5-18所所示的數(shù)數(shù)據(jù)記錄錄。代碼碼如下:USEstudentGOINSERT產(chǎn)產(chǎn)品VALUES(0001,顯顯示器)GOINSERT產(chǎn)產(chǎn)品VALUES(0002,鍵鍵盤)GOINSERT產(chǎn)產(chǎn)品VALUES(0004,鼠鼠標)GOUSEStudentGOINSERT產(chǎn)產(chǎn)品銷銷售VALUES(0001,25)GOINSERT產(chǎn)產(chǎn)品銷銷售VALUES(0003,30)GOINSERT產(chǎn)產(chǎn)品銷銷售VAL

24、UES(0005,35)GO圖5-17向“產(chǎn)品品”表添添加的數(shù)數(shù)據(jù)記錄錄圖5-18向“產(chǎn)品品銷售”表添加加的數(shù)據(jù)據(jù)記錄在數(shù)據(jù)輸輸入過程程中,可可能會出出現(xiàn)輸入入錯誤,或是因因為時間間變化而而需要更更新數(shù)據(jù)據(jù)。這都都需要修修改數(shù)據(jù)據(jù)。修改表中中的數(shù)據(jù)據(jù)可以使使用查詢詢分析器器中的網(wǎng)網(wǎng)格界面面進行修修改,即即右擊某某數(shù)據(jù)表表圖標,在彈出的的快捷菜菜單中選選擇“打打開表”命令,在右窗窗格中進進行修改改。這里里主要介介紹T-SQL的UPDATE語句實現(xiàn)現(xiàn)修改的的方法,UPDATE的語法格格式如下下:5.1.2數(shù)據(jù)的修修改UPDATEtablenameSETcolumn_name=expression|

25、 DEFAULT|NULL ,nFROM,nWHERE:=Table_name AStable_aliasWITH(,n)其中:table_name是需要更更新的表表的名稱稱。SET是指定要要更新的的列或變變量名稱稱的列表表。column_name是含有要要更改數(shù)數(shù)據(jù)的列列的名稱稱。expression| DEFAULT|NULL)是列值表表達式。是修改數(shù)數(shù)據(jù)來源源表。要注意的的是,當當沒有WHERE子句指定定修改條條件時,則表中中所有記記錄的指指定列都都被修改改。若修修改的數(shù)數(shù)據(jù)來自自另一個個表時,則需要要FROM子句語句句指定一一個表?!纠?.4】將“教學(xué)學(xué)計劃”表中專專業(yè)代碼碼為“010

26、1”的“開課課學(xué)期”的值改改為第二二學(xué)期。代碼如下下:USEstudentGOUPDATE教學(xué)計劃劃SET開課學(xué)期期=2 WHERE專專業(yè)代碼碼=0101GO在查詢分分析器中中輸入并并執(zhí)行上上述代碼碼后,用用戶可以以通過企企業(yè)管理理器查看看修改的的結(jié)果,這里如如果沒有有使用WHERE子句句,則對對表中所所有記錄錄的“開開課學(xué)期期”進行行修改?!纠?.5】將將“課程程注冊”表中所所有記錄錄的學(xué)分分改為3。代碼如下下:USEstudentGOUPDATE課課程注注冊SET學(xué)學(xué)分=3GO在查詢分分析器中中輸入并并執(zhí)行上上述代碼碼后,用用戶可以以查看結(jié)結(jié)果以檢檢驗執(zhí)行行情況。這里沒沒有指定定條件,將對

27、表表中所有有記錄進進行修改改。如要要修改多多個列時時,列與與列之間間要用英英文逗號號隔開。5.1.3數(shù)數(shù)據(jù)的的刪除隨著系統(tǒng)統(tǒng)的運行行,表中中可能產(chǎn)產(chǎn)生一些些無用的的數(shù)據(jù),這些數(shù)數(shù)據(jù)不僅僅占用空空間,而而且還影影響查詢詢的速度度,所以以應(yīng)該及及時地刪刪除。刪刪除數(shù)據(jù)據(jù)可以使使用DELETE語句和TRUNCATETABLE語句。1.使用用DELETE語句刪刪除數(shù)據(jù)據(jù)從表中刪刪除數(shù)據(jù)據(jù),最常常用的是是DELETE語句。DELETE語句的語語法格式式如下:DELETEtable_nameFROM,nWHERE:=table_nameAStable_alias ,n其中各項項參數(shù)含含義如下下:ltabl

28、e_name是要從其其中刪除除數(shù)據(jù)的的表的名名稱;lFROM為指定附附加的FROM子句; lWHERE指定用于于限制刪刪除行數(shù)數(shù)的條件件。如果果沒有提提供WHERE子句,則則DELETE刪除表中中的所有有行;l指定刪除除行的限限定條件件。對搜搜索條件件中可以以包含的的謂詞數(shù)數(shù)量沒有有限制。ltable_nameAStable_alias是為刪除除操作提提供標準準的表名名。【例5.6】刪除“課課程注冊冊”表中中的所有有記錄。代碼如下下:USEstudentGODELETE課程注冊冊GO此例中沒沒有使用用WHERE語句指定定刪除的的條件,將刪除除課程注注冊表中中的所有有記錄,只剩下下表格的的定義。

29、用戶可可以通過過企業(yè)管管理器查查看。【例5.6】刪除“課課程注冊冊”表中中的所有有記錄。代碼如下下:USEstudentGODELETE課課程注注冊GO此例中沒沒有使用用WHERE語語句指定定刪除的的條件,將刪除除課程注注冊表中中的所有有記錄,只剩下下表格的的定義。用戶可可以通過過企業(yè)管管理器查查看?!纠?.8】刪刪除“課課程注冊冊”表中中姓名為為“張斌斌”的課課程號為為“0001”的選課課信息。代碼如下下:USEstudentGODELETE課課程注注冊WHERE課課程注冊冊.課程程號=0001AND 學(xué)號號=(SELECT學(xué)學(xué)號FROM學(xué)學(xué)生WHERE姓姓名LIKE 張張斌)GO在查詢分分

30、析器中中輸入并并執(zhí)行上上述代碼碼。刪除除“課程程注冊”表中的的數(shù)據(jù)時時,用到到了“學(xué)學(xué)生”表表里的“姓名”字段值值“張斌斌”,所所以使用用了FROM子子句。用用戶可以以使用企企業(yè)管理理器檢查查代碼執(zhí)執(zhí)行結(jié)果果。用戶戶在操作作數(shù)據(jù)庫庫時,要要小心使使用DELETE語句句,因為為數(shù)據(jù)會會從數(shù)據(jù)據(jù)庫中永永久的被被刪除。2.使用TRUNCATETABLE清空表格格使用TRUNCATETABLE語句刪除除所有記記錄的語語法格式式為:TRUNCATETABLEtable_nameTRUNCATETABLE為關(guān)鍵字字;table_name為要刪除除所用記記錄的表表名。使用TRUNCATETABLE語句清空空

31、表格要要比DELETE語句快,TRUNCATETABLE是不記錄錄日志的的操作,它將釋釋放表的的數(shù)據(jù)和和索引所所占據(jù)的的所有空空間以及及所有為為全部索索引分配配的頁,刪除的的數(shù)據(jù)是是不可恢恢復(fù)的。而DELETE語句則不不同,它它在刪除除每一行行記錄時時都要把把刪除操操作記錄錄在日志志中。刪刪除操作作記錄在在日志中中,可以以通過事事務(wù)回滾滾來恢復(fù)復(fù)刪除的的數(shù)據(jù)。用TRUNCATETABLE和DELETE都可以刪刪除所有有的記錄錄,但是是表結(jié)構(gòu)構(gòu)還存在在,而DROP TABLE是刪除表表結(jié)構(gòu)和和所有記記錄,并并釋放表表所占用用的空間間。 【例5.9】用用TRUNCATETABLE語語句清空空“課程

32、程注冊”表。代碼如下下:USEstudentGOTRUNCATETABLE課課程注冊冊GO5.2簡單查詢詢數(shù)據(jù)庫存存在的意意義在于于將數(shù)據(jù)據(jù)組織在在一起,以方便便查詢。“查詢詢”的含含義就是是用來描描述從數(shù)數(shù)據(jù)庫中中獲取數(shù)數(shù)據(jù)和操操縱數(shù)據(jù)據(jù)的過程程。SQL語言中最最主要、最核心心的部份份是它的的查詢功功能。查查詢語言言用來對對已經(jīng)存存在于數(shù)數(shù)據(jù)庫的的數(shù)據(jù)按按照特定定的組合合、條件件表達式式或者一一定次序序進行檢檢索。其其基本格格式是由由SELECT子句、FROM子句和WHERE子句組成成的SQL查詢語句句:SELECTFROMWHERE也就是說說,SELECT指定了要要查看的的列(字段),F(xiàn)R

33、OM指定這些些數(shù)據(jù)的的來源(表或者視視圖),WHERE則指定了了要查詢詢哪些記記錄。提示:在在SQL語言中,SELECT子句除了了進行查查詢外,其他的的很多功功能也都都離不開開SELECT子句,例例如,創(chuàng)創(chuàng)建視圖圖是利用用查詢語語句來完完成的;插入數(shù)數(shù)據(jù)時,在很多多情況下下是從另另外一個個表或者者多個表表中選擇擇符合條條件的數(shù)數(shù)據(jù)。所所以查詢詢語句是是掌握SQL語言的關(guān)關(guān)鍵。5.2.1完整的SELECT語句的基基本語法法格式雖然SELECT語句的完完整語法法較復(fù)雜雜,但是是其主要要的語法法格式可可歸納如如下:SELECTselect_listINTOnew_table_nameFROMtabl

34、e_listWHEREsearch_conditionsGROUPBYgroup_by_expressionHAVINGsearch_ conditionsORDERBYorder_expressionASC|DESC 其中,帶有方括括號的子子句是可可選擇的的,大寫寫的單詞詞表示SQL的關(guān)鍵字字,而小小寫的單單詞或者者單詞組組合表示示表或視視圖名稱稱或者給給定條件件。名項項參數(shù)含含義如下下:lSELECTselect_list描述結(jié)果果集的列列,它是是一個逗逗號分隔隔的表達達式列表表。每個個表達式式通常是是從中獲獲取數(shù)據(jù)據(jù)的源表表或視圖圖的列的的引用,但也可可能是其其他表達達式,例例如常量量或

35、T-SQL函數(shù)。在在選擇列列表中使使用*表達式指指定返回回源表中中的所有有列。llINTOnew_table_name用于指定定使用結(jié)結(jié)果集來來創(chuàng)建一一個新表表,new_table_name是新表的的名稱。lFROMtable_list包含從中中檢索到到結(jié)果集集數(shù)據(jù)來來創(chuàng)建的的表的列列表,也也就是結(jié)結(jié)果集數(shù)數(shù)據(jù)來源源于哪些些表或視視圖,F(xiàn)ROM子句還可可包含連連接的定定義。lWHEREsearch_conditions中的WHERE子句是一一個篩選選,它定定義了源源表中的的行要滿滿足SELECT語句的要要求所必必須達到到的條件件。只有有符合條條件的行行才向結(jié)結(jié)果集提提供數(shù)據(jù)據(jù),不符符合條件件的

36、行中中的數(shù)據(jù)據(jù)不會被被使用。lGROUPBYgroup_by_expression中GROUPBY子句根據(jù)據(jù)group_by_expression列中的值值將結(jié)果果集分成成組。lHAVING search_conditions中HAVING子句是應(yīng)應(yīng)用于結(jié)結(jié)果集的的附加篩篩選。邏邏輯上講講,HAVING子句從中中間結(jié)果果集對行行進行篩篩選,這這些中間間結(jié)果集集是用SELECT語句中的的FROM,WHERE或GROUPBY子句創(chuàng)建建的。HAVING子句通常常與GROUPBY子句一起起使用,盡管HAVING子句前面面不必有有GROUPBY子句。lORDERBYorder_expressionASC

37、 lDESC中ORDERBY子句定義義結(jié)果集集中的行行排列的的順序。order_expression指定組成成排序列列表的結(jié)結(jié)果集的的列。ASC和DESC關(guān)鍵字用用于指定定行是按按升序還還是按降降序排序序。5.2.2選擇表中中的若干干列選擇表中中的全部部列或部部分列這這就是表表的投影影運算。這種運運算可以以通過SELECT子句給出出的字段段列表來來實現(xiàn)。字段列列表中的的列可以以是表中中的列,也可以以是表達達式列。所謂表表達式列列就是多多個列運運算后產(chǎn)產(chǎn)生的列列或者是是利用函函數(shù)計算算后所得得的列。1.輸出表中中的所有有列將表中的的所有字字段都在在結(jié)果集集中列出出來,可可以以有有兩種方方法:一一

38、種是將將所有的的字段名名在SELECT關(guān)鍵字后后列出來來;另一一種是在在SELECT語句后使使用一個個“*”?!纠?.10】查詢“學(xué)學(xué)生”表表中全體體學(xué)生的的記錄。代碼如下下:USEstudentGOSELECT*FROM學(xué)生GO 在查詢分分析器中中輸入并并執(zhí)行上上述代碼碼,將返返回學(xué)生生表中的的全部列列,如圖圖5-19所示示。圖5-19查詢“學(xué)學(xué)生”表表的全部部字段2.輸出表中中部分列列如果在結(jié)結(jié)果集中中輸出表表中的部部分列,可以將將要顯示示的字段段名在SELECT關(guān)鍵字后后依次列列出來,列名與與列名之之間用英英文逗號號“,”隔開,字段的的順序可可以根據(jù)據(jù)需要指指定。 【例5.11】查詢?nèi)?/p>

39、體教師師的教師師編號、姓名和和職稱信信息。代碼如下下:USEstudentGOSELECT教教師編編號,姓姓名,職職稱FROM 教師師GO在查詢分分析器中中輸入并并執(zhí)行上上述代碼碼,在“結(jié)果”窗格中中將只有有“教師師編號”、“姓姓名”和和“職稱稱”三個個字段,如圖5-20所示。圖5-20查詢?nèi)w體教師的的編號、姓名和和職稱3.為結(jié)果集集內(nèi)的列列指定別別名所有列有些時候候,結(jié)果果集中的的列不是是表中現(xiàn)現(xiàn)成的列列,而是是表中的的一個或或多個列列計算出出來的,這時候候,這個個計算列列需要指指定一個個列名,同時該該表達式式將顯示示在字段段列表中中。使用用格式如如下:SELCET表達式AS列別名FROM

40、數(shù)據(jù)源【例5.12】查詢“教教師”表表中全體體教師的的姓名及及年齡。代碼如下下:USEstudentGOSELECT姓名,YEAR(GETDATE()-YEAR(出生日期期) AS年齡FROM教師GO 上述語句句中,“YEAR(GETDATE()-YEAR(出生日期期) ”是表達式式,含義義是取得得系統(tǒng)當當前日期期中的年年份減去去“出生生日期”字段中中的年份份,就是是學(xué)生的的當前年年齡?!澳挲g”是表達達式別名名。將上上述代碼碼在查詢詢分析器器中輸入入并執(zhí)行行,返回回結(jié)果如如圖5-21所示。5.2.3選選擇表表中的若若干記錄錄選擇表中中的若干干記錄這這就是表表的選擇擇運算。這種運運算可以以通過增

41、增加一些些謂詞(例如WHERE子句句)等來來實現(xiàn)。1.消消除取取值重復(fù)復(fù)的行兩個本來來并不相相同的記記錄,當當投影到到指定的的某些列列上后,可能變變成相同同的行。如果要要去掉結(jié)結(jié)果集中中的重復(fù)復(fù),可以以在字段段列表前前面加上上DISTINCT關(guān)關(guān)鍵字。【例5.13】查詢選選修了課課程的學(xué)學(xué)生學(xué)號號。圖5-21帶有別名名的查詢詢代碼如下下:USEstudentGOSELECT學(xué)學(xué)號FROM課課程注冊冊GO上述代碼碼執(zhí)行結(jié)結(jié)果如圖圖5-22所示示,選課課的學(xué)生生號有重重復(fù),共共有16行記錄錄。下面面的代碼碼就去掉掉了重復(fù)復(fù)的學(xué)號號,僅有有四行記記錄,執(zhí)執(zhí)行結(jié)果果如圖5-23所示。USEstuden

42、tGOSELECTDISTINCT學(xué)學(xué)號FROM 課程程注冊GO圖5-22未去掉重重復(fù)學(xué)號號的查詢詢圖5-23去掉了重重復(fù)學(xué)號號的查詢詢 2.限限制返返回行數(shù)數(shù)如果一個個表中有有上億條條記錄,而用戶戶只是看看一看記記錄的樣樣式和內(nèi)內(nèi)容,這這就沒有有必要顯顯示全部部的記錄錄。如果果要限制制返回的的行數(shù),可以在在字段列列表之前前使用TOPn關(guān)關(guān)鍵字,則查詢詢結(jié)果只只顯示表表中前面面n條記記錄,如如果在字字段列表表之前使使用TOPn PERCENT關(guān)關(guān)鍵字字,則查查詢結(jié)果果只顯示示前面n條記記錄?!纠?.14】查詢“課程注注冊”表表中的前前三條記記錄的信信息。代碼如下下:USEstudentGOSE

43、LECTTOP 3*FROM 課程程注冊GO在查詢分分析器中中輸入并并執(zhí)行上上述代碼碼,執(zhí)行行結(jié)果如如圖5-24所所示。圖5-24顯示前三三條記錄錄3.查詢滿足足條件的的元組如果只希希望得到到表中滿滿足特定定條件的的一些記記錄,用用戶可以以在查詢詢語句中中使用WHERE子句。表5-2常用的查查詢條件件查 詢 條 件 運 算 符 意 義 比較 =、=、=、!=、!; NOT+上述運算符比較大小 查 詢 條 件 運 算 符 意 義 確定范圍 BETWEENAND、NOT BETWEENAND 判斷值是否在范圍內(nèi) 確定集合 IN、NOT IN 判斷值是否為列表中的值字符匹配 LIKE、NOT LIK

44、E 判斷值是否與指定的字符通配格式相符 空值 IS NULL、NOT IS NULL 判斷值是否為空 多重條件 AND、OR、NOT 用于多重條件判斷 (1)比比較大小小:比較較運算符符是比較較兩個表表達式大大小的運運算符,各運算算符的含含義是=(等于于)、(大于于)、=(大大于或等等于)、=(小于或或等于)、(不等等于)、!=(不等于于)、!(不大大于)。邏輯運運算符NOT可可以與比比較運算算符同用用,對條條件求非非?!纠?.15】查詢“課課程注冊冊”表成成績大于于等于50分的記錄錄。代碼如下下:USEstudentGOSELECT*FROM課程注冊冊WHERE成績=50GO將上述代代碼在查

45、查詢分析析器中輸輸入并執(zhí)行,結(jié)果如如圖5-25所示。圖5-25查詢成績績大于等等于50分的記錄錄 (2)確確定范圍圍:范圍圍運算符符BETWEENAND和NOTBETWEENAND可可以查找找屬性值值在(或或不在)指定的的范圍內(nèi)內(nèi)的記錄錄。其中中,BETWEEN后后是范圍圍的下限限(即低低值),AND后是范范圍的上上限(即即高值)。語法法格式如如下:列表達式式 NOT BETWEEN起起始值值A(chǔ)ND 終止止值【例5.16】查詢出出生日期期在19701982年的的學(xué)生姓姓名、學(xué)學(xué)號和出出生日期期。代碼如下下:USEstudentGOSELECT姓姓名,學(xué)號,出生日日期FROM 學(xué)生生WHEREy

46、ear(出生生日期) BETWEEN1970AND1982GO上述代碼碼的含義義是,如如果返回回出生日日期的年年份大于于等于1970且小于于等于1982,則該該記錄會會在“結(jié)結(jié)果”窗窗47格中顯示示。在查查詢分析析器中輸輸入并執(zhí)執(zhí)行上述述代碼,執(zhí)行結(jié)結(jié)果如圖圖5-26所示示。圖5-26范圍查找找(3)確定集集合:確確定集合合運算符符IN和NOTIN可以用來來查找屬屬性值屬屬于(或或不屬于于)指定定集合的的記錄,運算符符的語法法格式如如下:列表達式式NOTIN(列值1,列值2,列值3,)【例5.17】查詢計算算機系、經(jīng)濟管管理系的的班級名名稱與班班級編號號。代碼如下下:USEstudentGOS

47、ELECT班級代碼碼,班級名稱稱FROM班級WHERE系部代碼碼IN(01,02)GO將上述代代碼在查查詢分析析器中輸輸入并執(zhí)執(zhí)行,結(jié)結(jié)果如圖圖5-27所示。圖5-27確定集合合查詢(4)字符匹匹配:在在實際的的應(yīng)用中中,用戶戶有時候候不能給給出精確確的查詢詢條件。因此,經(jīng)常需需要根據(jù)據(jù)一些不不確定的的信息來來查詢。T-SQL語言提供供了字符符匹配運運算符LIKE進行字符符串的匹匹配運算算,實現(xiàn)現(xiàn)這類模模糊查詢詢。其一一般語法法格式如如下:NOTLIKE ESCAPE 其含義是是查找指指定的屬屬性列值值與“”相匹配的的記錄?!啊笨梢允且灰粋€完整整的字符符串,也也可以含含有通配配符“”和“_”,

48、其中通通配符包包括如下下四種:百分分號,代代表任意意長度的的字符串串(長度度可以是是0)的字符符串。例例如,ab表示以a開頭,以以b結(jié)尾的任任意長度度的字符符串。例例如,acb、adxyzb、ab等都滿足足該匹配配串。_:下畫線線,代表表任意單單個字符符。例如如,a_b表示以a開頭,以以b結(jié)尾的長長度為3的任意字字符串。如afb等。:表示方方括號里里列出的的任意一一個字符符。例如如ABCDE,表示第一一個字符符是A第二個字字符為B、C、D、E中的任意意一個。也可以以是字符符范圍,例如AB-E同ABCDE的含義相相同。:表示不不在方括括號里列列出的任任意一個個字符?!纠?.18】查詢“學(xué)學(xué)生”表

49、表中姓“周”的的學(xué)生的的信息。代碼如下下:USEstudentGOSELECT*FROM學(xué)生WHERE姓名LIKE 周%GO通配符字字符串“周%”的含義是是第一個個漢字是是“周”的字符符串。將將上述代代碼在查查詢分析析器中輸輸入并執(zhí)執(zhí)行,執(zhí)執(zhí)行結(jié)果果如圖5-28所示。圖5-28模糊查詢詢?nèi)绻脩魬粢樵冊兊淖址旧砩砭秃杏谢騙,這時就就需要使使用“ESCAPE”短語對通通配符進進行轉(zhuǎn)義義了。【例5.19】有一門課課程的名名稱是“Photoshop_7.1”,查詢它的的課程號號和課程程名。代碼如下下:USEstudentGOINSERTINTO課程(課程號,課程名,學(xué)分)VALUES(00

50、05,Photoshop_7.1,4)GOSELECT課程號,課程名FROM課程WHERE課程名LIKE Photoshop/_7.1ESCAPE /GO “ESCAPE/ ”短語表示示“/”是換碼字字符,這這樣匹配配串中緊緊跟在“/”之后的字字符“_”不再具有有通配符符的含義義,轉(zhuǎn)義義為普通通的“_”字符。將上述代代碼在查查詢分析析器中輸輸入并執(zhí)執(zhí)行,結(jié)結(jié)果如圖圖5-29所示:圖5-29使用“ESCAPE”短語對通通配符“_”進行轉(zhuǎn)義義【例5.20】查詢“教教師”表表中備注注字段為為空的教教師信息息。代碼如下下:USEstudentGOSELECT*FROM教師WHERE備注ISNULLGO

51、這里的IS運算符不不能用“=”代替。將將上述代代碼在查查詢分析析器中輸輸入并執(zhí)執(zhí)行,執(zhí)執(zhí)行結(jié)果果如圖5-30所示。圖5-30查詢空值值(6)多重條條件查詢詢。用戶戶可以使使用邏輯輯運算符符AND、OR、NOT連接多個個查詢條條件,實實現(xiàn)多重重條件查查詢。邏邏輯運算算符使用用格式如如下:NOT邏輯表達達式AND|ORNOT邏輯表達達式【例5.21】查詢“課課程注冊冊”表中中課程號號為“000l”成績在7079分之間(不含79分)的學(xué)學(xué)生的學(xué)學(xué)號、成成績。代碼如下下:USEstudentGOSELECT學(xué)號,成績FROM課程注冊冊WHERE課程號=0001 AND成績=70 AND成績79GO將上

52、述代代碼在查查詢分析析器中輸輸入并執(zhí)執(zhí)行,結(jié)結(jié)果如圖圖5-31所示。圖5-31多重條件件查詢5.2.4對對查詢的的結(jié)果排排序用戶可以以使用ORDERBY子句句對查詢詢結(jié)果按按照一個個或多個個屬性列列的升序序(ASC)或或降序(DESC)排排列,默默認為升升序。如如果不使使用ORDER BY子句,則結(jié)果果集按照照記錄在在表中的的順序排排列。ORDERBY子子句的語語法格式式如下:ORDERBY列名ASC|DESC,n當按多列列排序時時,先按按前面的的列排序序,如果果值相同同再按后后面的列列排序?!纠?.22】查詢選修修了“0001”號課程的的學(xué)生的的學(xué)號,并按成成績降序序排列。代碼如下下:USE

53、studentGOSELECT學(xué)號,成績FROM課程注冊冊WHERE課程號=0001ORDERBY成績DESCGO 將上述代代碼在查查詢分析析器中輸輸入并執(zhí)執(zhí)行,結(jié)結(jié)果如圖圖5-32所示。圖5-32將查詢結(jié)結(jié)果降序序排序【例5.23】查詢?nèi)w體學(xué)生信信息,查查詢結(jié)果果按所在在班級代代碼降序序排列,同一個個班的按按照升序序排列。代碼如下下:USEstudentGOSELECT*FROM學(xué)生ORDERBY班級代碼碼DESC,學(xué)號ASCGO將上述代代碼在查查詢分析析器中輸輸入并執(zhí)執(zhí)行,結(jié)結(jié)果如圖圖5-33所示。圖5-33組合排序序5.2.5對數(shù)據(jù)進進行統(tǒng)計計用戶經(jīng)常常需要對對結(jié)果集集進行統(tǒng)統(tǒng)計,例例

54、如求和和、平均均值、最最大值、最小值值、個數(shù)數(shù)等,這這些統(tǒng)計計可以通通過集合合函數(shù)、COMPUTE子句、GROUPBY子句來實實現(xiàn)。1.使用集合合函數(shù)為了進一一步方便便用戶,增強檢檢索功能能,SQLServer提供了許許多集合合函數(shù),主要有有:COUNT( DISTINCT|ALL* )統(tǒng)計記錄錄個數(shù)。COUNT( DISTINCT|ALL )統(tǒng)計一列列中值的的個數(shù)。SUM( DISTINCT |ALL )計算一列列值的總總和(此列必須須是數(shù)值值型)。AVG( DISTINCT |ALL )計算一列列值的平平均值(此列必須須是數(shù)值值型)。MAX( DISTINCT |ALL )求一列值值中的最

55、最大值。MIN( DISTINCT |ALL )求一列值值中的最最小值。在SELECT子句中集集合函數(shù)數(shù)用來對對結(jié)果集集記錄進進行統(tǒng)計計計算。DISTINCT是去掉指指定列中中的重復(fù)復(fù)信息的的意思,ALL是不取消消重復(fù),默認是是ALL。【例5.24】查詢“教教師”表表中的教教師總數(shù)數(shù)。代碼如下下:USEstudentGOSELECTCOUNT(*)AS教師總數(shù)數(shù)FROM教師GO將上述代代碼在查查詢分析析器中輸輸入并執(zhí)執(zhí)行,結(jié)結(jié)果如圖圖5-34所示圖5-34統(tǒng)計記錄錄總數(shù)【例5.25】查詢“課課程注冊冊”表中中學(xué)生的的成績平平均分。代碼如下下:USEstudentGOSELECTAVG (成績)

56、 AS平均分FROM課程注冊冊GO將上述代代碼在查查詢分析析器中輸輸入并執(zhí)執(zhí)行,結(jié)結(jié)果如圖圖5-35所示。圖5-35求學(xué)生成成績的平平均分2.對結(jié)果進進行分組組GROUPBY子句將查查詢結(jié)果果集按某某一列或或多列值值分組,分組列列值相等等的為一一組,并并對每一一組進行行統(tǒng)計。對查詢詢結(jié)果集集分組的的目的是是為了細細化集合合函數(shù)的的作用對對象。GROUPBY子句的語語法格式式為:GROUPBY列名 HAVING篩選條件件表達式式其中:“BY列名”是是按列名名指定的的字段進進行分組組,將該該字段值值相同的的記錄組組成一組組,對每每一組記記錄進行行匯總計計算并生生成一條條記錄?!癏AVING篩選條件

57、件表達式式”表示示對生成成的組篩篩選后再再對滿足足條件的的組進行行統(tǒng)計。SELECT子句的列列名必須須是GROUPBY子句已有有的列名名或是計計算列。 【例5.26】查詢“課課程注冊冊”表中中課程選選課人數(shù)數(shù)4人以上的的各個課課程號和和相應(yīng)的的選課人人數(shù)。代碼如下下:USEstudentGOSELECT課程號,COUNT(*)AS選課人數(shù)數(shù)FROM課程注冊冊GROUPBY課程號HAVINGCOUNT(*)=4GO將上述代代碼在查查詢分析析器中輸輸入并執(zhí)執(zhí)行,結(jié)果如圖圖5-36所示。HAVING與WHERE子句的區(qū)區(qū)別在于于作用的對象不不同。HAVING作用于組組,選擇擇滿足條件的的組,WHER

58、E子句作用用于表,選擇滿足條條件的記記錄。圖5-36分組統(tǒng)計計3.使用COMPUTE子句COMPUTE子句對查查詢結(jié)果果集中的的所有記記錄進行行匯總統(tǒng)統(tǒng)計,并并顯示所所有參加加匯總記記錄的詳詳細信息息。使用用語法格格式如下下COMPUTE集合函數(shù)數(shù) BY列名其中:集合函數(shù)數(shù),例如如SUM()、AVG()、COUNT()等。“BY列名”按按指定“列名”字段進進行分組組計算,并顯示示被統(tǒng)計計記錄的的詳細信信息。BY選項必須須與ORDERBY子句一起起使用?!纠?.27】查詢所有有學(xué)生所所有成績績的總和和。代碼如下下:USEstudentGOSELECT*FROM課程注冊冊O(shè)RDERBY學(xué)號COMP

59、UTE SUM(成績)GO在查詢分分析器中中輸入并并執(zhí)行上述代碼碼,結(jié)果果如圖5-37所示,在最最后一行行,有一一條匯總記錄。圖5-37COMPUTE計算【例5.28】對每個學(xué)學(xué)生的所所有課程程的成績績求和,并顯示示詳細記記錄。代碼如下下:USEstudentGOSELECT*FROM課程注冊冊O(shè)RDERBY學(xué)號COMPUTE SUM(成績) BY學(xué)號GO上述代碼碼中COMPUTE BY子句之前前使用了了ORDERBY子句,原原因是必必須先按按分類字字段排序序之后才才能使用用COMPUTE BY子句進行行分類匯匯總。COMPUTE BY與GROUPBY子句的區(qū)區(qū)別在于于:前者者既顯示示統(tǒng)計記記

60、錄又顯顯示詳細細記錄,后者僅僅顯示分分組統(tǒng)計計的匯總總記錄。將上述述代碼在在查詢分分析器中中輸入并并執(zhí)行,結(jié)果如如圖5-38所示。圖5-38學(xué)生成績績匯總5.2.6用查詢結(jié)結(jié)果生成成新表在實際的的應(yīng)用系系統(tǒng)中,用戶有有時需要要將查詢詢結(jié)果保保存成一一個表,這個功功能可以以通過SELECT語句中的的INTO子句實現(xiàn)現(xiàn)。INTO子句語法法格式如如INTO新表名其中:新表名是是被創(chuàng)建建的新表表,查詢詢的結(jié)果果集中的的記錄將添添加到此此表中。新表的字字段由結(jié)結(jié)果集中中的字段段列表決決定。如果表名名前加“#”則創(chuàng)建的的表為臨臨時表。用戶必須須擁有該該數(shù)據(jù)庫庫中建表表的權(quán)限限。INTO子句不能能與COMP

溫馨提示

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

評論

0/150

提交評論