第六章 SQL查詢語(yǔ)言的使用_第1頁(yè)
第六章 SQL查詢語(yǔ)言的使用_第2頁(yè)
第六章 SQL查詢語(yǔ)言的使用_第3頁(yè)
第六章 SQL查詢語(yǔ)言的使用_第4頁(yè)
第六章 SQL查詢語(yǔ)言的使用_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第六章 SQL查詢語(yǔ)言的使用6.1 SQL基礎(chǔ)知識(shí)n定義:定義:SQL是結(jié)構(gòu)化查詢語(yǔ)言的縮寫,是關(guān)系是結(jié)構(gòu)化查詢語(yǔ)言的縮寫,是關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)數(shù)據(jù)語(yǔ)言。數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)數(shù)據(jù)語(yǔ)言。nSQL語(yǔ)言的核心是查詢,同時(shí)它還擁有數(shù)據(jù)定語(yǔ)言的核心是查詢,同時(shí)它還擁有數(shù)據(jù)定義和數(shù)據(jù)修改功能。義和數(shù)據(jù)修改功能。nSQL的使用方式:的使用方式:q以命令方式交互使用,又稱為以命令方式交互使用,又稱為交互式交互式SQL;q嵌入程序設(shè)計(jì)語(yǔ)言中以程序方式使用,又稱為嵌入程序設(shè)計(jì)語(yǔ)言中以程序方式使用,又稱為嵌入嵌入式式SQL。6.2 SQL的數(shù)據(jù)定義功能n創(chuàng)建表q格式:格式:CREATE TABLE CREATE TABLE

2、FREE ( FREE ( 1 (,小數(shù)小數(shù)) NULL|NOT NULL ) NULL|NOT NULL CHECK CHECK ERROR ERROR DEFAULT DEFAULT PRIMARY KEY|UNIQUE PRIMARY KEY|UNIQUE ,2 q說(shuō)明:說(shuō)明:n此命令中可以使用的數(shù)據(jù)類型有此命令中可以使用的數(shù)據(jù)類型有C(n)C(n)、N(nN(n,d)d)、D D、T T、L L、M M、G G等。等。nPRIMARY KEYPRIMARY KEY:用于定義主索引,:用于定義主索引,只能用于數(shù)只能用于數(shù)據(jù)庫(kù)表;據(jù)庫(kù)表;nCHECKERRORCHECKERROR:用于定義

3、有效性規(guī)則和出錯(cuò):用于定義有效性規(guī)則和出錯(cuò)提示信息,提示信息,只能用于數(shù)據(jù)庫(kù)表;只能用于數(shù)據(jù)庫(kù)表;nDEFAULTDEFAULT:用于定義默認(rèn)值,:用于定義默認(rèn)值,只能用于數(shù)據(jù)庫(kù)只能用于數(shù)據(jù)庫(kù)表表;nFREEFREE:用于指明所建表是一個(gè)自由表,不添:用于指明所建表是一個(gè)自由表,不添加到當(dāng)前數(shù)據(jù)庫(kù)中加到當(dāng)前數(shù)據(jù)庫(kù)中nNULLNULL或或NOT NULLNOT NULL;用于說(shuō)明屬性允許或不允;用于說(shuō)明屬性允許或不允許為空值;許為空值;nUNIQUEUNIQUE:用于建立候選索引,但不是惟一索:用于建立候選索引,但不是惟一索引。引。q實(shí)例實(shí)例1 1:用此命令建立一自由表:用此命令建立一自由表“圖

4、書圖書”表。表。圖書(總編號(hào)圖書(總編號(hào) C(6)C(6),分類號(hào),分類號(hào) C(8)C(8),書名,書名 C(16)C(16),作者,作者 C(6)C(6),出版單位,出版單位 C(20)C(20),單價(jià),單價(jià) N(6,2)N(6,2)),其中總編號(hào)是候選索引。),其中總編號(hào)是候選索引。q解答:解答:crea table crea table 圖書圖書 free (free (總編號(hào)總編號(hào) C(6) C(6) UNIQUE,UNIQUE,分類號(hào)分類號(hào) C(8),C(8),書名書名 C(16),C(16),作者作者 C(6),C(6),出版單位出版單位 C(20),C(20),單價(jià)單價(jià) N(6N

5、(6,2)2)n實(shí)例實(shí)例2:用此命令在圖書管理數(shù)據(jù)庫(kù)下建立:用此命令在圖書管理數(shù)據(jù)庫(kù)下建立“新新圖書圖書”表。表。 新新圖書(總編號(hào)圖書(總編號(hào) C(6),書名,書名 C(16),作者,作者 C(6),出版單位出版單位 C(20),出版日期,出版日期 D,單價(jià),單價(jià) N(6,2)),),其中總編號(hào)是主索引,為單價(jià)字段添加有效性規(guī)其中總編號(hào)是主索引,為單價(jià)字段添加有效性規(guī)則,并且單價(jià)字段的值大于則,并且單價(jià)字段的值大于0,輸入出錯(cuò),給出,輸入出錯(cuò),給出錯(cuò)提示:錯(cuò)提示:“單價(jià)是正數(shù)!單價(jià)是正數(shù)!”。解答:解答:crea table crea table 新圖書新圖書 ( (總編號(hào)總編號(hào) C(6)

6、C(6) PRIMARY KEY, PRIMARY KEY, 書名書名 C(16),C(16),作者作者 C(6),C(6),出版單出版單位位 C(20),C(20),單價(jià)單價(jià) N(6N(6,2) CHECK 2) CHECK 單價(jià)單價(jià)0 ERROR 0 ERROR “單價(jià)是正數(shù)單價(jià)是正數(shù)!”)!”)n修改表的結(jié)構(gòu)修改表的結(jié)構(gòu)1、增加字段增加字段格式:ALTER TABLE ADD (寬度,小數(shù)位) 功能:在表中增加新字段,并定義字段屬性。實(shí)例1:為學(xué)生表增加年齡字段。ALTER TABLE 學(xué)生表 ADD 年齡 N(2)實(shí)例2:為人才庫(kù)的ZYTC.DBF增加一個(gè)數(shù)值型的年齡字段N(2),且加

7、上有效性檢查和錯(cuò)誤信息提示ALTER TABLE ZYTC ADD 年齡 N(2) CHECK 年齡=0 ERROR “年齡應(yīng)大于等于0!” 2、修改字段修改字段格式:ALTER TABLE ALTER (寬度,小數(shù)位)功能:修改表中字段的屬性。例:修改學(xué)生表中年齡字段的屬性為C(3)。ALTER TABLE 學(xué)生表 ALTER 年齡 C(3)3、刪除字段刪除字段ALTER TABLE DROP (寬度,小數(shù)位)例:刪除學(xué)生表中年齡字段。ALTER TABLE 學(xué)生表 DROP 年齡4、修改字段名修改字段名ALTER TABLE RENAME TO 例:將學(xué)生表中學(xué)號(hào)字段名改為學(xué)生學(xué)號(hào)。ALT

8、ER TABLE 學(xué)生表 RENAME 學(xué)號(hào) TO 學(xué)生證號(hào)n刪除表刪除表格式:DROP TABLE 表名功能:直接從磁盤上刪除由表名指定的表文件。q說(shuō)明:n表名所指定的表是數(shù)據(jù)庫(kù)中的表,并且該數(shù)據(jù)庫(kù)是當(dāng)前數(shù)據(jù)庫(kù),則既從磁盤刪除表文件,也從數(shù)據(jù)庫(kù)中刪除該表。n用此命令刪除數(shù)據(jù)庫(kù)中的表時(shí),應(yīng)先打開數(shù)據(jù)庫(kù),然后進(jìn)行刪除。若該表所屬的數(shù)據(jù)庫(kù)不是當(dāng)前庫(kù),使用此命令刪除表時(shí),只從磁盤上刪除了表文件,但記錄在數(shù)據(jù)庫(kù)文件中的信息卻沒有刪除,以后會(huì)出現(xiàn)錯(cuò)誤提示。n若刪除自由表,則直接刪除。q實(shí)例:刪除人才庫(kù)中的ZYTC表。DROP TABLE ZYTC插入數(shù)據(jù)(插入數(shù)據(jù)(INSERT)q格式格式1 1:INS

9、ERT INTO INSERT INTO (1, ) VALUES() VALUES(1, )2)q功能:向指定表中插入記錄。功能:向指定表中插入記錄。q說(shuō)明:說(shuō)明:n要求在命令中給定要插入的具體記錄值;要求在命令中給定要插入的具體記錄值;n屬性名要由一對(duì)圓括號(hào)括起來(lái);屬性名要由一對(duì)圓括號(hào)括起來(lái);n在在VALUESVALUES后的一對(duì)圓括號(hào)內(nèi)給出具體的記錄值;后的一對(duì)圓括號(hào)內(nèi)給出具體的記錄值;n在在VALUESVALUES后列出的具體值要與表名后指定的字段后列出的具體值要與表名后指定的字段名一一對(duì)應(yīng)。名一一對(duì)應(yīng)。q實(shí)例:向?qū)嵗合駽JDACJDA表中插入記錄。表中插入記錄。INSERT INT

10、O CJDA(INSERT INTO CJDA(編號(hào)編號(hào), ,成果名稱成果名稱, ,成果類別成果類別, ,成果出處成果出處) VALUES(sy02030,Vf) VALUES(sy02030,Vf談?wù)?論文論文,計(jì)算機(jī)應(yīng)用計(jì)算機(jī)應(yīng)用) )q格式格式2 2:INSERT INTO INSERT INTO FROM ARRAY FROM ARRAY |FROM MEMVAR|FROM MEMVARq說(shuō)明:說(shuō)明:nFROM ARRAY FROM ARRAY 從所指定的數(shù)組中插入從所指定的數(shù)組中插入記錄的值;記錄的值;nFROM FROM MEMVARMEMVAR根據(jù)與字段名同名的內(nèi)存變量來(lái)根據(jù)與字

11、段名同名的內(nèi)存變量來(lái)插入記錄值;如果同名的內(nèi)存變量不存在插入記錄值;如果同名的內(nèi)存變量不存在, ,那那么相應(yīng)的字段值為默認(rèn)值或空值。么相應(yīng)的字段值為默認(rèn)值或空值。更新數(shù)據(jù)(更新數(shù)據(jù)(UPDATE)q格式:格式:UPDATE UPDATE SET SET =1, = WHERE WHERE q功能:更新指定數(shù)據(jù)表中滿足條件的記錄的值。功能:更新指定數(shù)據(jù)表中滿足條件的記錄的值。q說(shuō)明:說(shuō)明:n一次可更新表中一個(gè)或多個(gè)字段的值;一次可更新表中一個(gè)或多個(gè)字段的值;n需更新的字段在需更新的字段在SETSET短語(yǔ)后列出;短語(yǔ)后列出;n用用WHEREWHERE短語(yǔ)限定對(duì)滿足條件的記錄進(jìn)行更新;短語(yǔ)限定對(duì)滿足

12、條件的記錄進(jìn)行更新;若無(wú)此短語(yǔ),則默認(rèn)對(duì)表中的全部記錄進(jìn)行若無(wú)此短語(yǔ),則默認(rèn)對(duì)表中的全部記錄進(jìn)行更新。更新。6.3 SQL的數(shù)據(jù)查詢功能n格式:格式:略略。n基本形式:基本形式:SELECTFROMWHERESELECTFROMWHERE,多個(gè)查詢,多個(gè)查詢塊可嵌套使用。塊可嵌套使用。n注意:必須掌握的短語(yǔ)的含義:注意:必須掌握的短語(yǔ)的含義:qSELECTSELECT說(shuō)明要查詢的數(shù)據(jù);說(shuō)明要查詢的數(shù)據(jù);qFROMFROM說(shuō)明要查詢的數(shù)據(jù)來(lái)自哪個(gè)或哪些表,即說(shuō)明要查詢的數(shù)據(jù)來(lái)自哪個(gè)或哪些表,即可以對(duì)單個(gè)或多個(gè)表進(jìn)行查詢;可以對(duì)單個(gè)或多個(gè)表進(jìn)行查詢;qWHEREWHERE說(shuō)明查詢的條件,即選擇記錄

13、的條件;說(shuō)明查詢的條件,即選擇記錄的條件;qGROUP BYGROUP BY用于對(duì)查詢結(jié)果進(jìn)行分組;用于對(duì)查詢結(jié)果進(jìn)行分組;qHAVINGHAVING短語(yǔ)必須接在短語(yǔ)必須接在GROUP BYGROUP BY的后面使用,用的后面使用,用來(lái)限定分組必須滿足的條件;來(lái)限定分組必須滿足的條件;qORDER BYORDER BY短語(yǔ)用來(lái)對(duì)最終的查詢結(jié)果進(jìn)行排序。短語(yǔ)用來(lái)對(duì)最終的查詢結(jié)果進(jìn)行排序。qDISTINCT DISTINCT 消除重復(fù)的記錄。消除重復(fù)的記錄。qAS AS 給查詢結(jié)果的列名重新命名。給查詢結(jié)果的列名重新命名。簡(jiǎn)單查詢n基于基于單個(gè)表單個(gè)表的查詢,得到的查詢結(jié)果數(shù)據(jù)來(lái)自的查詢,得到的查

14、詢結(jié)果數(shù)據(jù)來(lái)自一個(gè)一個(gè)表。表。格式:格式:SELECT DISTINCT SELECT DISTINCT FROM FROM WHERE WHERE n例例1 1:從學(xué)生表中查詢學(xué)號(hào),姓名,出生日期。:從學(xué)生表中查詢學(xué)號(hào),姓名,出生日期。 SELE SELE 學(xué)號(hào),姓名,出生日期學(xué)號(hào),姓名,出生日期 FROM FROM 學(xué)生表學(xué)生表n例例2 2:從學(xué)生表中查詢錄取分?jǐn)?shù)大于:從學(xué)生表中查詢錄取分?jǐn)?shù)大于600600分的學(xué)分的學(xué)生的學(xué)號(hào),姓名。生的學(xué)號(hào),姓名。 SELE SELE 學(xué)號(hào),姓名學(xué)號(hào),姓名 FROM FROM 學(xué)生表學(xué)生表 WHERE WHERE 錄取錄取分?jǐn)?shù)分?jǐn)?shù)600600例3:從選課

15、表中查詢學(xué)號(hào),課程號(hào),成績(jī)。SELE * FROM 選課表n去掉學(xué)號(hào)的重復(fù)值SELE DISTINCT 學(xué)號(hào) FROM 選課表例4:從學(xué)生表中查詢學(xué)號(hào),姓名,錄取分?jǐn)?shù)+20。SELE 學(xué)號(hào),姓名,錄取分?jǐn)?shù)+20 AS 新分?jǐn)?shù) FROM 學(xué)生表n確定范圍確定范圍例1:從學(xué)生表查詢分?jǐn)?shù)在600到610的學(xué)生。SELE * FROM 學(xué)生表 WHERE 錄取分?jǐn)?shù) BETWEEN 600 AND 610例2:從學(xué)生表查詢分?jǐn)?shù)不在600到610的學(xué)生。SELE * FROM 學(xué)生表 WHERE 錄取分?jǐn)?shù) NOT BETWEEN 600 AND 610n確定集合確定集合例1:從學(xué)生表查詢分?jǐn)?shù)為610,61

16、2,618,595分的學(xué)生。SELE * FROM 學(xué)生表 WHERE 錄取分?jǐn)?shù) IN (610,612,618,595)例2:從學(xué)生表查詢分?jǐn)?shù)不為610,612,618,595分的學(xué)生。SELE * FROM 學(xué)生表 WHERE 錄取分?jǐn)?shù) NOT IN (610,612,618,595)q模糊查詢模糊查詢:%:%表示任意長(zhǎng)度的字符串;表示任意長(zhǎng)度的字符串; _ _表示任意一個(gè)字符或一個(gè)漢字。表示任意一個(gè)字符或一個(gè)漢字。q查詢所有姓張的學(xué)生的學(xué)號(hào),姓名。查詢所有姓張的學(xué)生的學(xué)號(hào),姓名。SELE SELE 學(xué)號(hào)學(xué)號(hào), ,姓名姓名 FROM FROM 學(xué)生表學(xué)生表 WHERE WHERE 姓名姓名

17、 LIKE LIKE 張張%q查詢編號(hào)的第三個(gè)字符為查詢編號(hào)的第三個(gè)字符為8 8的學(xué)生的學(xué)號(hào)的學(xué)生的學(xué)號(hào), ,姓名。姓名。SELE SELE 學(xué)號(hào)學(xué)號(hào), ,姓名姓名 FROM FROM 學(xué)生表學(xué)生表 WHERE WHERE 學(xué)號(hào)學(xué)號(hào) LIKE LIKE _8%_8%q查詢姓名的第二個(gè)字是小的人的學(xué)號(hào),姓名。查詢姓名的第二個(gè)字是小的人的學(xué)號(hào),姓名。SELE SELE 學(xué)號(hào)學(xué)號(hào), ,姓名姓名 FROM FROM 學(xué)生表學(xué)生表 WHERE WHERE 姓名姓名 LIKE LIKE _小小%統(tǒng)計(jì)查詢統(tǒng)計(jì)查詢說(shuō)明:統(tǒng)計(jì)查詢是通過(guò)計(jì)算函數(shù)實(shí)現(xiàn)的,在使說(shuō)明:統(tǒng)計(jì)查詢是通過(guò)計(jì)算函數(shù)實(shí)現(xiàn)的,在使用時(shí)計(jì)算函數(shù)被放

18、在用時(shí)計(jì)算函數(shù)被放在SELECTSELECT短語(yǔ)后。短語(yǔ)后。SQLSQL提供提供的的計(jì)算函數(shù)如下:計(jì)算函數(shù)如下:例1:查詢學(xué)生表中最高錄取分?jǐn)?shù),最低錄取分?jǐn)?shù),平均分?jǐn)?shù)。SELE MAX(錄取分?jǐn)?shù)) AS 最高分, MIN(錄取分?jǐn)?shù)) AS 最低分, AVG(錄取分?jǐn)?shù)) AS 平均分 FROM 學(xué)生表例2:統(tǒng)計(jì)女生的人數(shù)。SELE COUNT(*) AS 女生人數(shù) FROM 學(xué)生表WHERE 性別=女例3:統(tǒng)計(jì)選課表中的學(xué)生人數(shù)。 SELE COUNT(DISTINCT 學(xué)號(hào)) AS 學(xué)生人數(shù) FROM 選課表例4:統(tǒng)計(jì)錄取分?jǐn)?shù)超過(guò)600分的學(xué)生人數(shù)。SELE COUNT(*) AS 分?jǐn)?shù)超過(guò)6

19、00的學(xué)生人數(shù) FROM 學(xué)生表 WHERE 錄取分?jǐn)?shù)600分組查詢分組查詢q說(shuō)明:n使用GROUP BY短語(yǔ)可以實(shí)現(xiàn)分組查詢;n查詢過(guò)程:首先按GROUP BY后面的字段進(jìn)行分組,然后對(duì)每個(gè)分組進(jìn)行統(tǒng)計(jì)查詢。GROUP BY短語(yǔ)通常跟在WHERE短語(yǔ)后,若無(wú)WHERE,則跟在FROM之后。而HAVING 跟在GROUP BY之后。 n若一個(gè)查詢中既有WHERE又有HAVING,則先用WHERE限定表中的記錄,對(duì)滿足條件的記錄進(jìn)行分組,然后用HAVING限定分組,滿足條件的分組才作為查詢的結(jié)果。例1:從選課表中查詢選修各門課程的學(xué)生人數(shù)。SELE 課程號(hào),COUNT(學(xué)號(hào)) AS 選修該課程人

20、數(shù) FROM 選課表 GROUP BY 課程號(hào)例2:從選課表中查詢選修同一門課程超過(guò)4人的課程號(hào)及學(xué)生人數(shù)。SELE 課程號(hào),COUNT(學(xué)號(hào)) AS 選修該課程人數(shù) FROM 選課表 GROUP BY 課程號(hào) HAVING COUNT(*)4等價(jià)于:SELE 課程號(hào),COUNT(學(xué)號(hào)) AS 選修該課程人數(shù) FROM 選課表 GROUP BY 課程號(hào) HAVING 選修該課程人數(shù)4例3:在學(xué)生表中分別查詢男女生的最高錄取分?jǐn)?shù)及平均錄取分?jǐn)?shù)。SELECT 性別,MAX(錄取分?jǐn)?shù)) AS 最高分?jǐn)?shù),AVG(錄取分?jǐn)?shù)) AS 平均分?jǐn)?shù) FROM 學(xué)生表 GROUP BY 性別例4:在學(xué)生表中查詢出

21、男女團(tuán)員的最高錄取分?jǐn)?shù)及最低錄取分?jǐn)?shù)和人數(shù)。SELECT 性別,團(tuán)員,MAX(錄取分?jǐn)?shù)) AS 最高分?jǐn)?shù),MIN(錄取分?jǐn)?shù)) AS 最低分?jǐn)?shù),COUNT(*) AS 人數(shù) FROM 學(xué)生表 WHERE 團(tuán)員 GROUP BY 性別 例5:從選課表中查詢課程號(hào)為c110,c120,c130的最高成績(jī)。SELE 課程號(hào),MAX(成績(jī)) AS 最高分 FROM 選課表 GROUP BY 課程號(hào) HAVING 課程號(hào) IN (c110,c120,c130)等價(jià)于:SELE 課程號(hào),MAX(成績(jī)) AS 最高分 FROM 選課表 WHERE 課程號(hào) IN (c110,c120,c130) GROUP B

22、Y 課程號(hào)例6:在學(xué)生表中分別統(tǒng)計(jì)男女生的人數(shù)。SELE 性別,COUNT(*) AS 人數(shù) FROM 學(xué)生表 GROUP BY 性別n查詢的排序查詢的排序格式:ORDER BY 字段名1ASC|DESC,字段名2ASC|DESC例1:在學(xué)生表中查詢所有男生的記錄,并按錄取分?jǐn)?shù)的降序排。SELE * FROM 學(xué)生表 WHERE 性別=男 ORDER BY 錄取分?jǐn)?shù) DESC例2:在選課表中統(tǒng)計(jì)各門課程的平均成績(jī),查詢的結(jié)果先按平均成績(jī)的降序排,成績(jī)相同的再按課程號(hào)的升序排。SELE 學(xué)號(hào),課程號(hào),AVG(成績(jī)) AS 平均成績(jī) FROM 選課表 GROUP BY 課程號(hào) ORDER BY 平

23、均成績(jī) DESC,課程號(hào)n查詢前面部分記錄查詢前面部分記錄TOP N PERCENT例1:從學(xué)生表中查詢錄取分?jǐn)?shù)最高的2個(gè)學(xué)生的記錄。SELE * TOP 2 FROM 學(xué)生表 ORDER BY 錄取分?jǐn)?shù) DESC例2:從學(xué)生表中查詢出錄取分?jǐn)?shù)最高的前30%的學(xué)生記錄。SELE * TOP 30 PERCENT FROM 學(xué)生表 ORDER BY 錄取分?jǐn)?shù) DESC聯(lián)接查詢:聯(lián)接查詢:是一類基于多個(gè)表的查詢,查詢的結(jié)果數(shù)據(jù)出自多個(gè)表,即FROM之后有多個(gè)表。注意:nSELECT之后的多個(gè)字段可以來(lái)自不同的表,如果不同的表中含有相同的字段名,就必須用”別名.字段名”引用。n兩個(gè)表通過(guò)相同的字段名

24、進(jìn)行聯(lián)接,兩個(gè)表中同名字段的值相等是聯(lián)接條件,將其置于WHERE短語(yǔ)后,只有滿足條件時(shí)才出現(xiàn)在查詢結(jié)果中。例1:從授課表和課程表中查詢各個(gè)教師擔(dān)任課程的課程號(hào)及課程名。SELE 教師號(hào),授課表.課程號(hào),課程名 FROM 授課表,課程表 WHERE 授課表.課程號(hào)=課程表.課程號(hào)例2:對(duì)上例用別名來(lái)簡(jiǎn)化。SELE 教師號(hào),AA.課程號(hào),課程名 FROM 授課表 AA,課程表 BB WHERE AA.課程號(hào)=BB.課程號(hào)注意:在定義別名時(shí),不能加定界符。例3:查詢各個(gè)教師的教師號(hào),姓名,所上課程號(hào),課程名。SELE AA.教師號(hào),姓名,BB.課程號(hào),課程名 FROM 教師表 AA,授課表 BB,課

25、程表 CC WHERE AA.教師號(hào)=BB.教師號(hào) AND BB.課程號(hào)=CC.課程號(hào)例4:查詢劉雨的學(xué)號(hào),姓名,選修的課程的課程號(hào)及成績(jī)。SELE 學(xué)生表.學(xué)號(hào),姓名,課程號(hào),成績(jī) FROM 學(xué)生表,選課表 WHERE 學(xué)生表.學(xué)號(hào)=選課表.學(xué)號(hào) AND 姓名=劉雨自聯(lián)接查詢:自聯(lián)接查詢:將同一個(gè)表與自身進(jìn)行聯(lián)接,稱為自聯(lián)接。注意:在實(shí)現(xiàn)自聯(lián)接操作時(shí),必須為表起別名。注意:在實(shí)現(xiàn)自聯(lián)接操作時(shí),必須為表起別名。例1:查詢錄取分?jǐn)?shù)大于“王小平”的錄取分?jǐn)?shù)的學(xué)生的學(xué)號(hào)、姓名和錄取分?jǐn)?shù)。SELE A.學(xué)號(hào),A.姓名,A.錄取分?jǐn)?shù) FROM 學(xué)生表 A,學(xué)生表 B WHERE A.錄取分?jǐn)?shù)B.錄取分?jǐn)?shù)

26、 AND B.姓名=王小平例2:查詢與王小平性別相同的學(xué)生的學(xué)號(hào),姓名,性別。SELE A.學(xué)號(hào),A.姓名,A.性別 FROM 學(xué)生表 A,學(xué)生表 B WHERE A.性別=B.性別 AND B.姓名=王小平超聯(lián)接查詢:超聯(lián)接查詢:基于多個(gè)表的查詢。超聯(lián)接有:左聯(lián)接、右聯(lián)接、內(nèi)聯(lián)接和全聯(lián)接。n左聯(lián)接:在結(jié)果表中包含第一個(gè)表中滿足條件的所有記錄,如果第二個(gè)表中有滿足聯(lián)接條件的記錄,則返回相應(yīng)的值,否則返回空值。n右聯(lián)接:在結(jié)果表中包含第二個(gè)表中滿足條件的所有記錄,如果第一個(gè)表中有滿足聯(lián)接條件的記錄,則返回相應(yīng)的值,否則返回空值。n內(nèi)連接n全連接q相應(yīng)短語(yǔ):nINNER JOIN=JOIN,是內(nèi)聯(lián)

27、接;nLEFT JOIN為左聯(lián)接;nRIGHT JOIN為右聯(lián)接;nFULL JOIN為全聯(lián)接;nON后面是聯(lián)接條件。q注意:ON短語(yǔ)要緊接在JOIN短語(yǔ)后面,WHERE短語(yǔ)置于ON短語(yǔ)的后面。例1(內(nèi)聯(lián)接):查詢王小平的學(xué)號(hào),姓名,選修的課程號(hào),成績(jī)。SELE 學(xué)生表.學(xué)號(hào),姓名,課程號(hào),成績(jī) FROM 學(xué)生表 JOIN 選課表 ON 學(xué)生表.學(xué)號(hào)=選課表.學(xué)號(hào) WHERE 姓名=王小平 等價(jià)于:SELE 學(xué)生表.學(xué)號(hào),姓名,課程號(hào),成績(jī) FROM 學(xué)生表 , 選課表 WHERE 學(xué)生表.學(xué)號(hào)=選課表.學(xué)號(hào) AND 姓名=王小平 例2(左聯(lián)接):查詢所有教師的教師號(hào),姓名,所上課程的課程號(hào)。

28、SELE 教師表.教師號(hào),姓名,課程號(hào) FROM 教師表 LEFT JOIN 授課表 ON 教師表.教師號(hào)=授課表.教師號(hào)例3(右聯(lián)接):查詢上了課的教師的教師號(hào),姓名,課程號(hào)。SELE 教師表.教師號(hào),姓名,課程號(hào) FROM 教師表 RIGHT JOIN 授課表 ON 教師表.教師號(hào)=授課表.教師號(hào)例4(全聯(lián)接):查詢上了課的教師的教師號(hào),姓名,課程號(hào)。SELE 教師表.教師號(hào),姓名,課程號(hào) FROM 教師表 FULL JOIN 授課表 ON 教師表.教師號(hào)=授課表.教師號(hào)嵌套查詢:嵌套查詢:是一類基于多個(gè)表的查詢,是指相關(guān)的條件涉及多個(gè)關(guān)系。注意:n在嵌套查詢中,有兩個(gè)SELECTFROM

29、查詢塊,即內(nèi)層查詢塊和外層查詢塊,但它的最終查詢結(jié)果仍只出自由外層查詢的FROM短語(yǔ)后所指定的表;n內(nèi)層查詢塊一定要用一對(duì)圓括號(hào)括起來(lái);n若內(nèi)層查詢的結(jié)果可能多于1個(gè)值,要用運(yùn)算符“IN”,而不用運(yùn)算符“=”;nVF只支持內(nèi)外兩層嵌套查詢;n通配符*表示所有字段;n各種查詢的結(jié)果可以進(jìn)行排序,但只能對(duì)最終查詢結(jié)果進(jìn)行。例1:查詢與王小平性別相同的學(xué)生的情況。SELE * FROM 學(xué)生表 WHERE 性別=(SELE 性別 FROM 學(xué)生表 WHERE 姓名=王小平)例2:查詢錄取分?jǐn)?shù)最高的學(xué)生的學(xué)號(hào),姓名,錄取分?jǐn)?shù)。SELE 學(xué)號(hào),姓名,錄取分?jǐn)?shù) FROM 學(xué)生表 WHERE 錄取分?jǐn)?shù)=(SELE MAX(錄

溫馨提示

  • 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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論