




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、項(xiàng)目項(xiàng)目5 5表數(shù)據(jù)操作項(xiàng)目項(xiàng)目5 數(shù)據(jù)查詢的實(shí)現(xiàn)數(shù)據(jù)查詢的實(shí)現(xiàn) v 5.1 5.1 項(xiàng)目描述項(xiàng)目描述v 5.2 5.2 技術(shù)要點(diǎn)技術(shù)要點(diǎn)v 5.3 5.3 在在OnlineCSOnlineCS數(shù)據(jù)庫(kù)中實(shí)現(xiàn)單表查詢數(shù)據(jù)庫(kù)中實(shí)現(xiàn)單表查詢 v 5.4 5.4 在在OnlineCSOnlineCS數(shù)據(jù)庫(kù)中連接查詢數(shù)據(jù)庫(kù)中連接查詢 v 5.5 5.5 在在OnlineCSOnlineCS數(shù)據(jù)庫(kù)中嵌套查詢數(shù)據(jù)庫(kù)中嵌套查詢 v 5.6 5.6 在在OnlineCSOnlineCS數(shù)據(jù)庫(kù)中組合查詢數(shù)據(jù)庫(kù)中組合查詢 v 5.7 5.7 在在OnlineCSOnlineCS數(shù)據(jù)庫(kù)中數(shù)據(jù)庫(kù)中T-SQLT-SQL的
2、可視化操作的可視化操作 v 5.8 5.8 項(xiàng)目支撐知識(shí)項(xiàng)目支撐知識(shí) v 5.9 5.9 本章小結(jié)本章小結(jié) v 5.10 5.10 拓展訓(xùn)練拓展訓(xùn)練 5.1 項(xiàng)目描述項(xiàng)目描述v 當(dāng)數(shù)據(jù)庫(kù)創(chuàng)建好之后,用戶為了實(shí)現(xiàn)某種用途而只查詢數(shù)當(dāng)數(shù)據(jù)庫(kù)創(chuàng)建好之后,用戶為了實(shí)現(xiàn)某種用途而只查詢數(shù)據(jù)的一部分內(nèi)容,其他不需要的內(nèi)容不顯示出來,這就需據(jù)的一部分內(nèi)容,其他不需要的內(nèi)容不顯示出來,這就需要用要用SELECTSELECT查詢語句實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)表的信息進(jìn)行查查詢語句實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)表的信息進(jìn)行查詢操作。詢操作。v 用戶不僅可以對(duì)單表查詢,還可以多表連接查詢以及更為用戶不僅可以對(duì)單表查詢,還可以多表連接查
3、詢以及更為復(fù)雜的查詢?cè)O(shè)置。復(fù)雜的查詢?cè)O(shè)置。 5.2 技術(shù)要點(diǎn)技術(shù)要點(diǎn)v 5.2.1 5.2.1 數(shù)據(jù)查詢的方法數(shù)據(jù)查詢的方法v 數(shù)據(jù)查詢的方法主要有兩種:一種方法是在數(shù)據(jù)查詢的方法主要有兩種:一種方法是在SQL Server SQL Server Management StudioManagement Studio管理器中實(shí)現(xiàn)界面方式查詢;一種是利管理器中實(shí)現(xiàn)界面方式查詢;一種是利用用T-SQLT-SQL語言的語言的SELECTSELECT語句查詢。語句查詢。 v 5.2.2 T-SQL5.2.2 T-SQL語言語言v 在在SQL ServerSQL Server中,可以用中,可以用SELEC
4、TSELECT語句查詢。語句查詢。SELECT ALL|DISTINCTTOP n PERCENTFROM數(shù)據(jù)源數(shù)據(jù)源,.nWHEREWHEREGROUP BY HAVINGORDER BY ASC|DESC5.3 在在OnlineCS數(shù)據(jù)庫(kù)中實(shí)現(xiàn)單表查詢數(shù)據(jù)庫(kù)中實(shí)現(xiàn)單表查詢選擇表中的若干列選擇表中的若干列查詢指定列查詢指定列查詢?nèi)苛胁樵內(nèi)苛胁樵兘?jīng)過計(jì)算的值查詢經(jīng)過計(jì)算的值設(shè)置列的別名設(shè)置列的別名 查詢指定列查詢指定列 v 【例例5.15.1】查詢?nèi)w學(xué)生的姓名與學(xué)號(hào)查詢?nèi)w學(xué)生的姓名與學(xué)號(hào). . SELECT Sname,SnoFROM Students查詢?nèi)苛胁樵內(nèi)苛衯 【例例5.
5、25.2】查詢?nèi)w的學(xué)生的詳細(xì)記錄查詢?nèi)w的學(xué)生的詳細(xì)記錄. .SELECT *FROM Students查詢經(jīng)過計(jì)算的值查詢經(jīng)過計(jì)算的值v 【例例5.35.3】查詢?nèi)w學(xué)生的姓名及其年齡查詢?nèi)w學(xué)生的姓名及其年齡. .SELECT Sname,YEAR(GETDATE()-YEAR(Sbirthday)FROM Students Sname (無列名無列名)-張三張三 20李四李四 20王五王五 19李一李一 19王二王二 20張七張七 21張五張五 19設(shè)置列的別名設(shè)置列的別名 v 【例例5.35.3】查詢?nèi)w學(xué)生的姓名及其年齡查詢?nèi)w學(xué)生的姓名及其年齡. .SELECT Sname,YE
6、AR(GETDATE()-YEAR(Sbirthday)AS AgeFROM Students Sname Age-張三張三 20李四李四 20王五王五 19李一李一 19王二王二 20張七張七 21張五張五 19選擇表中的若干元組選擇表中的若干元組 v 1 1)消除取值重復(fù)的行)消除取值重復(fù)的行v 2 2)限制結(jié)果返回的行數(shù))限制結(jié)果返回的行數(shù)v 3 3)查詢滿足條件的元組)查詢滿足條件的元組消除取值重復(fù)的行消除取值重復(fù)的行 v 【例例5.45.4】對(duì)學(xué)生表只選擇所在系名,消除結(jié)果集中地重復(fù)行對(duì)學(xué)生表只選擇所在系名,消除結(jié)果集中地重復(fù)行SELECT DISTINCT SdeptFROM St
7、udents該語句的執(zhí)行結(jié)果該語句的執(zhí)行結(jié)果: :SdeptSdept計(jì)科系計(jì)科系自動(dòng)化自動(dòng)化國(guó)際貿(mào)易國(guó)際貿(mào)易限制結(jié)果返回的行數(shù)限制結(jié)果返回的行數(shù) v 【例例5.55.5】查詢學(xué)生表前查詢學(xué)生表前5 5個(gè)學(xué)生的信息。個(gè)學(xué)生的信息。SELECT TOP 5 *FROM Students若查詢學(xué)生表前若查詢學(xué)生表前5%5%的學(xué)生信息,則所用語句為:的學(xué)生信息,則所用語句為: SELECT TOP 5 PERCENT *FROM Students查詢滿足條件的元組查詢滿足條件的元組 v 查詢滿足條件的元組可以通過查詢滿足條件的元組可以通過WHEREWHERE子句來實(shí)現(xiàn),子句來實(shí)現(xiàn),WHEREWHER
8、E子句常用的查子句常用的查詢條件見下表詢條件見下表 查詢查詢謂詞謂詞比較比較=;=;=;=;!=;=;!= =或或;!;! 確定范圍確定范圍BETWEEN AND;NOT BETWEEN ANDBETWEEN AND;NOT BETWEEN AND確定集合確定集合IN;NOT ININ;NOT IN字符匹配字符匹配LIKE;IS NOT LIKELIKE;IS NOT LIKE空值空值IS NULL; IS NOT NULLIS NULL; IS NOT NULL多重條件多重條件AND;ORAND;OR比較大小比較大小 v 【例例5.65.6】查詢計(jì)科系系學(xué)生的名單。查詢計(jì)科系系學(xué)生的名單。S
9、ELECT *FROM StudentsWHERE Sdept = 計(jì)科系計(jì)科系v 【例例5.75.7】查詢考試成績(jī)不及格的學(xué)生的學(xué)號(hào)。查詢考試成績(jī)不及格的學(xué)生的學(xué)號(hào)。SELECT DISTINCT SnoFROM SCWHERE Grade60確定范圍確定范圍v 【例例5.85.8】查詢查詢1990-19911990-1991年之間出生的學(xué)生的姓名。年之間出生的學(xué)生的姓名。 SELECT SnameFROM StudentsWHERE YEAR(Sbirthday)BETWEEN 1990 AND 1991確定集合確定集合 v 【例例5.95.9】查詢機(jī)自動(dòng)化、計(jì)科系的學(xué)生姓名查詢機(jī)自動(dòng)化、
10、計(jì)科系的學(xué)生姓名 SELECT SnameFROM StudentsWHERE Sdept IN( 自動(dòng)化,計(jì)科系自動(dòng)化,計(jì)科系)字符匹配字符匹配 v 謂詞謂詞LIKE可以用來進(jìn)行字符串的匹配。其一般語法格式可以用來進(jìn)行字符串的匹配。其一般語法格式如下:如下:v NOT LIKE ESCAPE v 其含義是查找指定的屬性列值與其含義是查找指定的屬性列值與相匹配的元組。相匹配的元組。v 可以是一個(gè)完整的字符串,也可以含有通配符可以是一個(gè)完整的字符串,也可以含有通配符%、_、和和 字符匹配例題字符匹配例題v 【例例5.105.10】查詢所有姓查詢所有姓“李李”的學(xué)生的姓名和學(xué)號(hào)。的學(xué)生的姓名和學(xué)號(hào)
11、。SELECT Sname,SnoFROM StudentsWHERE Sname LIKE 李李%v 【例例5.125.12】查詢課程表中課程名含有查詢課程表中課程名含有“程序程序”的課程情況的課程情況。v 【例例5.115.11】查詢姓查詢姓“張張”、“李李”或或“王王”的學(xué)生的姓名和的學(xué)生的姓名和學(xué)號(hào)。學(xué)號(hào)。SELECT Sname,SnoFROM StudentsWHERE Sname LIKE 張李王張李王%SELECT *FROM CoursesWHERE Canme LIKE %程序程序% ESCAPE 涉及空值的查詢涉及空值的查詢 v 當(dāng)需要判定一個(gè)表達(dá)式的值是否為空值時(shí),使用
12、當(dāng)需要判定一個(gè)表達(dá)式的值是否為空值時(shí),使用ISNULLISNULL關(guān)關(guān)鍵字,其表達(dá)是格式為:鍵字,其表達(dá)是格式為:v IS NOT NULLIS NOT NULL v 【例例5.135.13】查詢課程表中先行可為空的課程名。查詢課程表中先行可為空的課程名。SELECT CnameFROM CoursesWHERE PreCno IS NULL多種條件查詢多種條件查詢 v 邏輯運(yùn)算邏輯運(yùn)算ANDAND和和OROR可用來連接多個(gè)查詢條件,構(gòu)成一個(gè)復(fù)可用來連接多個(gè)查詢條件,構(gòu)成一個(gè)復(fù)雜的查詢條件。雜的查詢條件。 v 【例例5.145.14】查詢計(jì)科系的女生名字。查詢計(jì)科系的女生名字。SELECT S
13、nameFROM StudentsWHERE Sdept =計(jì)科系計(jì)科系A(chǔ)ND Ssex=女女v 【例例5.155.15】查詢選修了查詢選修了C1C1課程或課程或C2C2課程的學(xué)生的學(xué)好及成績(jī)課程的學(xué)生的學(xué)好及成績(jī)SELECT Sno,GradeFROM ScWHERE Cno=C1 OR Cno=C2 使用聚合函數(shù)使用聚合函數(shù) v 聚合函數(shù)用于計(jì)算表中的數(shù)據(jù),返回單個(gè)計(jì)算結(jié)果。聚合函數(shù)用于計(jì)算表中的數(shù)據(jù),返回單個(gè)計(jì)算結(jié)果。 函數(shù)函數(shù)說明說明COUNT(DISTINCT|ALLCOUNT(DISTINCT|ALL)求一列中值的個(gè)數(shù),返回類型整數(shù)求一列中值的個(gè)數(shù),返回類型整數(shù)AVG(DISTIN
14、CT|ALLAVG(DISTINCT|ALL)求一列值的平均值(此列必須是數(shù)值型)求一列值的平均值(此列必須是數(shù)值型)SUM(DISTINCT|ALLSUM(DISTINCT|ALL)計(jì)算一列值的總和(此列必須是數(shù)值型)計(jì)算一列值的總和(此列必須是數(shù)值型)MAX(DISTINCT|ALLMAX(DISTINCT|ALL)求一列值中的最大值求一列值中的最大值MIN(DISTINCT|ALLMIN(DISTINCT|ALL)求一列值中的最小值求一列值中的最小值聚合函數(shù)例題聚合函數(shù)例題v 【例例5.175.17】查詢學(xué)生總?cè)藬?shù)。查詢學(xué)生總?cè)藬?shù)。SELECT Count(*)FROM Students
15、v 【例例5.195.19】查詢選修了查詢選修了C1C1號(hào)課程的學(xué)生最高分?jǐn)?shù)號(hào)課程的學(xué)生最高分?jǐn)?shù)v 【例例5.185.18】查詢選修了課程的學(xué)生人數(shù)。查詢選修了課程的學(xué)生人數(shù)。SELECT Count(DISTINCT Sno)FROM StudentsSELECT MAX(Grade)FROM SCWHERE Cno=C1對(duì)查詢結(jié)果分組對(duì)查詢結(jié)果分組 v 【5.205.20】查詢各個(gè)課程號(hào)及相應(yīng)的選修人數(shù)查詢各個(gè)課程號(hào)及相應(yīng)的選修人數(shù)SELECT Cno Count(Sno)FROM ScGROUP BY Cnov 【例例5.225.22】查詢選修了兩門以上課程的學(xué)生學(xué)號(hào)與課程數(shù)。查詢選修了
16、兩門以上課程的學(xué)生學(xué)號(hào)與課程數(shù)。v 【例例5.215.21】輸出每個(gè)學(xué)生的學(xué)號(hào)及其各門課程的總成績(jī)。輸出每個(gè)學(xué)生的學(xué)號(hào)及其各門課程的總成績(jī)。SELECT Sno 學(xué)號(hào)學(xué)號(hào) ,SUM(Grade) 總成績(jī)總成績(jī)FROM SCGROUP BY SnoSELECT Sno ,Count(Sno)FROM SCGROUP BY SnoHAVING COUNT(*)2 對(duì)查詢結(jié)果排序?qū)Σ樵兘Y(jié)果排序 v 【例例 5.235.23】 查詢學(xué)生選課成績(jī),查詢結(jié)果按成績(jī)降序排查詢學(xué)生選課成績(jī),查詢結(jié)果按成績(jī)降序排列,相同成績(jī)的按照學(xué)號(hào)升序排列。列,相同成績(jī)的按照學(xué)號(hào)升序排列。SELECT * FROM SCOR
17、DER BY Grade DESC , Sno ASCv 【例例 5.245.24】 查詢選修課程數(shù)大于等于查詢選修課程數(shù)大于等于2 2的學(xué)生的學(xué)號(hào),平的學(xué)生的學(xué)號(hào),平均成績(jī)和選課門數(shù),并按平均成績(jī)降序排列。均成績(jī)和選課門數(shù),并按平均成績(jī)降序排列。SELECT SNO AS 學(xué)號(hào),學(xué)號(hào), AVG(GRADE)AS 平均成績(jī),平均成績(jī), COUNT(*)AS 選課門數(shù)選課門數(shù) FROM SC GROYP BY SNO HAVING COUNT(*)大于等于)大于等于2ORDER BY AVG(GRADE) DESC5.4 在在OnlineCS數(shù)據(jù)庫(kù)中連接查詢數(shù)據(jù)庫(kù)中連接查詢v 連接是二元運(yùn)算,可
18、以對(duì)兩個(gè)或多個(gè)表進(jìn)行查詢,結(jié)果集連接是二元運(yùn)算,可以對(duì)兩個(gè)或多個(gè)表進(jìn)行查詢,結(jié)果集通常是含有參加連接運(yùn)算的兩個(gè)表(或多個(gè)表)的指定列通常是含有參加連接運(yùn)算的兩個(gè)表(或多個(gè)表)的指定列的表。的表。 v 在實(shí)際運(yùn)用中,多數(shù)情況下用戶查詢的列都來自多個(gè)表,在實(shí)際運(yùn)用中,多數(shù)情況下用戶查詢的列都來自多個(gè)表,把涉及多個(gè)表的查詢稱為連接查詢。把涉及多個(gè)表的查詢稱為連接查詢。v 在在T-SQLT-SQL語言中,連接查詢有兩大類表示形式,一是符合語言中,連接查詢有兩大類表示形式,一是符合SQLSQL標(biāo)準(zhǔn)連接謂詞的表示形式,二是標(biāo)準(zhǔn)連接謂詞的表示形式,二是T-SQLT-SQL擴(kuò)展的使用關(guān)鍵擴(kuò)展的使用關(guān)鍵詞詞JO
19、INJOIN的表示形式。的表示形式。 謂詞連接謂詞連接v 在在SELECTSELECT語句的語句的WHEREWHERE子句中使用比較運(yùn)算符給出連接條子句中使用比較運(yùn)算符給出連接條件對(duì)表進(jìn)行連接的表示形式,稱為謂詞連接表示形式件對(duì)表進(jìn)行連接的表示形式,稱為謂詞連接表示形式v 【例例5.255.25】查找每個(gè)學(xué)生及其選修課程的情況。查找每個(gè)學(xué)生及其選修課程的情況。 SELECT Students.*,SC.*FROM Students ,SCWHERE Students.Sno=SC.Snov 【例例5.265.26】自然連接查詢。自然連接查詢。SELECT Students.*,SC.*,Gra
20、deFROM Students ,SCWHERE Students.Sno=SC.Snov 【例例5.275.27】查詢選修了查詢選修了“數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用”的計(jì)科系系的的計(jì)科系系的學(xué)生學(xué)號(hào)和姓名。學(xué)生學(xué)號(hào)和姓名。SELECT Students.Sno,SnameFROM Students ,SC,CoursesWHERE Students.Sno=SC.Sno AND Courses.Con=SC.Cno AND Cname =數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用AND Sdept=計(jì)科系計(jì)科系以以JOIN關(guān)鍵字指定的連接關(guān)鍵字指定的連接 v 用關(guān)鍵自合并數(shù)據(jù)連接的簡(jiǎn)單語法為:用關(guān)
21、鍵自合并數(shù)據(jù)連接的簡(jiǎn)單語法為: SELECT 表列表列FROM INNER|LEFT|RIGHTOUTERJOIN,.ON說明:說明:INNERINNER表示內(nèi)連接表示內(nèi)連接 OUTER OUTER表示外連接表示外連接 CROSS JOIN CROSS JOIN表示交叉連接表示交叉連接 內(nèi)連接內(nèi)連接v 【例例5.285.28】用用JOINJOIN關(guān)鍵字表達(dá)下列查詢,插敘每個(gè)學(xué)生的關(guān)鍵字表達(dá)下列查詢,插敘每個(gè)學(xué)生的情況以及選修的情況。情況以及選修的情況。SELECT Students.*,Cno,GradeFROM Students JOIN SC ON Students.Sno=SC.Sno
22、v 【例例5.295.29】用用JOINJOIN關(guān)鍵字表達(dá)下列查詢,查詢選修了關(guān)鍵字表達(dá)下列查詢,查詢選修了“數(shù)據(jù)數(shù)據(jù)庫(kù)原理原理及應(yīng)用庫(kù)原理原理及應(yīng)用”的計(jì)科系的學(xué)生學(xué)號(hào)和姓名。的計(jì)科系的學(xué)生學(xué)號(hào)和姓名。SELECT Students.Sno,SnameFROM Students JOIN SC ON Students.Sno=SC.Sno JOIN Courses ON SC.Cno=Courses.CnoWHERE Cname = 數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用AND Sdept=機(jī)科系機(jī)科系自連接自連接 v 【例例5.305.30】查詢每一門課的間接先行課(即先行課的先行查詢每一門課的
23、間接先行課(即先行課的先行課)。課)。 SELECT A.Cno,B.PreCnoFROM Courses A, Courses BWHERE A.PreCno=B.Cno外連接外連接 v 外聯(lián)包括以下三種外聯(lián)包括以下三種v 左外連接左外連接(LEFT OUTER JOIN)(LEFT OUTER JOIN);結(jié)果表中除了包括滿足;結(jié)果表中除了包括滿足連接條件的行外連接條件的行外 還包括坐標(biāo)的所有行。還包括坐標(biāo)的所有行。v 右外連接右外連接(RIGHT OUTER JOIN):(RIGHT OUTER JOIN):結(jié)果中除了表中包括滿結(jié)果中除了表中包括滿足連接條件的行外還包括游標(biāo)的所有行足連接
24、條件的行外還包括游標(biāo)的所有行v 完全外連接完全外連接(FULL OUTER JOIN):(FULL OUTER JOIN):結(jié)果表中除了包括滿連結(jié)果表中除了包括滿連接條件的行外還包括兩個(gè)表的所有行接條件的行外還包括兩個(gè)表的所有行 外連接外連接v 【例例5.315.31】查找所有學(xué)生情況及其選修任何課程若學(xué)生為查找所有學(xué)生情況及其選修任何課程若學(xué)生為選秀任何課程也要包括其基本情況。選秀任何課程也要包括其基本情況。SELECT Students.*,CnoFROM Students LEFT OUTER JOIN SC ON Students.Sno=SC.Sno v 【例例5.325.32】查找
25、被選修的課程的情況和所有課程的名字。查找被選修的課程的情況和所有課程的名字。SELECT SC.*,CnameFROM SC RIGHT JOIN Courses ON SC.Cno=Courses.Cno 交叉連接交叉連接 v 交叉連接實(shí)際上是將兩個(gè)表驚醒笛卡爾積運(yùn)算,結(jié)果表示交叉連接實(shí)際上是將兩個(gè)表驚醒笛卡爾積運(yùn)算,結(jié)果表示有第一個(gè)表的每行于第二個(gè)表的每行憑借后形成的表,因有第一個(gè)表的每行于第二個(gè)表的每行憑借后形成的表,因此結(jié)果表的行數(shù)等于兩個(gè)表行數(shù)之積。此結(jié)果表的行數(shù)等于兩個(gè)表行數(shù)之積。 v 【例例5.335.33】列出學(xué)生所有可能的選修情況。列出學(xué)生所有可能的選修情況。SELECT S
26、no,Sname,Cno,Cname. FROM Students CROSS JOIN Courses 5.5在在OnlineCS數(shù)據(jù)庫(kù)中嵌套查詢數(shù)據(jù)庫(kù)中嵌套查詢v 在在SQLSQL語言中,一個(gè)語言中,一個(gè)SELECT-FROM-WHERESELECT-FROM-WHERE語句稱為一個(gè)查詢語句稱為一個(gè)查詢塊。將一個(gè)查詢塊嵌套在另一個(gè)查詢塊的塊。將一個(gè)查詢塊嵌套在另一個(gè)查詢塊的WHEREWHERE子句或子句或HAVINGHAVING短語的條件中的查詢稱為嵌套查詢或子查詢。短語的條件中的查詢稱為嵌套查詢或子查詢。v 嵌套查詢一般的求解方法是由里向外處理,即每個(gè)子查嵌套查詢一般的求解方法是由里向外
27、處理,即每個(gè)子查詢?cè)谏弦患?jí)查詢處理之前求解,子查詢的結(jié)果用于建立其詢?cè)谏弦患?jí)查詢處理之前求解,子查詢的結(jié)果用于建立其父查詢的查找條件。父查詢的查找條件。 使用使用IN操作符的嵌套查詢操作符的嵌套查詢v 【例例5.345.34】查詢與查詢與“張三張三”在同一個(gè)系學(xué)習(xí)的學(xué)生的學(xué)號(hào)與姓名在同一個(gè)系學(xué)習(xí)的學(xué)生的學(xué)號(hào)與姓名。 SELECT Sno,SnameFROM StudentsWHERE Sdept INSELECT Sdept FROM Students WHERE Sname=李一李一【例例5.355.35】查詢選修了查詢選修了“數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用“的學(xué)生的學(xué)號(hào)和姓名。的學(xué)生的學(xué)
28、號(hào)和姓名。 SELECT Sno,SnameFROM StudentsWHERE Sno INSELECT Sno FROM SCWHERE Cno IN(SELECT Cno FROM Courses WHERE Cname= 數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用)使用比較符的嵌套查詢使用比較符的嵌套查詢 v 在在【例例5.345.34】中,由于一個(gè)學(xué)生只能在一個(gè)系學(xué)習(xí),也就中,由于一個(gè)學(xué)生只能在一個(gè)系學(xué)習(xí),也就是說內(nèi)查詢的結(jié)果是一個(gè)值,因此,可以用是說內(nèi)查詢的結(jié)果是一個(gè)值,因此,可以用= =代替代替IN,IN,其其SQLSQL語句如下:語句如下: SELECT Sno,SnameFROM St
29、udentsWHERE Sdept= SELECT Sdept FROM Students WHERE Sname=李一李一使用使用ANY或或ALL操作符的嵌套查詢操作符的嵌套查詢 v 格式為:格式為: ANY|ALL ANY|ALL v 表表5-9 ANY5-9 ANY、ALLALL謂詞與聚合函數(shù)及謂詞與聚合函數(shù)及ININ謂詞的等價(jià)轉(zhuǎn)換關(guān)系謂詞的等價(jià)轉(zhuǎn)換關(guān)系 =或或!=ANYINMAXMIN=MINALLNOT INMINMAX=MAX使用使用ANY或或ALL操作符的嵌套查詢操作符的嵌套查詢v 【例例5.365.36】查詢其他系中比計(jì)科系某一學(xué)生年齡小查詢其他系中比計(jì)科系某一學(xué)生年齡小 即出
30、即出生日期大生日期大 的學(xué)生。的學(xué)生。 SELECT *FROM StudentsWHERE Sbirthday ANY (SELECT SbirthdayFROM StudentsWHERE Sdept= 計(jì)科系計(jì)科系)AND Sdept 計(jì)科系計(jì)科系v 【例例5.375.37】查詢其他系中比計(jì)科系學(xué)生年齡都小的學(xué)生。查詢其他系中比計(jì)科系學(xué)生年齡都小的學(xué)生。SELECT *FROM StudentsWHERE Sbirthday (SELECT MAX(Sbirthday)FROM StudentsWHERE Sdept= 計(jì)科系計(jì)科系)AND Sdept 計(jì)科系計(jì)科系使用使用EXISTS操
31、作符的嵌套查詢操作符的嵌套查詢 v 帶有帶有EXISTSEXISTS謂詞的子查詢不返回任何數(shù)據(jù),只產(chǎn)生邏輯值謂詞的子查詢不返回任何數(shù)據(jù),只產(chǎn)生邏輯值或邏輯假值或邏輯假值 v 【例例5.385.38】查詢選修了查詢選修了C1C1課程的學(xué)生姓名。課程的學(xué)生姓名。 SELECT SnameFROM StudentsWHERE EXISTS (SELECT * FROM SC WHERE Students.Sno=SC.Sno AND Cno=C15. 6 在在OnlineCS數(shù)據(jù)庫(kù)中組合查詢數(shù)據(jù)庫(kù)中組合查詢 v SELECTSELECT語句的查詢結(jié)果是行的集合,所以多個(gè)語句的查詢結(jié)果是行的集合,所以
32、多個(gè)SELECTSELECT語句語句的結(jié)果可進(jìn)行集合操作。集合操作主要包括并操作的結(jié)果可進(jìn)行集合操作。集合操作主要包括并操作UNIONUNION、交操作、交操作INTERSECTINTERSECT和差操作和差操作EXCEPTEXCEPT。T-SQLT-SQL查詢語言的組查詢語言的組合操作符只有合操作符只有UNIONUNION一種,差和交操作還可以通過一種,差和交操作還可以通過NOTEXISTSNOTEXISTS 嵌套查詢完成。嵌套查詢完成。 將兩個(gè)查詢結(jié)果進(jìn)行并計(jì)算將兩個(gè)查詢結(jié)果進(jìn)行并計(jì)算 v 【例例5.415.41】既查詢選修課程既查詢選修課程C1C1的學(xué)生幾集合與選修課程的學(xué)生幾集合與選修
33、課程C2C2的學(xué)生集合的并集。的學(xué)生集合的并集。 SELECT Sno FROM SC WHERE Cno=C1UNIONSELECT Sno FROM SC WHERE Cno=C2SELECT DISTINCT Sno FROM SC WHERE Cno=C1 or Cno=C2;將兩個(gè)查詢結(jié)果進(jìn)行交運(yùn)算將兩個(gè)查詢結(jié)果進(jìn)行交運(yùn)算 v 【例例5.425.42】查詢選修了查詢選修了C1C1課程并且也選修了課程并且也選修了C2C2課程的學(xué)生課程的學(xué)生學(xué)號(hào)。學(xué)號(hào)。 SELECT Sno FROM SC WHERE Cno=C1INTERSECTSELECT Sno FROM SC WHERE Cn
34、o=C2將兩個(gè)查詢結(jié)果進(jìn)行差運(yùn)算將兩個(gè)查詢結(jié)果進(jìn)行差運(yùn)算v 差運(yùn)算符是差運(yùn)算符是EXCEPTEXCEPT。它將屬于第一個(gè)查詢結(jié)果表而不屬于第二。它將屬于第一個(gè)查詢結(jié)果表而不屬于第二個(gè)查詢結(jié)果表的行組成最終的結(jié)果表。個(gè)查詢結(jié)果表的行組成最終的結(jié)果表。 v 【例例5.435.43】查詢選修了查詢選修了C1C1課程但沒有選修課程但沒有選修C2C2課程的學(xué)生學(xué)號(hào)。課程的學(xué)生學(xué)號(hào)。SELECT Sno FROM SC WHERE Cno=C1EXCEPTSELECT Sno FROM SC WHERE Cno=C25.7 在在OnlineCS數(shù)據(jù)庫(kù)中數(shù)據(jù)庫(kù)中T-SQL的可視化操作的可視化操作 v SQL
35、 Server 2005SQL Server 2005的管理界面支持的管理界面支持T-SQLT-SQL的可視化操作,對(duì)的可視化操作,對(duì)于大多數(shù)的于大多數(shù)的T-SQLT-SQL語句都有相應(yīng)的語法模板,用戶可以在語句都有相應(yīng)的語法模板,用戶可以在模板中編寫相應(yīng)的操作語句。使用可視化的編程可以簡(jiǎn)化模板中編寫相應(yīng)的操作語句。使用可視化的編程可以簡(jiǎn)化用戶的編過程,并減少語法錯(cuò)誤。用戶的編過程,并減少語法錯(cuò)誤。 5.5.1 SELECT語句的可視化操作語句的可視化操作v 查詢單個(gè)表的查詢單個(gè)表的SELECTSELECT語句的自動(dòng)生成語句的自動(dòng)生成v 選擇選擇【新查詢編輯器窗口新查詢編輯器窗口】命令后,系統(tǒng)
36、在新的查詢編輯命令后,系統(tǒng)在新的查詢編輯器中自動(dòng)生成器中自動(dòng)生成“學(xué)生學(xué)生”表的表的SELECTSELECT語句語句 v 直接在該模板上修改需查詢的內(nèi)容即可,修改后的查詢編直接在該模板上修改需查詢的內(nèi)容即可,修改后的查詢編輯器如圖輯器如圖 在編輯器中設(shè)計(jì)查詢?cè)诰庉嬈髦性O(shè)計(jì)查詢v 在在SQL Server Management StudioSQL Server Management Studio管理器中,選擇管理器中,選擇【查詢查詢】| |【在編輯器中設(shè)計(jì)查詢?cè)诰庉嬈髦性O(shè)計(jì)查詢】命令,如圖命令,如圖5.45.4所示?;蛘邌嗡尽;蛘邌螕艄ぞ邫诘膿艄ぞ邫诘摹驹诰庉嬈髦性O(shè)計(jì)查詢?cè)诰庉嬈髦性O(shè)計(jì)查詢】圖
37、標(biāo)。圖標(biāo)。 v 打開打開【查詢?cè)O(shè)計(jì)器查詢?cè)O(shè)計(jì)器】對(duì)話框和對(duì)話框和【添加表添加表】對(duì)話框,如圖對(duì)話框,如圖5.55.5所示。所示。【查詢?cè)O(shè)計(jì)器查詢?cè)O(shè)計(jì)器】對(duì)話框中有對(duì)話框中有3 3個(gè)視圖;最上面的個(gè)視圖;最上面的是是【添加表添加表】的視圖,中間是的視圖,中間是【已選擇列已選擇列】的視圖,最下的視圖,最下面的是面的是【SQLSQL語句語句】視圖,視圖,3 3個(gè)視圖相互對(duì)應(yīng),任意一個(gè)視個(gè)視圖相互對(duì)應(yīng),任意一個(gè)視圖的修改都會(huì)引起另外兩個(gè)視圖的相應(yīng)變化圖的修改都會(huì)引起另外兩個(gè)視圖的相應(yīng)變化 v 關(guān)閉關(guān)閉【添加表添加表】對(duì)話框如果需要打開對(duì)話框如果需要打開【添加表添加表】對(duì)話框,對(duì)話框,右擊右擊【查詢?cè)O(shè)計(jì)
38、器查詢?cè)O(shè)計(jì)器】的空白地方,在彈出的快捷菜單選擇的空白地方,在彈出的快捷菜單選擇【添加表添加表】命令即可,在命令即可,在【查詢?cè)O(shè)計(jì)器查詢?cè)O(shè)計(jì)器】打開的個(gè)表中打開的個(gè)表中需要查詢的列前選中復(fù)選框,即需要查詢的列前選中復(fù)選框,即“學(xué)生學(xué)生. .姓名姓名”、“課程課程. .課程名課程名”和和“選修選修. .分?jǐn)?shù)分?jǐn)?shù)”列。選中的列出現(xiàn)在列。選中的列出現(xiàn)在【查詢查詢?cè)O(shè)計(jì)器設(shè)計(jì)器】的的【已選擇列已選擇列】視圖中,如圖視圖中,如圖.6.6所示。所示。 v 要查詢所在系為要查詢所在系為“計(jì)算機(jī)計(jì)算機(jī)”的列,則要添加字的列,則要添加字句,即篩選條件。方法是在句,即篩選條件。方法是在【選擇表選擇表】視圖中選擇視圖中
39、選擇“學(xué)生學(xué)生。所在系。所在系”列,該列出現(xiàn)列,該列出現(xiàn)【已選擇列已選擇列】視圖中。如果不希視圖中。如果不希望該列出現(xiàn)在查詢的返回結(jié)果中,則取消望該列出現(xiàn)在查詢的返回結(jié)果中,則取消【已選擇列已選擇列】視視圖中圖中【輸入輸入】項(xiàng)復(fù)選框。在項(xiàng)復(fù)選框。在【已選列表已選列表】視圖的篩選選列視圖的篩選選列中輸入中輸入“計(jì)科系計(jì)科系”,相應(yīng)的字句被添加到了,相應(yīng)的字句被添加到了【語句語句】視圖中視圖中 v 單擊單擊【查詢?cè)O(shè)計(jì)器查詢?cè)O(shè)計(jì)器】對(duì)話框?qū)υ捒颉敬_定確定】按鈕,則設(shè)計(jì)的按鈕,則設(shè)計(jì)的SELECTSELECT語句出現(xiàn)在查詢編輯器中,代碼如下語句出現(xiàn)在查詢編輯器中,代碼如下 SELECT Courses.Cname, SC.Grade, Students.Sno, Students.Sname, Students.SdeptFROM Courses INNER JOIN SC ON Courses.Cno = SC.Cno INNER JOIN Students ON SC.Sno = Students.SnoWHERE (Stud
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車銷售渠道推廣服務(wù)合同
- 香菇購(gòu)銷合同
- 云存儲(chǔ)技術(shù)及服務(wù)解決方案
- 新材料產(chǎn)業(yè)技術(shù)創(chuàng)新合作項(xiàng)目協(xié)議書范本
- 房屋買賣協(xié)議書合同
- 汽車零件采購(gòu)合同
- 軍婚自愿離婚協(xié)議
- 三年期新型能源科技開發(fā)合作協(xié)議
- 影視制作行業(yè)演員角色表現(xiàn)免責(zé)協(xié)議
- 公司工程裝修合同
- 建筑用真空陶瓷微珠絕熱系統(tǒng)應(yīng)用技術(shù)規(guī)程
- (高清版)DZT 0276.13-2015 巖石物理力學(xué)性質(zhì)試驗(yàn)規(guī)程 第13部分:巖石比熱試驗(yàn)
- (高清版)DZT 0214-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 銅、鉛、鋅、銀、鎳、鉬
- (高清版)DZT 0017-2023 工程地質(zhì)鉆探規(guī)程
- 華為狼性培訓(xùn)課件
- 江蘇省初中美術(shù)學(xué)業(yè)水平考試參考復(fù)習(xí)題庫(kù)(含答案)
- 短視頻運(yùn)營(yíng)實(shí)戰(zhàn):抖音短視頻運(yùn)營(yíng)
- 設(shè)備維保的關(guān)鍵績(jī)效指標(biāo)與評(píng)估
- 杏花鄉(xiāng)衛(wèi)生院崗位說明樣本
- 三亞市崖州中心漁港停泊避風(fēng)水域擴(kuò)建項(xiàng)目 環(huán)評(píng)報(bào)告
- 大數(shù)據(jù)與會(huì)計(jì)單招面試題
評(píng)論
0/150
提交評(píng)論