結(jié)構(gòu)化查詢語(yǔ)言SQL_第1頁(yè)
結(jié)構(gòu)化查詢語(yǔ)言SQL_第2頁(yè)
結(jié)構(gòu)化查詢語(yǔ)言SQL_第3頁(yè)
結(jié)構(gòu)化查詢語(yǔ)言SQL_第4頁(yè)
結(jié)構(gòu)化查詢語(yǔ)言SQL_第5頁(yè)
已閱讀5頁(yè),還剩109頁(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、結(jié)構(gòu)化查詢語(yǔ)言結(jié)構(gòu)化查詢語(yǔ)言SQLSQL8.1 SQL8.1 SQL的概述的概述 SQL:SQL:結(jié)構(gòu)化查詢語(yǔ)言,全稱為結(jié)構(gòu)化查詢語(yǔ)言,全稱為Structured Query LanguageStructured Query Language。(1 1)主要特點(diǎn))主要特點(diǎn) v SQLSQL是一種一體化的語(yǔ)言;是一種一體化的語(yǔ)言;v SQLSQL語(yǔ)言是一種高度非過(guò)程化的語(yǔ)言;語(yǔ)言是一種高度非過(guò)程化的語(yǔ)言;v SQLSQL語(yǔ)言非常簡(jiǎn)潔;語(yǔ)言非常簡(jiǎn)潔;v SQLSQL語(yǔ)言可以直接以命令方式交互使用,也可以嵌入到程語(yǔ)言可以直接以命令方式交互使用,也可以嵌入到程序設(shè)計(jì)語(yǔ)言中以程序方式使用。序設(shè)計(jì)語(yǔ)言中以

2、程序方式使用。(2 2)功能)功能數(shù)據(jù)查詢數(shù)據(jù)查詢 : select: select數(shù)據(jù)定義數(shù)據(jù)定義 : create : create 、dropdrop、 alteralter數(shù)據(jù)操縱數(shù)據(jù)操縱 : insert: insert、 updateupdate、 deletedelete數(shù)據(jù)控制數(shù)據(jù)控制 : grant: grant、 revokerevoke8.1 SQL8.1 SQL的概述的概述SQL功能命令動(dòng)詞數(shù)據(jù)查詢Select數(shù)據(jù)操作插入記錄Insert更新記錄Update刪除記錄Delete數(shù)據(jù)定義定義基本表或索引Create刪除基本表或索引Drop修改基本表或索引Alter數(shù)據(jù)控制

3、授權(quán)Grant收回權(quán)限Revoke(3)SQL語(yǔ)言的語(yǔ)言的9個(gè)命令動(dòng)詞:個(gè)命令動(dòng)詞:“學(xué)生管理學(xué)生管理”數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)8.2 數(shù)據(jù)查詢一、基本查詢二、排序查詢?nèi)?、?jì)算與分組查詢四、帶特殊運(yùn)算符的條件查詢五、利用空值查詢六、嵌套查詢七、別名與自聯(lián)接查詢八、超聯(lián)接查詢九、集合的并運(yùn)算十、查詢中的幾個(gè)特殊選項(xiàng)8.2 數(shù)據(jù)查詢SQL SELECT SQL SELECT 查詢命令的格式:查詢命令的格式:SELECT ALL | DISTINCTTOP SELECT ALL | DISTINCTTOP PERCENT PERCENT.AS AS ;,AS AS ;FROM FROM ,;INNER | LE

4、FT | RIGHT | FULL JOIN INNER | LEFT | RIGHT | FULL JOIN ;ON ON ;INTO TABLE INTO TABLE | TO FILE | TO FILE | TO PRINTER | TO | TO PRINTER | TO SCREEN;SCREEN;WHERE WHERE AND AND ;AND | OR AND | OR AND | OR AND | OR;GROUP BY GROUP BY ,HAVING HAVING ;ORDER BY ORDER BY ASC | DESC,ASC | DESC,ASC | DESCASC

5、 | DESCSQL SELECTSQL SELECT命令看上去非常復(fù)雜,但常用的只有命令看上去非常復(fù)雜,但常用的只有6 6個(gè)子句:個(gè)子句:SELECTSELECT、FROMFROM、WHEREWHERE、GROUP BYGROUP BY、HAVINGHAVING、ORDER BYORDER BY。8.2 數(shù)據(jù)查詢1 1SELECT SELECT 短語(yǔ):用于說(shuō)明要查詢的數(shù)據(jù)。短語(yǔ):用于說(shuō)明要查詢的數(shù)據(jù)。 2 2FROM FROM 短語(yǔ):用于說(shuō)明要查詢的數(shù)據(jù)來(lái)自哪個(gè)或哪些表,可對(duì)單個(gè)表短語(yǔ):用于說(shuō)明要查詢的數(shù)據(jù)來(lái)自哪個(gè)或哪些表,可對(duì)單個(gè)表或多個(gè)表進(jìn)行查詢?;蚨鄠€(gè)表進(jìn)行查詢。3 3WHERE WH

6、ERE 短語(yǔ):用于說(shuō)明查詢條件;如果是多表查詢還可通過(guò)該子句指短語(yǔ):用于說(shuō)明查詢條件;如果是多表查詢還可通過(guò)該子句指明表與表之間的聯(lián)接條件,進(jìn)行聯(lián)接。明表與表之間的聯(lián)接條件,進(jìn)行聯(lián)接。4 4GROUP BY GROUP BY 短語(yǔ):用于對(duì)查詢進(jìn)行分組,可利用它進(jìn)行分組匯總。短語(yǔ):用于對(duì)查詢進(jìn)行分組,可利用它進(jìn)行分組匯總。5 5HAVING HAVING 短語(yǔ):跟隨在短語(yǔ):跟隨在GROUP BY GROUP BY 之后使用,它是用來(lái)限定分組,要求之后使用,它是用來(lái)限定分組,要求只有滿足分組條件的記錄才能進(jìn)行分組查詢。只有滿足分組條件的記錄才能進(jìn)行分組查詢。6 6ORDER BY ORDER BY

7、 短語(yǔ):用于對(duì)查詢的結(jié)果進(jìn)行排序。短語(yǔ):用于對(duì)查詢的結(jié)果進(jìn)行排序。7 7ASAS短語(yǔ):用于指定查詢結(jié)果中字段的新名稱;短語(yǔ):用于指定查詢結(jié)果中字段的新名稱;ASAS前的表達(dá)式可以是一前的表達(dá)式可以是一個(gè)字段名、表達(dá)式、函數(shù)等。個(gè)字段名、表達(dá)式、函數(shù)等。8 8DISTINCTDISTINCT短語(yǔ):用于說(shuō)明該短語(yǔ)將在查詢結(jié)果中去掉重復(fù)值。短語(yǔ):用于說(shuō)明該短語(yǔ)將在查詢結(jié)果中去掉重復(fù)值。9 9INTO TABLEINTO TABLE短語(yǔ):用于說(shuō)明查詢結(jié)果保存何處。短語(yǔ):用于說(shuō)明查詢結(jié)果保存何處。8.2 數(shù)據(jù)查詢常用的常用的SQL SELECT SQL SELECT 語(yǔ)句包含語(yǔ)句包含4 4個(gè)部分:個(gè)部分

8、:SELECT ALL | DISTINCTSELECT ALL | DISTINCT ;FROMFROM ; WHEREWHERE ANDAND; GROUP BYGROUP BY HAVINGHAVING; ORDER BYORDER BY ASC | DESC ASC | DESC 8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢SelectSelect ALL|DISTINCT ALL|DISTINCT FromFrom 數(shù)據(jù)源數(shù)據(jù)源 WhereWhere 查詢條件查詢條件 Group byGroup by 分組關(guān)鍵字分組關(guān)鍵字 HavingHaving 組提取條件組提取條件 Order byOrde

9、r by 排序關(guān)鍵字排序關(guān)鍵字ASC/DESCASC/DESC To fileTo file文件名文件名|into |into 目標(biāo)目標(biāo)|to printer|to screen|to printer|to screen目標(biāo):目標(biāo):into dbf into dbf into array into array into cursor into cursor 8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢 8.2.18.2.1基本查詢基本查詢SQLSQL基本形式:基本形式:SELECT SELECT FROM FROM WHEREWHERE字段名字段名表名表名查詢條件查詢條件8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢1

10、.1.單表查詢單表查詢 (1 1)單表無(wú)條件查詢:)單表無(wú)條件查詢:SELECT SELECT FROMFROM Eg1:Eg1:查詢學(xué)生的全部信息。查詢學(xué)生的全部信息。 selectselect * * fromfrom 學(xué)生信息學(xué)生信息Eg2:Eg2:查詢每個(gè)學(xué)生的學(xué)號(hào)與姓名。查詢每個(gè)學(xué)生的學(xué)號(hào)與姓名。 select select 學(xué)號(hào)學(xué)號(hào), ,姓名姓名 from from 學(xué)生信息學(xué)生信息8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢Eg3:Eg3:顯示表中所有專業(yè)顯示表中所有專業(yè) select select 專業(yè)專業(yè) from from 學(xué)生信息;學(xué)生信息; select select distin

11、ctdistinct 專業(yè)專業(yè) from from 學(xué)生信息學(xué)生信息DISTINCT短語(yǔ)的作用是去掉查詢結(jié)果中的重復(fù)值8.2 數(shù)據(jù)查詢Ex1Ex1:將:將studentstudent表中的專業(yè)信息檢索出來(lái)。表中的專業(yè)信息檢索出來(lái)。Ex2Ex2:將:將studentstudent表中的專業(yè)信息檢索出來(lái),并去掉重復(fù)元組。表中的專業(yè)信息檢索出來(lái),并去掉重復(fù)元組。Ex3Ex3:從:從studentstudent表中檢索出學(xué)生的學(xué)號(hào)、姓名、專業(yè)信息。表中檢索出學(xué)生的學(xué)號(hào)、姓名、專業(yè)信息。Ex4Ex4:查詢:查詢scorescore表中的所有信息。表中的所有信息。方法一:方法一:select select

12、 學(xué)號(hào)學(xué)號(hào) , ,課程編號(hào)課程編號(hào), ,成績(jī)成績(jī) from scorefrom score方法二:方法二: select 專業(yè)專業(yè) from student select distinct 專業(yè)專業(yè) from studentselect 學(xué)號(hào)學(xué)號(hào) ,姓名姓名,專業(yè)專業(yè) from studentselect * from score投影投影8.2 數(shù)據(jù)查詢注意:Select 對(duì)應(yīng)于對(duì)應(yīng)于操作操作去掉重復(fù)元組去掉重復(fù)元組distinct所有屬性所有屬性*,Select后多字段名之間后多字段名之間8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢(2 2)單表?xiàng)l件查詢:)單表?xiàng)l件查詢:SELECT SELECT FR

13、OM FROM WHEREWHERE Eg1 Eg1:檢索學(xué)生成績(jī)表中計(jì)算機(jī)成績(jī)高于檢索學(xué)生成績(jī)表中計(jì)算機(jī)成績(jī)高于8080分的所有記錄。分的所有記錄。 SELECT SELECT * * FROM FROM 學(xué)生成績(jī)學(xué)生成績(jī) WHEREWHERE 計(jì)算機(jī)計(jì)算機(jī)80 80 Eg2 Eg2:從:從scorescore表中檢索出選修了課程編號(hào)為表中檢索出選修了課程編號(hào)為“02”02”的,并的,并且成績(jī)大于且成績(jī)大于8080分的成績(jī)信息。分的成績(jī)信息。select * from score; where 課程編號(hào)課程編號(hào)=02 and 成績(jī)成績(jī)80投影投影選擇選擇8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢 Eg

14、3 Eg3:查詢:查詢studentstudent表中所有男同學(xué)所學(xué)專業(yè)。表中所有男同學(xué)所學(xué)專業(yè)。 Eg4Eg4:從學(xué)生成績(jī)表中檢索出平均分大于:從學(xué)生成績(jī)表中檢索出平均分大于8080分的成績(jī)信息。分的成績(jī)信息。 select select * * from from 學(xué)生成績(jī)學(xué)生成績(jī); ; Where ( Where (英語(yǔ)英語(yǔ)+ +計(jì)算機(jī)計(jì)算機(jī)+ +大學(xué)語(yǔ)文大學(xué)語(yǔ)文+ +政治政治)/4)/4 8080 select distinct 專業(yè)專業(yè) from student;where 性別性別=“男男”8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢Eg5Eg5:檢索出選修了課程編號(hào)為:檢索出選修了課程編號(hào)為

15、“02”02”或或“05”05”的,并且成績(jī)的,并且成績(jī)大于大于8080分的成績(jī)信息。分的成績(jī)信息。Ex1Ex1:從:從studentstudent表中檢索出性別為表中檢索出性別為“男男”且入學(xué)時(shí)間為且入學(xué)時(shí)間為19961996年年9 9月月7 7日的學(xué)生的日的學(xué)生的學(xué)號(hào)、姓名、性別、專業(yè)學(xué)號(hào)、姓名、性別、專業(yè)信息。信息。 select * from score ;where (課程編號(hào)課程編號(hào)=02 or 課程編號(hào)課程編號(hào)=05) and 成績(jī)成績(jī)70select 學(xué)號(hào)學(xué)號(hào),姓名姓名,性別性別,專業(yè)專業(yè);from student ;where 入學(xué)時(shí)間入學(xué)時(shí)間=1996-09-07 and

16、性別性別=“男男”8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢2 2、單表?xiàng)l件查詢:、單表?xiàng)l件查詢: (1 1)selectselect對(duì)應(yīng)對(duì)應(yīng)投影投影操作,操作,wherewhere對(duì)應(yīng)對(duì)應(yīng)選擇選擇操作(注意條件不用操作(注意條件不用forfor)(2 2)條件中,涉及到字符型字段值,加定界符)條件中,涉及到字符型字段值,加定界符(“”)(“”)(3 3)多個(gè)條件之間用)多個(gè)條件之間用and/orand/or相連相連(4 4)一行書寫不下,除最后一行,各行結(jié)尾加分號(hào)()一行書寫不下,除最后一行,各行結(jié)尾加分號(hào)(; ;)注注意意8.2 數(shù)據(jù)查詢2 2、多表聯(lián)接查詢:、多表聯(lián)接查詢:格式格式1: SELEC

17、T 1: SELECT FROM FROM 表表1,1,表表2 2, , ; WHERE WHERE 查詢條件查詢條件 and and 連接條件連接條件( (舊版本舊版本) ) .=.連接條件連接條件引例:根據(jù)學(xué)生信息表和學(xué)生成績(jī)表查詢學(xué)生的學(xué)號(hào)、姓名、引例:根據(jù)學(xué)生信息表和學(xué)生成績(jī)表查詢學(xué)生的學(xué)號(hào)、姓名、性別、專業(yè)和大學(xué)英語(yǔ)信息性別、專業(yè)和大學(xué)英語(yǔ)信息select select cjcj. .學(xué)號(hào)學(xué)號(hào), ,cjcj. .姓名姓名, ,性別性別, ,專業(yè)專業(yè), ,大學(xué)英語(yǔ)大學(xué)英語(yǔ) from cj,xx from cj,xx where where cj.cj.學(xué)號(hào)學(xué)號(hào)=xx.=xx.學(xué)號(hào)學(xué)號(hào)注

18、意注意: :若查詢的某一列在多個(gè)表中出現(xiàn)若查詢的某一列在多個(gè)表中出現(xiàn), ,必須加表名限定必須加表名限定. .8.2 數(shù)據(jù)查詢Eg1:Eg1:檢索出成績(jī)大于檢索出成績(jī)大于8080分的學(xué)號(hào)、姓名、性別和成績(jī)分的學(xué)號(hào)、姓名、性別和成績(jī) 。 * *Eg2:Eg2:檢索選修了課程的學(xué)生信息。檢索選修了課程的學(xué)生信息。 distinctdistinct去掉重復(fù)記錄去掉重復(fù)記錄select distinct student.* ;from student,score;where student.學(xué)號(hào)學(xué)號(hào)=score.學(xué)號(hào)學(xué)號(hào)select student.學(xué)號(hào)學(xué)號(hào),姓名姓名,性別性別,成績(jī)成績(jī); from s

19、tudent,score;where 成績(jī)成績(jī)80 and student.學(xué)號(hào)學(xué)號(hào)=score.學(xué)號(hào)學(xué)號(hào)8.2 數(shù)據(jù)查詢* * Eg3: Eg3:檢索學(xué)號(hào)為檢索學(xué)號(hào)為“199648101”199648101”的學(xué)生姓名以及所的學(xué)生姓名以及所選修的課程名稱和授課教師姓名。選修的課程名稱和授課教師姓名。 select 姓名姓名,課程名稱課程名稱,教師姓名教師姓名;from student,course,score,teacher;where student.學(xué)號(hào)學(xué)號(hào)=score.學(xué)號(hào)學(xué)號(hào) and ;course.課程編號(hào)課程編號(hào)=score.課程編號(hào)課程編號(hào) and; course. 教師編號(hào)教

20、師編號(hào)=teacher.教師編號(hào)教師編號(hào) and;student.學(xué)號(hào)學(xué)號(hào)=1996468101說(shuō)明:說(shuō)明:From短語(yǔ):后面接多個(gè)表時(shí),兩個(gè)表之間用短語(yǔ):后面接多個(gè)表時(shí),兩個(gè)表之間用逗號(hào)逗號(hào)隔開。隔開。聯(lián)接條件:兩個(gè)表進(jìn)行聯(lián)接查詢的前提是一定有相同的字段名。聯(lián)接條件:兩個(gè)表進(jìn)行聯(lián)接查詢的前提是一定有相同的字段名。 表名表名1.字段名字段名=表名表名2.字段名字段名 如:如:“student.學(xué)號(hào)學(xué)號(hào)=score.學(xué)號(hào)學(xué)號(hào)”查詢條件:成績(jī)查詢條件:成績(jī)80” 為查詢條件為查詢條件聯(lián)接條件和查詢條件用聯(lián)接條件和查詢條件用AND聯(lián)接,并且都放在聯(lián)接,并且都放在where短語(yǔ)中。短語(yǔ)中。select

21、后的字段名,若為多個(gè)表的公共字段,則指明來(lái)源的表。后的字段名,若為多個(gè)表的公共字段,則指明來(lái)源的表。 格式為:格式為:表名表名.字段名字段名8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢格式格式2: 2: Select Select From From 表表1 1 聯(lián)接類型聯(lián)接類型 JoinJoin表表2 2 OnOn 聯(lián)接條件表達(dá)式聯(lián)接條件表達(dá)式wherewhere 查詢條件查詢條件 ( (新版本新版本) ) Eg1:Eg1:查詢計(jì)算機(jī)和英語(yǔ)均及格的學(xué)生的姓名、專業(yè)和計(jì)算機(jī)查詢計(jì)算機(jī)和英語(yǔ)均及格的學(xué)生的姓名、專業(yè)和計(jì)算機(jī)信息。信息。 Select xx.Select xx.姓名姓名, xx., xx.學(xué)號(hào)

22、學(xué)號(hào),cj.,cj.計(jì)算機(jī)計(jì)算機(jī); ; From cj From cj joinjoin xx xx onon cj. cj.學(xué)號(hào)學(xué)號(hào)=xx.=xx.學(xué)號(hào)學(xué)號(hào); ; WHEREWHERE 計(jì)算機(jī)計(jì)算機(jī)=60 and =60 and 英語(yǔ)英語(yǔ)=60=60二、排序查詢8.2.28.2.2排序查詢排序查詢將查詢的結(jié)果排序,使用將查詢的結(jié)果排序,使用ORDER BYORDER BY短語(yǔ);短語(yǔ);格式:ORDER BY ASC | DESC , ASC | DESCselectfrom where order by 字段名字段名1 asc|desc, 字段名字段名2asc|desc8.2 8.2 數(shù)據(jù)查詢

23、數(shù)據(jù)查詢二、排序查詢Eg1Eg1:按學(xué)生的入學(xué)時(shí)間升序檢索出全部學(xué)生信息。:按學(xué)生的入學(xué)時(shí)間升序檢索出全部學(xué)生信息。Eg2Eg2:檢索學(xué)生信息,按學(xué)生的入學(xué)時(shí)間升序排序,如果入學(xué):檢索學(xué)生信息,按學(xué)生的入學(xué)時(shí)間升序排序,如果入學(xué)時(shí)間相同則按學(xué)生的出生日期降序進(jìn)行排序。時(shí)間相同則按學(xué)生的出生日期降序進(jìn)行排序。 select * from student order by 入學(xué)時(shí)間入學(xué)時(shí)間select * from student ;order by 入學(xué)時(shí)間入學(xué)時(shí)間 asc,出生日期出生日期 desc8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢二、排序查詢order by對(duì)最終結(jié)果進(jìn)行排序,位置在最后子查詢

24、中不允許使用order byasc/desc在排序的字段名后,默認(rèn)為升序按多列排序時(shí),各字段名之間用“,”相隔注注意意8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢四、計(jì)算與分組查詢8.2.38.2.3計(jì)算與分組查詢計(jì)算與分組查詢1 1、簡(jiǎn)單的計(jì)算查詢、簡(jiǎn)單的計(jì)算查詢( (用在用在selectselect中,對(duì)查詢結(jié)果中中,對(duì)查詢結(jié)果中數(shù)數(shù)值型字段值值型字段值進(jìn)行計(jì)算進(jìn)行計(jì)算 ) ) 注注: : as as 新字段名新字段名:給結(jié)果指定字段別名給結(jié)果指定字段別名(1)count (distinct 字段名字段名):統(tǒng)計(jì)數(shù)目統(tǒng)計(jì)數(shù)目 count() : 統(tǒng)計(jì)元組個(gè)數(shù)統(tǒng)計(jì)元組個(gè)數(shù)(2)sum (字段名字段名)

25、:求總和求總和(3)avg (字段名字段名) :求平均值求平均值(4)max (字段名字段名) :求最大值求最大值(5)min (字段名字段名) :求最小值求最小值8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢引例:從引例:從studentstudent表中檢索出性別為表中檢索出性別為“男男” ” 的學(xué)生的的學(xué)生的學(xué)號(hào)、學(xué)號(hào)、姓名、性別、專業(yè)和年齡姓名、性別、專業(yè)和年齡信息。(提示:可以增加表達(dá)信息。(提示:可以增加表達(dá)式作為結(jié)果字段)式作為結(jié)果字段) select select 學(xué)號(hào)學(xué)號(hào), ,姓名姓名, ,性別性別, ,專業(yè)專業(yè),;,;year(date()-year(ye

26、ar(date()-year(出生日期出生日期) ) ; ;from student where from student where 性別性別=男男“為了使字段意義更明確,可以給表達(dá)式取別名。為了使字段意義更明確,可以給表達(dá)式取別名。select 學(xué)號(hào)學(xué)號(hào),姓名姓名,性別性別,專業(yè)專業(yè),;year(date()-year(出生日期出生日期) as 年齡年齡 ;from student ;where 性別性別=“男男”四、計(jì)算與分組查詢Eg1Eg1:統(tǒng)計(jì)授課教師的數(shù)目。:統(tǒng)計(jì)授課教師的數(shù)目。Eg2Eg2:統(tǒng)計(jì):統(tǒng)計(jì)studentstudent表中有多少個(gè)學(xué)生記錄。表中有多少個(gè)學(xué)生記錄。sele

27、ct count(distinct 授課教師授課教師) as 人數(shù)人數(shù) from courseselect count(*) as 人數(shù)人數(shù) from student8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢Eg3Eg3:求學(xué)號(hào)為:求學(xué)號(hào)為19964680011996468001的學(xué)生平均成績(jī)。的學(xué)生平均成績(jī)。Eg4Eg4:求:求scorescore表中的最高分和最低分。表中的最高分和最低分。select max(成績(jī)成績(jī)) as 最高分最高分,min(成績(jī)成績(jī)) as 最低分最低分; from scoreselect avg(成績(jī)成績(jī)) as 平均分平均分 from s

28、core; where 學(xué)號(hào)學(xué)號(hào)=19964680018.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢用在用在selectselect后后count(count(* *) ):計(jì)算關(guān)系中所含元組個(gè)數(shù):計(jì)算關(guān)系中所含元組個(gè)數(shù)as as 新字段名:給計(jì)算結(jié)果指定字段名新字段名:給計(jì)算結(jié)果指定字段名注注意意簡(jiǎn)單的計(jì)算查詢簡(jiǎn)單的計(jì)算查詢四、計(jì)算與分組查詢8.2.38.2.3計(jì)算與分組查詢計(jì)算與分組查詢2 2、分組與計(jì)算查詢、分組與計(jì)算查詢格式:格式: GROUP BYGROUP BY HAVINGHAVING GROUP BYGROUP BY 子句用來(lái)對(duì)查詢結(jié)果進(jìn)行分組,把子句用來(lái)對(duì)查詢結(jié)果進(jìn)行分組,把某一某一列的值

29、相同列的值相同的記錄分在一組,通過(guò)計(jì)算的記錄分在一組,通過(guò)計(jì)算每組每組產(chǎn)生一產(chǎn)生一個(gè)結(jié)果。個(gè)結(jié)果。8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢四、計(jì)算與分組查詢Eg1Eg1:檢索出每個(gè)學(xué)生的學(xué)號(hào)、總分、平均分、最:檢索出每個(gè)學(xué)生的學(xué)號(hào)、總分、平均分、最高分和最低分。高分和最低分。select 學(xué)號(hào)學(xué)號(hào), sum(成績(jī)成績(jī)) as 總分總分,; avg(成績(jī)成績(jī)) as 平均分平均分,; max(成績(jī)成績(jī)) as 最高分最高分,; min(成績(jī)成績(jī)) as 最低分最低分;from score group by 學(xué)號(hào)學(xué)號(hào) 8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢學(xué)號(hào)課程編號(hào)成績(jī)XS0401C00296XS0402C0

30、0884XS0401C00367XS0403C01055XS0402C00782XS0402C00365XS0402C00989XS0401C00775學(xué)號(hào)課程編號(hào)成績(jī)XS0401C00296XS0401C00367XS0401C00775XS0402C00884XS0402C00782XS0402C00365XS0402C00989XS0403C01055學(xué)號(hào)總分平均分最高分最低分XS040116381.29667XS0402320808965XS0403555555558.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢Eg2Eg2:檢索出:檢索出“計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系”的每個(gè)學(xué)生的學(xué)的每個(gè)學(xué)

31、生的學(xué)號(hào)、姓名、總分、平均分、最高分和最低分。號(hào)、姓名、總分、平均分、最高分和最低分。select student.學(xué)號(hào)學(xué)號(hào), 姓名姓名,; sum(成績(jī)成績(jī)) as 總分總分,; avg(成績(jī)成績(jī)) as 平均分平均分,; max(成績(jī)成績(jī)) as 最高分最高分,; min(成績(jī)成績(jī)) as 最低分最低分;from student, score;where student.學(xué)號(hào)學(xué)號(hào)= score.學(xué)號(hào)學(xué)號(hào) and; 專業(yè)專業(yè)=“計(jì)算機(jī)科學(xué)與技術(shù)計(jì)算機(jī)科學(xué)與技術(shù)” group by student.學(xué)號(hào)學(xué)號(hào)學(xué)號(hào)課程編號(hào)成績(jī)XS0401C00296XS0402C00884XS0401C00367

32、XS0403C01055XS0402C00782XS0402C00365XS0402C00989XS0401C00775Eg3:檢索選修課程在:檢索選修課程在3門以上(含門以上(含3門)的每個(gè)學(xué)門)的每個(gè)學(xué)生的學(xué)號(hào)和平均成績(jī),并按平均成績(jī)升序排序生的學(xué)號(hào)和平均成績(jī),并按平均成績(jī)升序排序注意:注意:order by后只能接后只能接字段名字段名,不能接函數(shù)不能接函數(shù)select 學(xué)號(hào)學(xué)號(hào),avg(成績(jī)成績(jī)) as 平均成績(jī)平均成績(jī) from score;group by 學(xué)號(hào)學(xué)號(hào) having count(*)=3;order by 平均成績(jī)平均成績(jī)分組條件分組條件學(xué)號(hào)課程編號(hào)成績(jī)XS0401C0

33、0296XS0401C00367XS0401C00775XS0402C00884XS0402C00782XS0402C00365XS0402C00989XS0403C01055學(xué)號(hào)平均分XS040181.2XS040280學(xué)號(hào)平均分XS040280XS040181.2select 學(xué)號(hào)學(xué)號(hào),avg(成績(jī)成績(jī)) as 平均成績(jī)平均成績(jī) from score;group by 學(xué)號(hào)學(xué)號(hào) having count(*)=3;order by 平均成績(jī)平均成績(jī)學(xué)號(hào)課程編號(hào)成績(jī)XS0401C00296XS0402C00884XS0401C00367XS0403C01055XS0402C00782XS04

34、02C00365XS0402C00989XS0401C00775Eg4:檢索:檢索計(jì)算機(jī)科學(xué)與技術(shù)系計(jì)算機(jī)科學(xué)與技術(shù)系選修課程在選修課程在3門以上門以上(含(含3門)的每個(gè)學(xué)生的學(xué)號(hào)和平均成績(jī),并按平均門)的每個(gè)學(xué)生的學(xué)號(hào)和平均成績(jī),并按平均成績(jī)降序排序成績(jī)降序排序select student. 學(xué)號(hào)學(xué)號(hào),avg(成績(jī)成績(jī)) as 平均成績(jī)平均成績(jī) from student,score;where student.學(xué)號(hào)學(xué)號(hào)= score.學(xué)號(hào)學(xué)號(hào) and; 專業(yè)專業(yè)=“計(jì)算機(jī)科學(xué)與技術(shù)計(jì)算機(jī)科學(xué)與技術(shù)”; group by student. 學(xué)號(hào)學(xué)號(hào) having count(*)=3;ord

35、er by 平均成績(jī)平均成績(jī) desc查詢條件查詢條件分組條件分組條件連接條件連接條件注意:先用注意:先用where選選擇滿足條件的元組,擇滿足條件的元組,然后然后分組,分組,再再計(jì)算,計(jì)算,最后去掉不滿足最后去掉不滿足分組分組條件條件的記錄的記錄Eg5:檢索除:檢索除“商務(wù)英語(yǔ)商務(wù)英語(yǔ)”專業(yè)之外的,專業(yè)之外的,選修課程在選修課程在3門以上門以上(含(含3門)門)的每個(gè)學(xué)生的學(xué)號(hào)、姓名和平均成績(jī),并將結(jié)果按的每個(gè)學(xué)生的學(xué)號(hào)、姓名和平均成績(jī),并將結(jié)果按平均成績(jī)降序排序,保存到表平均成績(jī)降序排序,保存到表aa.dbf中中select student.學(xué)號(hào)學(xué)號(hào),姓名姓名,avg(成績(jī)成績(jī)) as 平

36、均成績(jī)平均成績(jī);from student,score;where student.學(xué)號(hào)學(xué)號(hào)=score.學(xué)號(hào)學(xué)號(hào) and 專業(yè)專業(yè)!=”商務(wù)英語(yǔ)商務(wù)英語(yǔ)”;group by student. 學(xué)號(hào)學(xué)號(hào) having count(*)=3;order by 平均成績(jī)平均成績(jī) descinto table aa8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢Eg6Eg6:求至少有兩名學(xué)生選修的課程的平均分。:求至少有兩名學(xué)生選修的課程的平均分。select 課程編號(hào)課程編號(hào),avg(成績(jī)成績(jī)) as 平均分平均分 from score ;group by 課程編號(hào)課程編號(hào) having count(*)=2注意:

37、先分組,再計(jì)算,最后去掉不滿足分組條件的記錄注意:先分組,再計(jì)算,最后去掉不滿足分組條件的記錄8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢四、計(jì)算與分組查詢Eg7Eg7:檢索出平均分在檢索出平均分在8080分以上的每個(gè)學(xué)生的學(xué)號(hào)、分以上的每個(gè)學(xué)生的學(xué)號(hào)、總分和平均分,并將結(jié)果按學(xué)號(hào)升序排列,保總分和平均分,并將結(jié)果按學(xué)號(hào)升序排列,保存到表存到表xx.dbfxx.dbf中。中。select 學(xué)號(hào)學(xué)號(hào), sum(成績(jī)成績(jī)) as 總分總分,; avg(成績(jī)成績(jī)) as 平均分平均分;from score ;group by 學(xué)號(hào)學(xué)號(hào) having avg(成績(jī)成績(jī))=80;order by 學(xué)號(hào)學(xué)號(hào) into

38、 table xx8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢(1)位置:where后,order by前(2)having子句總是跟在group by子句之后,不可以單獨(dú)使用(3)條件:Where 查詢條件 and 聯(lián)接條件;Group by 字段名 Having 分組條件;(4)先where,再group by,然后計(jì)算,最后having.注注意意分組與計(jì)算查詢分組與計(jì)算查詢8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢8.2.48.2.4帶特殊運(yùn)算符的條件查詢帶特殊運(yùn)算符的條件查詢 v確定范圍確定范圍 Betweenand Betweenand v確定集合確定集合 ininv部分匹配查詢部分匹配查詢 like l

39、ike 字符串匹配運(yùn)算字符串匹配運(yùn)算v不等于不等于 !=!=用在用在where子句中子句中8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢1 1、確定范圍、確定范圍格式:格式:v BETWEENAND BETWEENAND 表示在表示在和和之間,包含界值之間,包含界值v NOT BETWEENAND NOT BETWEENAND 表示表示不不在在和和之間之間8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢Eg1Eg1:查詢?nèi)雽W(xué)時(shí)間在:查詢?nèi)雽W(xué)時(shí)間在19971997年年1 1月月1 1日至日至19991999年年1212月月3030日之間的學(xué)生的信息。日之間的學(xué)生的信息。select * fro

40、m student where;入學(xué)時(shí)間入學(xué)時(shí)間 between 1997-01-01 and1999-12-30select * from student where; 入學(xué)時(shí)間入學(xué)時(shí)間= 1997-01-01 and 入學(xué)時(shí)間入學(xué)時(shí)間=80; and student.學(xué)號(hào)學(xué)號(hào)=score.學(xué)號(hào)學(xué)號(hào)select * from score;where 課程編號(hào)課程編號(hào) not in (04,03) and 成績(jī)成績(jī)60 3 3、部分匹配查詢、部分匹配查詢格式:格式:字段名字段名 like like 字符串常量字符串常量通配符:通配符:% %:0 0個(gè)或多個(gè)字符個(gè)或多個(gè)字符 _ _:一個(gè)字符:一

41、個(gè)字符 當(dāng)不知道完全精確的値時(shí),可以使用當(dāng)不知道完全精確的値時(shí),可以使用LIKELIKE或或NOT LIKENOT LIKE進(jìn)行部分匹配查詢(也稱模糊查詢)。進(jìn)行部分匹配查詢(也稱模糊查詢)。8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢3 3、部分匹配查詢、部分匹配查詢Eg1Eg1:查詢所有姓:查詢所有姓“李李”的學(xué)生的學(xué)號(hào)、姓名、性別、的學(xué)生的學(xué)號(hào)、姓名、性別、專業(yè)專業(yè)。Eg2Eg2:查詢第二個(gè)漢字是:查詢第二個(gè)漢字是“海?!钡膶W(xué)生的學(xué)號(hào)、姓名、的學(xué)生的學(xué)號(hào)、姓名、性別、專業(yè)。性別、專業(yè)。 select 學(xué)號(hào)學(xué)號(hào),姓名姓名,性別性別,專業(yè)專業(yè) from student;w

42、here 姓名姓名 like 李李%select 學(xué)號(hào)學(xué)號(hào),姓名姓名,性別性別,專業(yè)專業(yè) from student;where 姓名姓名 like _海海%8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢4 4、不等于(、不等于(!=!=)Eg1:Eg1:查詢家庭住址在哈爾濱并且不是學(xué)計(jì)算機(jī)查詢家庭住址在哈爾濱并且不是學(xué)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的學(xué)生的信息??茖W(xué)與技術(shù)專業(yè)的學(xué)生的信息。 select * from student;where 家庭住址家庭住址=哈爾濱哈爾濱 and 專業(yè)專業(yè)!=計(jì)算機(jī)科學(xué)與技術(shù)計(jì)算機(jī)科學(xué)與技術(shù)8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢8.2.58.2.5利用空值查詢利用空值查詢 空值空值就是

43、缺值或還沒(méi)有確定值,不能把它理就是缺值或還沒(méi)有確定值,不能把它理解為任何意義的數(shù)據(jù)。解為任何意義的數(shù)據(jù)。格式:格式: IS NULL IS NULL(為空值)(為空值) IS NOT NULL IS NOT NULL(不為空值)(不為空值)不能寫成不能寫成“=NULL”或或“!=NULL” 注意注意8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢Eg1Eg1:查詢出還沒(méi)有確定聯(lián)系方式的學(xué)生記錄。:查詢出還沒(méi)有確定聯(lián)系方式的學(xué)生記錄。Eg2Eg2:查詢已經(jīng)確定了聯(lián)系方式的學(xué)生信息。:查詢已經(jīng)確定了聯(lián)系方式的學(xué)生信息。在在Where Where 短語(yǔ)中短語(yǔ)中, ,需要注意:需要注意:= =或!或!= := :當(dāng)值

44、唯一時(shí)當(dāng)值唯一時(shí)in in 或或 not in :not in :當(dāng)值是一個(gè)集合時(shí)當(dāng)值是一個(gè)集合時(shí)Is null Is null 或或 is not null:is not null:利用空值查詢時(shí)利用空值查詢時(shí)select * from student where 聯(lián)系方式聯(lián)系方式 is nullselect * from student where 聯(lián)系方式聯(lián)系方式 is not null8.2.68.2.6嵌套查詢嵌套查詢(查詢結(jié)果出自一個(gè)表,條件涉及多個(gè)表)(查詢結(jié)果出自一個(gè)表,條件涉及多個(gè)表)1 1帶有帶有ININ或或NOT INNOT IN運(yùn)算符的子查詢運(yùn)算符的子查詢格式:格式:

45、SELECTFROM SELECTFROM 表表1 WHERE 1 WHERE 公共字段名公共字段名 inin ; (SELECT (SELECT 公共字段名公共字段名 FROM FROM 表表2 WHERE)2 WHERE)說(shuō)明:說(shuō)明:在嵌套查詢中有兩層在嵌套查詢中有兩層SELECTFROMWHERESELECTFROMWHERE查詢塊,即內(nèi)層查詢塊和查詢塊,即內(nèi)層查詢塊和外層查詢塊,內(nèi)層查詢也叫子查詢,外層查詢也叫主查詢。外層查詢塊,內(nèi)層查詢也叫子查詢,外層查詢也叫主查詢。在進(jìn)行查詢時(shí),先執(zhí)行子查詢,子查詢形成一個(gè)結(jié)果作為主查詢的條件,在進(jìn)行查詢時(shí),先執(zhí)行子查詢,子查詢形成一個(gè)結(jié)果作為主查

46、詢的條件,再進(jìn)行主查詢。再進(jìn)行主查詢。在子查詢中在子查詢中SELECTSELECT后的字段名必須與主查詢中后的字段名必須與主查詢中ININ短語(yǔ)前面的字段名相同。短語(yǔ)前面的字段名相同。子查詢中不能有子查詢中不能有ORDER BY ORDER BY 排序短語(yǔ)。排序短語(yǔ)。8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢例例8.358.35將所選修了課程的成績(jī)大于將所選修了課程的成績(jī)大于9090分的學(xué)生信息檢索出。分的學(xué)生信息檢索出。SELECT SELECT * * FROM STUDENT ; FROM STUDENT ;WHERE WHERE 學(xué)號(hào)學(xué)號(hào) ININ (SELECT

47、(SELECT 學(xué)號(hào)學(xué)號(hào) FROM SCORE WHERE FROM SCORE WHERE 成績(jī)成績(jī)90)90)等價(jià)于:等價(jià)于:SELECT SELECT DISTINCTDISTINCT STUDENT. STUDENT.* * ; ;FROM STUDENT,SCORE ;FROM STUDENT,SCORE ;WHERE STUDENT.WHERE STUDENT.學(xué)號(hào)學(xué)號(hào)=SCORE.=SCORE.學(xué)號(hào)學(xué)號(hào) AND AND 成績(jī)成績(jī)9090例例8.368.36檢索沒(méi)有選課的學(xué)生信息。檢索沒(méi)有選課的學(xué)生信息。SELECT SELECT * * FROM STUDENT WHERE FR

48、OM STUDENT WHERE 學(xué)號(hào)學(xué)號(hào) NOT IN (SELECT NOT IN (SELECT 學(xué)學(xué)號(hào)號(hào) FROM SCORE)FROM SCORE)8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢* *2 2帶有比較運(yùn)算符的子查詢帶有比較運(yùn)算符的子查詢格式格式SELECTFROMWHERESELECTFROMWHERE比較運(yùn)算符比較運(yùn)算符(SELECTFROMWHERESELECTFROMWHERE)例例8.378.37檢索成績(jī)高于平均分的學(xué)號(hào),成績(jī)。檢索成績(jī)高于平均分的學(xué)號(hào),成績(jī)。SELECT SELECT 學(xué)號(hào)學(xué)號(hào), ,成績(jī)成績(jī) FROM SCORE WHERE FROM SCORE WHERE

49、 成績(jī)成績(jī) (SELECT (SELECT AVG(AVG(成績(jī)成績(jī)) FROM SCORE) FROM SCORE)8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢* *3 3帶有帶有ANYANY、ALLALL、SOMESOME量詞的子查詢量詞的子查詢格式格式SELECTFROMSELECTFROM;WHEREWHEREANY|ALL|SOMEANY|ALL|SOME(SELECTFROMWHERESELECTFROMWHERE)例例8.388.38查詢學(xué)分最高的課程信息。查詢學(xué)分最高的課程信息。方法一:方法一:SELECT SELECT * * FROM COURSE WHERE FROM COURSE

50、WHERE 學(xué)分學(xué)分=ALL =ALL (SELECT (SELECT 學(xué)分學(xué)分 FROM COURSE)FROM COURSE)方法二:方法二:SELECT SELECT * * FROM COURSE WHERE NOT FROM COURSE WHERE NOT 學(xué)分學(xué)分 ANY (SELECT ANY (SELECT 學(xué)學(xué)分分 FROM COURSE)FROM COURSE)方法三:方法三:SELECT SELECT * * FROM COURSE WHERE NOT FROM COURSE WHERE NOT 學(xué)分學(xué)分 SOME (SELECT SOME (SELECT 學(xué)分學(xué)分 F

51、ROM COURSE)FROM COURSE)方法四:方法四:SELECT SELECT * * FROM COURSE WHERE FROM COURSE WHERE 學(xué)分學(xué)分= (SELECT MAX(= (SELECT MAX(學(xué)分學(xué)分) ) FROM COURSE)FROM COURSE)8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢例例8.398.39查詢學(xué)分不是最高的課程信息。查詢學(xué)分不是最高的課程信息。方法一:方法一:SELECT SELECT * * FROM COURSE; FROM COURSE; WHERE WHERE 學(xué)分學(xué)分ANY (SELECT ANY (SELECT 學(xué)分學(xué)分

52、FROM COURSE)FROM COURSE)方法二:方法二:SELECT SELECT * * FROM COURSE ; FROM COURSE ;WHERE WHERE 學(xué)分學(xué)分SOME(SELECT SOME(SELECT 學(xué)分學(xué)分 FROM COURSE)FROM COURSE)8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢* *4 4帶有帶有EXISTSEXISTS(NOT EXISTSNOT EXISTS)謂詞的子查詢)謂詞的子查詢格式格式SELECTFROMSELECTFROM;WHERE NOT EXISTSWHERE NOT EXISTS(SELECTFROMWHERESELECTFR

53、OMWHERE)例例8.408.40查詢所有選修了課程的學(xué)生的學(xué)號(hào),姓名,性別及出查詢所有選修了課程的學(xué)生的學(xué)號(hào),姓名,性別及出生日期。生日期。SELECT SELECT 學(xué)號(hào)學(xué)號(hào), ,姓名姓名, ,性別性別, ,出生日期出生日期 ; ;FROM STUDENT;FROM STUDENT;WHERE EXISTS (SELECT WHERE EXISTS (SELECT * * FROM SCORE WHERE STUDENT. FROM SCORE WHERE STUDENT.學(xué)號(hào)學(xué)號(hào)=SCORE.=SCORE.學(xué)號(hào)學(xué)號(hào)) )8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢例例8.418.41檢索選修的每門

54、課程的成績(jī)都高于或等于檢索選修的每門課程的成績(jī)都高于或等于8585分的學(xué)生分的學(xué)生的學(xué)號(hào)、姓名、和性別的學(xué)號(hào)、姓名、和性別SELECT SELECT 學(xué)號(hào)學(xué)號(hào), ,姓名姓名, ,性別性別 FROM STUDENT WHERE NOT EXISTS;FROM STUDENT WHERE NOT EXISTS;(SELECT (SELECT * * FROM SCORE WHERE STUDENT. FROM SCORE WHERE STUDENT.學(xué)號(hào)學(xué)號(hào)=SCORE.=SCORE.學(xué)號(hào)學(xué)號(hào)) )8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢8.2.78.2.7別名與自聯(lián)接查詢別名與自聯(lián)接查詢格式:格式: 例

55、例8.42 8.42 查詢選課信息中的學(xué)生的姓名,課程名稱和成績(jī)。查詢選課信息中的學(xué)生的姓名,課程名稱和成績(jī)。SELECT SELECT 姓名姓名, ,課程名稱課程名稱, ,成績(jī)成績(jī); ;FROM STUDENT,COURSE, SCORE ;FROM STUDENT,COURSE, SCORE ;WHERE STUDENT.WHERE STUDENT.學(xué)號(hào)學(xué)號(hào)=SCORE.=SCORE.學(xué)號(hào)學(xué)號(hào) AND ;AND ;COURSE.COURSE.課程編號(hào)課程編號(hào)=SCORE.=SCORE.課程編號(hào)課程編號(hào)使用別名:使用別名:SELECT SELECT 姓名姓名, ,課程名稱課程名稱, ,成績(jī)成

56、績(jī); ;FROM STUDENT S,COURSE C,SCORE SC;FROM STUDENT S,COURSE C,SCORE SC;WHERE S.WHERE S.學(xué)號(hào)學(xué)號(hào)=SC.=SC.學(xué)號(hào)學(xué)號(hào) AND;AND;C.C.課程編號(hào)課程編號(hào)=SC.=SC.課程編號(hào)課程編號(hào)8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢例例8.438.43試查詢某門課程的先修課的課程名稱。試查詢某門課程的先修課的課程名稱。SELECT XS1.SELECT XS1.課程編號(hào)課程編號(hào),XS2.,XS2.課程名稱課程名稱; ;FROM FROM 先修課先修課 XS1,XS1,先修課先修課 XS2;XS2;WHERE XS1.

57、WHERE XS1.先修課先修課=XS2.=XS2.課程編號(hào)課程編號(hào)8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢8.2.88.2.8超聯(lián)接查詢超聯(lián)接查詢 超聯(lián)接運(yùn)算是首先保證一個(gè)表中滿足條件的元組都在超聯(lián)接運(yùn)算是首先保證一個(gè)表中滿足條件的元組都在結(jié)果中,然后將滿足聯(lián)接條件的元組與另一個(gè)表中的元組結(jié)果中,然后將滿足聯(lián)接條件的元組與另一個(gè)表中的元組進(jìn)行聯(lián)接,不滿足聯(lián)接條件的則將應(yīng)來(lái)自另一表的屬性置進(jìn)行聯(lián)接,不滿足聯(lián)接條件的則將應(yīng)來(lái)自另一表的屬性置為空值。為空值。v 超聯(lián)接運(yùn)算符:超聯(lián)接運(yùn)算符:“* * =” =” 左聯(lián)接:在結(jié)果表中包含第一個(gè)表中滿足條件的所左聯(lián)接:在結(jié)果表中包含第一個(gè)表中滿足條件的所有記錄;

58、如果有在聯(lián)接條件上匹配的元組,則第二個(gè)表返有記錄;如果有在聯(lián)接條件上匹配的元組,則第二個(gè)表返回相應(yīng)值,否則第二表返回空值?;叵鄳?yīng)值,否則第二表返回空值。“= = * *” ” 右聯(lián)接:在結(jié)果表中包含第二個(gè)表中滿足條件的所右聯(lián)接:在結(jié)果表中包含第二個(gè)表中滿足條件的所有記錄;如果有在聯(lián)接條件上匹配的元組,則第一個(gè)表返有記錄;如果有在聯(lián)接條件上匹配的元組,則第一個(gè)表返回相應(yīng)值,否則第一個(gè)表返回空值?;叵鄳?yīng)值,否則第一個(gè)表返回空值。8.2 8.2 數(shù)據(jù)查詢數(shù)據(jù)查詢基本格式基本格式 :SELECT SELECT ;FROM FROM I1INNERNNER|LEFT|LEFT|RIGHTRIGHT|FU

59、LL JOIN |FULL JOIN 2;ON ON ;WHERE WHERE 說(shuō)明:說(shuō)明:INNER JOININNER JOIN短語(yǔ):等價(jià)于短語(yǔ):等價(jià)于JOINJOIN為普通聯(lián)接。在為普通聯(lián)接。在Visual FoxProVisual FoxPro中稱為內(nèi)中稱為內(nèi)部聯(lián)接。部聯(lián)接。LEFT JOINLEFT JOIN短語(yǔ):為左聯(lián)接。短語(yǔ):為左聯(lián)接。RIGHT JOINRIGHT JOIN短語(yǔ):為右聯(lián)接。短語(yǔ):為右聯(lián)接。FULL JOINFULL JOIN短語(yǔ):為全聯(lián)接。即兩個(gè)表中的記錄不管是否滿足聯(lián)接條件短語(yǔ):為全聯(lián)接。即兩個(gè)表中的記錄不管是否滿足聯(lián)接條件將都在目標(biāo)表或查詢結(jié)果中出現(xiàn),不滿足

60、聯(lián)接條件的記錄對(duì)應(yīng)部分為將都在目標(biāo)表或查詢結(jié)果中出現(xiàn),不滿足聯(lián)接條件的記錄對(duì)應(yīng)部分為NULLNULL。ONON短語(yǔ):用于指定聯(lián)接條件。短語(yǔ):用于指定聯(lián)接條件。注意在超聯(lián)接查詢中,聯(lián)接條件與查詢條件要分開并且放在不同的命注意在超聯(lián)接查詢中,聯(lián)接條件與查詢條件要分開并且放在不同的命令短語(yǔ)后面。令短語(yǔ)后面。四種超聯(lián)接類型,在查詢過(guò)程中,超聯(lián)接類型在四種超聯(lián)接類型,在查詢過(guò)程中,超聯(lián)接類型在FROMFROM短語(yǔ)中給出。短語(yǔ)中給出。v 內(nèi)聯(lián)接。查詢結(jié)果只輸出兩個(gè)表中滿足連接條件的數(shù)據(jù)連接的結(jié)果。這是系統(tǒng)默認(rèn)的連接類型。v 左聯(lián)接。左聯(lián)接輸出左側(cè)表中所有記錄與右側(cè)表中滿足條件的記錄聯(lián)接的結(jié)果,對(duì)于左側(cè)表的

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論