資源描述:
《SQLServer數(shù)據(jù)庫的查詢和視圖.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、第4章數(shù)據(jù)庫的查詢和視圖4.1數(shù)據(jù)庫的查詢4.2視圖4.1數(shù)據(jù)庫的查詢下面介紹SELECT語句,它是T-SQL的核心。語法主體格式如下:SELECT<輸出列>/*指定查詢結(jié)果輸出列*/[INTO新表]/*指定查詢結(jié)果存入新表*/[FROM{<表源>}[,...]]/*指定查詢?cè)矗罕砘蛞晥D*/[WHERE<條件>]/*指定查詢條件*/[GROUPBY<分組條件>]/*指定查詢結(jié)果分組條件*/[HAVING<分組統(tǒng)計(jì)條件>]/*指定查詢結(jié)果分組統(tǒng)計(jì)條件*/[ORDERBY<排序順序>]/*指定查詢結(jié)果排序順序*/4.1.1選擇查詢結(jié)果輸出列1.選擇所有列使用“*”表示選擇一個(gè)表或視
2、圖中的所有列?!纠?.1】查詢pxscj數(shù)據(jù)庫中xsb表的所有記錄。T-SQL命令如下:USEpxscjSELECT*FROMxsb4.1.1選擇查詢結(jié)果輸出列執(zhí)行結(jié)果如圖4.1所示。4.1.1選擇查詢結(jié)果輸出列2.選擇一個(gè)表中指定的列可選擇一個(gè)表中的部分列,各列名之間要以逗號(hào)分隔?!纠?.2】查詢xsb表中計(jì)算機(jī)專業(yè)學(xué)生的學(xué)號(hào)、姓名和總學(xué)分。T-SQL命令如下:SELECT學(xué)號(hào),姓名,總學(xué)分FROMxsbWHERE專業(yè)='計(jì)算機(jī)'4.1.1選擇查詢結(jié)果輸出列3.定義列別名當(dāng)希望查詢結(jié)果中的列使用自己選擇的列標(biāo)題時(shí),可以AS更改列標(biāo)題名,該列標(biāo)題稱為該列的別名?!纠?.3】查詢
3、xsb表中計(jì)算機(jī)系同學(xué)的學(xué)號(hào)、姓名和總學(xué)分,查詢結(jié)果中各列的標(biāo)題分別指定為number、name和mark。T-SQL命令如下:SELECT學(xué)號(hào)ASnumber,姓名ASname,總學(xué)分ASmarkFROMxsbWHERE專業(yè)='計(jì)算機(jī)'執(zhí)行結(jié)果如圖4.2所示。4.1.1選擇查詢結(jié)果輸出列也可以使用“列別名=表達(dá)式”更改列標(biāo)題。例如:SELECTnumber=學(xué)號(hào),name=姓名,mark=總學(xué)分FROMxsbWHERE專業(yè)='計(jì)算機(jī)'當(dāng)自定義的列標(biāo)題中含有空格時(shí),必須使用引號(hào)將標(biāo)題括起來。例如:SELECT'Studentnumber'=學(xué)號(hào),姓名AS'Studentname
4、',mark=總學(xué)分FROMxsbWHERE專業(yè)='計(jì)算機(jī)'4.1.1選擇查詢結(jié)果輸出列4.替換查詢結(jié)果中的數(shù)據(jù)在對(duì)表進(jìn)行查詢時(shí),有時(shí)希望對(duì)所查詢的某些列得到的數(shù)據(jù)進(jìn)行變換。要替換查詢結(jié)果中的數(shù)據(jù),則可使用CASE表達(dá)式,格式為:CASEWHEN條件1THEN表達(dá)式1WHEN條件2THEN表達(dá)式2……ELSE表達(dá)式END4.1.1選擇查詢結(jié)果輸出列【例4.4】查詢xsb表中計(jì)算機(jī)系各同學(xué)的學(xué)號(hào)、姓名和總學(xué)分,對(duì)其總學(xué)分按以下規(guī)則進(jìn)行替換,列標(biāo)題更改為“等級(jí)”。若總學(xué)分為空值,則替換為“尚未選課”;若總學(xué)分小于50,則替換為“不及格”;若總學(xué)分在50與52之間,則替換為“合格”;
5、若總學(xué)分大于52,則替換為“優(yōu)秀”。T-SQL命令如下:SELECT學(xué)號(hào),姓名,等級(jí)=CASEWHEN總學(xué)分ISNULLTHEN'尚未選課'WHEN總學(xué)分<50THEN'不及格'WHEN總學(xué)分>=50and總學(xué)分<=52THEN'合格'ELSE'優(yōu)秀'ENDFROMxsbWHERE專業(yè)='計(jì)算機(jī)'4.1.1選擇查詢結(jié)果輸出列執(zhí)行結(jié)果如圖4.3所示。4.1.1選擇查詢結(jié)果輸出列5.計(jì)算列值使用SELECT對(duì)列進(jìn)行查詢時(shí),在結(jié)果中除了輸出列值,也可以輸出表達(dá)式值。格式為:SELECT表達(dá)式[,表達(dá)式]【例4.5】查詢通信工程專業(yè)學(xué)生的年齡。T-SQL命令如下,執(zhí)行結(jié)果如圖4.4所示
6、。SELECT學(xué)號(hào),姓名,出生時(shí)間,year(getdate())-year(出生時(shí)間)AS年齡FROMxsbWHERE專業(yè)='通信工程'計(jì)算列值使用算術(shù)運(yùn)算符:+(加)、?(減)、*(乘)、/(除)和%(取余),其中,算術(shù)運(yùn)算符(+、?、*、/)可以用于任何數(shù)字類型的列,包括int、smallint、tinyint、decimal、numeric、float、real、money和smallmoney;%可以用于上述除money和smallmoney以外的數(shù)字類型。4.1.1選擇查詢結(jié)果輸出列圖4.4執(zhí)行結(jié)果4.1.1選擇查詢結(jié)果輸出列6.消除結(jié)果集中的重復(fù)行對(duì)表只選擇其某些
7、列時(shí),可能會(huì)出現(xiàn)重復(fù)行??梢允褂肈ISTINCT關(guān)鍵字消除結(jié)果集中的重復(fù)行,格式為:SELECTDISTINCT
8、ALL列名[,列名…]【例4.6】對(duì)pxscj數(shù)據(jù)庫的xsb表只選擇專業(yè),消除結(jié)果集中的重復(fù)行。代碼如下,執(zhí)行結(jié)果如圖4.5所示。SELECTDISTINCT專業(yè)FROMxsb與DISTINCT相反,當(dāng)使用關(guān)鍵字ALL(默認(rèn)值)時(shí),將保留結(jié)果集的所有行。4.1.1選擇查詢結(jié)果輸出列7.限制結(jié)果集返回行數(shù)如果查詢結(jié)果集的行數(shù)非常多,那么可以使用TOP選項(xiàng)限制其返回的行數(shù)。格式為:[