SQL語(yǔ)言基礎(chǔ)基本概念 SQL的數(shù)據(jù)類型基本表的定義刪除及修改數(shù)據(jù)查詢功能數(shù)據(jù)更改功能建立與刪除索引
《SQL語(yǔ)言基礎(chǔ)基本概念 SQL的數(shù)據(jù)類型基本表的定義刪除及修改數(shù)據(jù)查詢功能數(shù)據(jù)更改功能建立與刪除索引》由會(huì)員分享,可在線閱讀,更多相關(guān)《SQL語(yǔ)言基礎(chǔ)基本概念 SQL的數(shù)據(jù)類型基本表的定義刪除及修改數(shù)據(jù)查詢功能數(shù)據(jù)更改功能建立與刪除索引(117頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、會(huì)計(jì)學(xué)1SQL語(yǔ)言基礎(chǔ)語(yǔ)言基礎(chǔ) 基本概念基本概念 SQL的數(shù)據(jù)類型的數(shù)據(jù)類型 基本表的定義刪除及修改基本表的定義刪除及修改 數(shù)據(jù)查詢功能數(shù)據(jù)查詢功能 數(shù)據(jù)更改功能數(shù)據(jù)更改功能 建立與刪除索引建立與刪除索引4.1 4.1 基本概念基本概念n n語(yǔ)言的發(fā)展語(yǔ)言的發(fā)展 n n語(yǔ)言的特點(diǎn)語(yǔ)言的特點(diǎn)n n語(yǔ)言功能概述語(yǔ)言功能概述 第1頁(yè)/共117頁(yè)語(yǔ)言的發(fā)展語(yǔ)言的發(fā)展n n19861986年年1010月由美國(guó)月由美國(guó)ANSI ANSI 公布最早的公布最早的SQLSQL標(biāo)準(zhǔn)。標(biāo)準(zhǔn)。n n19891989年年4 4月,月,ISOISO提出了具備完整性特征的提出了具備完整性特征的SQLSQL,稱為,稱為SQL
2、-89 SQL-89。n n19921992年年1111月,月,ISOISO又公布了新的又公布了新的SQLSQL標(biāo)準(zhǔn),稱標(biāo)準(zhǔn),稱為為SQL-92SQL-92(以上均為關(guān)系形式)。(以上均為關(guān)系形式)。n n 19991999年頒布年頒布SQL-99SQL-99,是,是SQL92SQL92的擴(kuò)展。的擴(kuò)展。第2頁(yè)/共117頁(yè)語(yǔ)言的特點(diǎn)語(yǔ)言的特點(diǎn)n n1.1.一體化。一體化。n n2.2.高度非過(guò)程化。高度非過(guò)程化。n n3.3.簡(jiǎn)潔。簡(jiǎn)潔。n n4.4.使用方式多樣。使用方式多樣。第3頁(yè)/共117頁(yè)語(yǔ)言功能概述語(yǔ)言功能概述SQL功能功能命令動(dòng)詞命令動(dòng)詞數(shù)據(jù)查詢數(shù)據(jù)查詢SELECT數(shù)據(jù)定義數(shù)據(jù)定義C
3、REATE、DROP、ALTER數(shù)據(jù)操縱數(shù)據(jù)操縱INSERT、UPDATE、DELETE數(shù)據(jù)控制數(shù)據(jù)控制GRANT、REVOKE四大功能:數(shù)據(jù)定義功能、數(shù)據(jù)控制功能、數(shù)據(jù)查詢功能和數(shù)據(jù)操縱功能。第4頁(yè)/共117頁(yè)4.2 SQL的數(shù)據(jù)類型的數(shù)據(jù)類型SQL Server SQL Server 為例為例:n n數(shù)值型數(shù)值型 n n字符串型字符串型n n日期時(shí)間型日期時(shí)間型n n貨幣型貨幣型第5頁(yè)/共117頁(yè)數(shù)值型數(shù)值型n n準(zhǔn)確型準(zhǔn)確型準(zhǔn)確型準(zhǔn)確型 n n整數(shù)整數(shù)整數(shù)整數(shù)Bigint:8Bigint:8字節(jié),字節(jié),字節(jié),字節(jié),IntInt:4 4字節(jié)字節(jié)字節(jié)字節(jié)SmallintSmallint:2
4、2字節(jié),字節(jié),字節(jié),字節(jié),TinyintTinyint:1 1字節(jié)字節(jié)字節(jié)字節(jié) BitBit:1 1位,存儲(chǔ)位,存儲(chǔ)位,存儲(chǔ)位,存儲(chǔ)1 1或或或或0 0n n小數(shù)小數(shù)小數(shù)小數(shù)NumericNumeric(p,qp,q)或)或)或)或 DecimalDecimal(p,qp,q),),),),其中:其中:其中:其中:p p為數(shù)字位長(zhǎng)度,為數(shù)字位長(zhǎng)度,為數(shù)字位長(zhǎng)度,為數(shù)字位長(zhǎng)度,q q為小數(shù)位長(zhǎng)度。為小數(shù)位長(zhǎng)度。為小數(shù)位長(zhǎng)度。為小數(shù)位長(zhǎng)度。n n近似型近似型近似型近似型 FloatFloat:8 8字節(jié)字節(jié)字節(jié)字節(jié) RealReal:4 4字節(jié)字節(jié)字節(jié)字節(jié)第6頁(yè)/共117頁(yè)字符串型字符串型n n普
5、通編碼字符串類型普通編碼字符串類型n n統(tǒng)一字符編碼字符串類型統(tǒng)一字符編碼字符串類型n n二進(jìn)制字符串類型二進(jìn)制字符串類型第7頁(yè)/共117頁(yè)普通編碼字符串類型普通編碼字符串類型n nCharChar(n n):定長(zhǎng)存儲(chǔ),定長(zhǎng)存儲(chǔ),n=8000 n=8000 n nVarcharVarchar(n n):不定長(zhǎng)存儲(chǔ)(按實(shí)際長(zhǎng)度):不定長(zhǎng)存儲(chǔ)(按實(shí)際長(zhǎng)度存儲(chǔ)),長(zhǎng)度最大不超過(guò)存儲(chǔ)),長(zhǎng)度最大不超過(guò)n,n=8000 n,n=8000 注:注:n n 為字符個(gè)數(shù)為字符個(gè)數(shù)n nTextText:存儲(chǔ)大于:存儲(chǔ)大于80008000字節(jié)的文本字節(jié)的文本第8頁(yè)/共117頁(yè)統(tǒng)一字符編碼(統(tǒng)一字符編碼(Unic
6、odeUnicode)字符)字符串類型串類型n nncharnchar(n n):定長(zhǎng)存儲(chǔ),定長(zhǎng)存儲(chǔ),n=4000 n=4000 n nnvarcharnvarchar(n n):不定長(zhǎng)存儲(chǔ),長(zhǎng)度最大不):不定長(zhǎng)存儲(chǔ),長(zhǎng)度最大不超過(guò)超過(guò)n,n=4000 n,n=4000 n nntextntext:存儲(chǔ)大于:存儲(chǔ)大于80008000字節(jié)的文本字節(jié)的文本n n特點(diǎn):每個(gè)字符占兩個(gè)字節(jié)特點(diǎn):每個(gè)字符占兩個(gè)字節(jié)第9頁(yè)/共117頁(yè)二進(jìn)制字符串類型二進(jìn)制字符串類型n nBinary(n)Binary(n):固定長(zhǎng)度,:固定長(zhǎng)度,n=8000n=8000。n nVarbinary(n)Varbinary(
7、n):可變長(zhǎng)度,:可變長(zhǎng)度,n n 8000 8000。注:注:n n為二進(jìn)制數(shù)據(jù)的字節(jié)數(shù)為二進(jìn)制數(shù)據(jù)的字節(jié)數(shù)n nimageimage:大容量、可變長(zhǎng)二進(jìn)制字符數(shù)據(jù),:大容量、可變長(zhǎng)二進(jìn)制字符數(shù)據(jù),可用于存儲(chǔ)文件??捎糜诖鎯?chǔ)文件。第10頁(yè)/共117頁(yè)日期時(shí)間型日期時(shí)間型n nDatetimeDatetime:8 8字節(jié),年月日時(shí)分秒毫秒字節(jié),年月日時(shí)分秒毫秒(例:(例:2001/08/03 10:30:00.0002001/08/03 10:30:00.000 )n nSmallDateTimeSmallDateTime:4 4字節(jié),年月日時(shí)分字節(jié),年月日時(shí)分 (例:(例:2001/08/0
8、3 10:30:002001/08/03 10:30:00 )日期、時(shí)間的輸入格式日期、時(shí)間的輸入格式第11頁(yè)/共117頁(yè)貨幣類型貨幣類型n nMoneyMoney:8 8 個(gè)字節(jié),精確到貨幣單位的千個(gè)字節(jié),精確到貨幣單位的千分之十。分之十。n nSmallmoneySmallmoney:4 4 個(gè)字節(jié),精確到貨幣單位個(gè)字節(jié),精確到貨幣單位的千分之十。的千分之十。n n限制到小數(shù)點(diǎn)后限制到小數(shù)點(diǎn)后 4 4 位。位。n n可以帶有適當(dāng)?shù)呢泿欧?hào)。例如,可以帶有適當(dāng)?shù)呢泿欧?hào)。例如,100 100 英英鎊可表示為鎊可表示為 100100。第12頁(yè)/共117頁(yè)4.3 基本表的定義、刪除及修改基本表的
9、定義、刪除及修改 n n基本表的定義與刪除基本表的定義與刪除 n n修改表結(jié)構(gòu)修改表結(jié)構(gòu) 第13頁(yè)/共117頁(yè)基本表的定義與刪除基本表的定義與刪除1 1定義基本表定義基本表 使用使用SQLSQL語(yǔ)言中的語(yǔ)言中的CREATE TABLECREATE TABLE語(yǔ)句實(shí)現(xiàn),其語(yǔ)句實(shí)現(xiàn),其一般格式為:一般格式為:CREATE TABLE CREATE TABLE (列級(jí)完整性約束定義列級(jí)完整性約束定義列級(jí)完整性約束定義列級(jí)完整性約束定義,列級(jí)完整性約束定義列級(jí)完整性約束定義列級(jí)完整性約束定義列級(jí)完整性約束定義,列級(jí)完整性約束定義列級(jí)完整性約束定義列級(jí)完整性約束定義列級(jí)完整性約束定義,表級(jí)完整性約束定義
10、表級(jí)完整性約束定義表級(jí)完整性約束定義表級(jí)完整性約束定義 );第14頁(yè)/共117頁(yè)在列級(jí)完整性約束定義處可以定義的約束在列級(jí)完整性約束定義處可以定義的約束在列級(jí)完整性約束定義處可以定義的約束在列級(jí)完整性約束定義處可以定義的約束n nNOT NULLNOT NULL:限制列取值非空。:限制列取值非空。n nDEFAULTDEFAULT:給定列的默認(rèn)值。:給定列的默認(rèn)值。n nUNIQUEUNIQUE:限制列取值不重。:限制列取值不重。n nCHECKCHECK:限制列的取值范圍。:限制列的取值范圍。n nPRIMARY KEYPRIMARY KEY:指定本列為主碼。:指定本列為主碼。n nFORE
11、IGN KEYFOREIGN KEY:定義本列為引用其他表的外碼。:定義本列為引用其他表的外碼。使用形式為:使用形式為:FOREIGN KEYFOREIGN KEY()REFERENCES REFERENCES ()第15頁(yè)/共117頁(yè)幾點(diǎn)說(shuō)明幾點(diǎn)說(shuō)明n nNOT NULLNOT NULLNOT NULLNOT NULL和和和和DEFAULTDEFAULTDEFAULTDEFAULT只能是列級(jí)完整性約束;只能是列級(jí)完整性約束;只能是列級(jí)完整性約束;只能是列級(jí)完整性約束;n n其他約束均可在表級(jí)完整性約束處定義。其他約束均可在表級(jí)完整性約束處定義。其他約束均可在表級(jí)完整性約束處定義。其他約束均可
12、在表級(jí)完整性約束處定義。n n注意以下幾點(diǎn):注意以下幾點(diǎn):注意以下幾點(diǎn):注意以下幾點(diǎn):n n第一,如果第一,如果第一,如果第一,如果CHECKCHECKCHECKCHECK約束是定義多列之間的取值約束,約束是定義多列之間的取值約束,約束是定義多列之間的取值約束,約束是定義多列之間的取值約束,則只能在表級(jí)完整性約束處定義;則只能在表級(jí)完整性約束處定義;則只能在表級(jí)完整性約束處定義;則只能在表級(jí)完整性約束處定義;n n第二,如果表的主碼由多個(gè)列組成,則也只能在表第二,如果表的主碼由多個(gè)列組成,則也只能在表第二,如果表的主碼由多個(gè)列組成,則也只能在表第二,如果表的主碼由多個(gè)列組成,則也只能在表級(jí)完整
13、性約束處定義,并將主碼列用括號(hào)括起來(lái),級(jí)完整性約束處定義,并將主碼列用括號(hào)括起來(lái),級(jí)完整性約束處定義,并將主碼列用括號(hào)括起來(lái),級(jí)完整性約束處定義,并將主碼列用括號(hào)括起來(lái),即:即:即:即:PRIMARY KEY PRIMARY KEY PRIMARY KEY PRIMARY KEY(列(列(列(列1 1 1 1 ,列,列,列,列2 2 2 2 ););););n n第三,如果在表級(jí)完整性約束處定義外碼,第三,如果在表級(jí)完整性約束處定義外碼,第三,如果在表級(jí)完整性約束處定義外碼,第三,如果在表級(jí)完整性約束處定義外碼,則則則則“FOREIGN KEY(FOREIGN KEY(FOREIGN KEY(
14、FOREIGN KEY()”)”)”)”部分不能省。部分不能省。部分不能省。部分不能省。第16頁(yè)/共117頁(yè)約束定義約束定義n n 列取值非空約束 NOT NULLNOT NULL例:例:sname char(10)NOT NULLsname char(10)NOT NULL第17頁(yè)/共117頁(yè)約束定義(續(xù))約束定義(續(xù))n n 表主碼約束表主碼約束表主碼約束表主碼約束n n在定義列時(shí)定義主碼(僅用于單列主碼)在定義列時(shí)定義主碼(僅用于單列主碼)列定義列定義 PRIMARY KEYPRIMARY KEY例:例:SNO char(7)PRIMARY KEYSNO char(7)PRIMARY K
15、EYn n在在定定義義完完列列時(shí)時(shí)定定義義主主碼碼(用用于于單單列列或或多多列列主碼)主碼)PRIMARY KEYPRIMARY KEY ()例:例:PRIMARY KEY(SNO)PRIMARY KEY(SNO)PRIMARY KEY(SNO PRIMARY KEY(SNO,CNO)CNO)第18頁(yè)/共117頁(yè)約束定義(續(xù))約束定義(續(xù))外碼引用約束外碼引用約束n n指明本表外碼列引用的表及表中的主碼列。指明本表外碼列引用的表及表中的主碼列。FOREIGN KEY()REFERENCES()例:FOREIGN KEY(sno)REFERENCES 學(xué)生表(sno)第19頁(yè)/共117頁(yè)約束定義
16、(續(xù))約束定義(續(xù))n n默認(rèn)值約束默認(rèn)值約束n n格式:格式:DEFAULT DEFAULT 默認(rèn)值默認(rèn)值n n例:定義系的默認(rèn)值為例:定義系的默認(rèn)值為“計(jì)算機(jī)系計(jì)算機(jī)系”。DEFAULT DEFAULT 計(jì)算機(jī)系計(jì)算機(jī)系 第20頁(yè)/共117頁(yè)約束定義(續(xù))約束定義(續(xù))n nCHECKCHECK約束約束n n格式:格式:CHECK(CHECK(約束表達(dá)式約束表達(dá)式)n n例:定義成績(jī)大于等于例:定義成績(jī)大于等于0 0。CHECK(grade=0)CHECK(grade=0)第21頁(yè)/共117頁(yè)約束定義(續(xù))約束定義(續(xù))n nUNIQUEUNIQUE約束約束n n在列級(jí)約束定義(僅用于單列
17、約束)在列級(jí)約束定義(僅用于單列約束)列定義列定義 UNIQUEUNIQUE例:例:SNAME char(7)UNIQUESNAME char(7)UNIQUEn n在表級(jí)約束定義(用于單列或多列組合約束)在表級(jí)約束定義(用于單列或多列組合約束)UNIQUEUNIQUE ()例:例:UNIQUE UNIQUE(SNO(SNO,CNO)CNO)第22頁(yè)/共117頁(yè)創(chuàng)建學(xué)生表創(chuàng)建學(xué)生表CREATE TABLE CREATE TABLE StudentStudent(Sno char(7)PRIMARY KEY,(Sno char(7)PRIMARY KEY,Sname char(10)NOT NU
18、LL,Sname char(10)NOT NULL,Ssex char(2)CHECK(Ssex=Ssex char(2)CHECK(Ssex=男男OR Ssex=OR Ssex=女女),),Sage tinyint CHECK(Sage=15 AND Sage=15 AND Sage0),Ccredit tinyint CHECK(Ccredit0),Semester tinyint CHECK(Semester0),Semester tinyint CHECK(Semester0),Period int CHECK(Period0),Period int CHECK(Period0),PR
19、IMARY KEY(Cno)PRIMARY KEY(Cno)第24頁(yè)/共117頁(yè)創(chuàng)建創(chuàng)建SC表表CREATE TABLE CREATE TABLE SCSC (Sno char(7)NOT NULL,(Sno char(7)NOT NULL,Cno char(10)NOT NULL,Cno char(10)NOT NULL,Grade tinyint CHECK(Grade=0 and Grade tinyint CHECK(Grade=0 and Grade=100),Grade=100),PRIMARY KEY(Sno,Cno),PRIMARY KEY(Sno,Cno),FOREIGN K
20、EY(Sno)REFERENCES Student(Sno),FOREIGN KEY(Sno)REFERENCES Student(Sno),FOREIGN KEY(Cno)REFERENCES Course(Cno)FOREIGN KEY(Cno)REFERENCES Course(Cno)第25頁(yè)/共117頁(yè)刪除表刪除表n n當(dāng)確信不再需要某個(gè)表時(shí),可以將其刪除當(dāng)確信不再需要某個(gè)表時(shí),可以將其刪除n n刪除表時(shí)會(huì)將與表有關(guān)的所有對(duì)象一起刪刪除表時(shí)會(huì)將與表有關(guān)的所有對(duì)象一起刪掉,包括表中的數(shù)據(jù)。掉,包括表中的數(shù)據(jù)。n n刪除表的語(yǔ)句格式為:刪除表的語(yǔ)句格式為:DROP TABLE DROP
21、TABLE ,n n例:刪除例:刪除testtest表的語(yǔ)句為:表的語(yǔ)句為:DROP TABLE testDROP TABLE test第26頁(yè)/共117頁(yè)修改表結(jié)構(gòu)修改表結(jié)構(gòu) n n在定義完表之后,如果需求有變化,比如添加列、在定義完表之后,如果需求有變化,比如添加列、刪除列或修改列定義,可以使用刪除列或修改列定義,可以使用ALTER TABLEALTER TABLE語(yǔ)句語(yǔ)句實(shí)現(xiàn)。實(shí)現(xiàn)。n nALTER TABLEALTER TABLE語(yǔ)句可以對(duì)表添加列、刪除列、修改語(yǔ)句可以對(duì)表添加列、刪除列、修改列的定義、定義主碼、外碼,也可以添加和刪除列的定義、定義主碼、外碼,也可以添加和刪除約束。約束
22、。第27頁(yè)/共117頁(yè)修改表結(jié)構(gòu)語(yǔ)法修改表結(jié)構(gòu)語(yǔ)法ALTER TABLEALTER TABLE ALTER COLUMN ALTER COLUMN|ADD COLUMN|ADD COLUMN|DROP COLUMN|DROP COLUMN|ADD PRIMARY KEY|ADD PRIMARY KEY(列名(列名 ,n n )|ADD FOREIGN KEY|ADD FOREIGN KEY(列名)(列名)REFERNECES REFERNECES 表名(列名)表名(列名)第28頁(yè)/共117頁(yè)示例示例n n例例2 2為為SCSC表添加表添加“修課類別修課類別”列,此列的列,此列的定義為:定義為:
23、XKLB char(4)XKLB char(4)ALTER TABLE SCALTER TABLE SC ADD XKLB char(4)NULL ADD XKLB char(4)NULL 第29頁(yè)/共117頁(yè)示例示例n n例例3 3將新添加的將新添加的XKLBXKLB的類型改為的類型改為 char(6)char(6)。ALTER TABLE SC ALTER COLUMN XKLB char(6)第30頁(yè)/共117頁(yè)示例示例n n例例4 4刪除刪除CourseCourse表的表的PeriodPeriod列。列。ALTER TABLE Course DROP COLUMN Period 第31
24、頁(yè)/共117頁(yè)4.4 數(shù)據(jù)查詢功能數(shù)據(jù)查詢功能 n n查詢語(yǔ)句的基本結(jié)構(gòu)查詢語(yǔ)句的基本結(jié)構(gòu)n n簡(jiǎn)單查詢簡(jiǎn)單查詢n n多表連接查詢多表連接查詢n n子查詢子查詢 第32頁(yè)/共117頁(yè)查詢語(yǔ)句基本格式查詢語(yǔ)句基本格式SELECT SELECT -需要哪些列需要哪些列 FROM FROM -來(lái)自于哪些表來(lái)自于哪些表 WHERE WHERE -根據(jù)什么條件根據(jù)什么條件 GROUP BY GROUP BY HAVING HAVING ORDER BY ORDER BY 第33頁(yè)/共117頁(yè)簡(jiǎn)單查詢簡(jiǎn)單查詢1.選擇表中若干列 第34頁(yè)/共117頁(yè)1.查詢指定的列查詢指定的列n n查詢表中用戶感興趣的部分
25、屬性列。查詢表中用戶感興趣的部分屬性列。n n例例5 5:查詢?nèi)w學(xué)生的學(xué)號(hào)與姓名。:查詢?nèi)w學(xué)生的學(xué)號(hào)與姓名。SELECT SnoSELECT Sno,Sname FROM StudentSname FROM Studentn n例例6 6:查詢?nèi)w學(xué)生的姓名、學(xué)號(hào)和所在系。:查詢?nèi)w學(xué)生的姓名、學(xué)號(hào)和所在系。SELECT SnameSELECT Sname,SnoSno,Sdept Sdept FROM Student FROM Student 第35頁(yè)/共117頁(yè)2.查詢?nèi)苛胁樵內(nèi)苛?n n例例7 7查詢?nèi)w學(xué)生的記錄查詢?nèi)w學(xué)生的記錄SELECT SnoSELECT Sno,Sna
26、meSname,Ssex,Sage,Sdept Ssex,Sage,Sdept FROM StudentFROM Studentn n等價(jià)于:等價(jià)于:SELECT SELECT *FROM Student FROM Student 第36頁(yè)/共117頁(yè)3.查詢經(jīng)過(guò)計(jì)算的列查詢經(jīng)過(guò)計(jì)算的列 n n例例8 8查詢?nèi)w學(xué)生的姓名及其出生年份。查詢?nèi)w學(xué)生的姓名及其出生年份。SELECT SnameSELECT Sname,2006-Sage2006-Sage FROM Student FROM Studentn n例例9 9查詢?nèi)w學(xué)生的姓名和出生年份所在系,并在出生查詢?nèi)w學(xué)生的姓名和出生年份所在
27、系,并在出生年份列前加入一個(gè)列,此列的每行數(shù)據(jù)均為年份列前加入一個(gè)列,此列的每行數(shù)據(jù)均為 出生年份出生年份 常量值。常量值。SELECT SnameSELECT Sname,出生年份出生年份,2006-Sage,2006-Sage FROM Student FROM Student 第37頁(yè)/共117頁(yè)改變列標(biāo)題改變列標(biāo)題 n n語(yǔ)法:語(yǔ)法:列名列名|表達(dá)式表達(dá)式 AS AS 列標(biāo)題列標(biāo)題n n或:或:列標(biāo)題列標(biāo)題 列名列名|表達(dá)式表達(dá)式n n例:例:SELECT Sname SELECT Sname 姓名,姓名,Year of BirthYear of Birth 出生年份出生年份,2006
28、-Sage 2006-Sage 年份,年份,F(xiàn)ROM Student FROM Student 第38頁(yè)/共117頁(yè)簡(jiǎn)單查詢簡(jiǎn)單查詢2.選擇表中若干元組 第39頁(yè)/共117頁(yè)1.消除取值相同的記錄消除取值相同的記錄n n例例1010在修課表中查詢有哪些學(xué)生修了課程,要求列出學(xué)生的在修課表中查詢有哪些學(xué)生修了課程,要求列出學(xué)生的學(xué)號(hào)。學(xué)號(hào)。SELECT Sno FROM SCSELECT Sno FROM SCn n結(jié)果中有重復(fù)的行。結(jié)果中有重復(fù)的行。n n用用DISTINCTDISTINCT關(guān)鍵字可以去掉結(jié)果中的重復(fù)行。關(guān)鍵字可以去掉結(jié)果中的重復(fù)行。n nDISTINCTDISTINCT關(guān)鍵字
29、放在關(guān)鍵字放在SELECTSELECT詞的后邊、目標(biāo)列名序列的前邊。詞的后邊、目標(biāo)列名序列的前邊。SELECT SELECT DISTINCTDISTINCT Sno FROM SC Sno FROM SC第40頁(yè)/共117頁(yè)2.查詢滿足條件的元組查詢滿足條件的元組 查詢條件查詢條件謂謂 詞詞比較運(yùn)算符=,=,=,(或!=)NOT+比較運(yùn)算符 確定范圍BETWEENAND,NOT BETWEENAND確定集合IN,NOT IN字符匹配LIKE,NOT LIKE 空值IS NULL,IS NOT NULL邏輯謂詞)AND,OR第41頁(yè)/共117頁(yè)比較大小比較大小n n例例1111查詢計(jì)算機(jī)系全體
30、學(xué)生的姓名。查詢計(jì)算機(jī)系全體學(xué)生的姓名。SELECT Sname FROM Student SELECT Sname FROM Student WHERE Sdept WHERE Sdept=計(jì)算機(jī)系計(jì)算機(jī)系 n n例例1212查詢年齡在查詢年齡在2020歲以下的學(xué)生的姓名及年齡。歲以下的學(xué)生的姓名及年齡。SELECT Sname,Sage FROM Student SELECT Sname,Sage FROM Student WHERE Sage WHERE Sage 20 20n n例例1313查詢考試成績(jī)有不及格的學(xué)生的學(xué)號(hào)查詢考試成績(jī)有不及格的學(xué)生的學(xué)號(hào) SELECT DISTINCT
31、 Sno FROM SC SELECT DISTINCT Sno FROM SC WHERE Grade WHERE Grade 60 60第42頁(yè)/共117頁(yè)確定范圍確定范圍n n用用BETWEENBETWEENANDAND和和NOT BETWEENNOT BETWEENANDANDn n是邏輯運(yùn)算符,可以用來(lái)查找屬性值在或不在指是邏輯運(yùn)算符,可以用來(lái)查找屬性值在或不在指定范圍內(nèi)的元組,其中定范圍內(nèi)的元組,其中BETWEENBETWEEN后邊指定范圍后邊指定范圍的下限,的下限,ANDAND后邊指定范圍的上限。后邊指定范圍的上限。n nBETWEENBETWEENANDAND的格式為:的格式為
32、:列名|表達(dá)式 NOT BETWEEN 下限值 AND 上限值n n如果列或表達(dá)式的值在如果列或表達(dá)式的值在 不在不在 下限值和上限值范圍下限值和上限值范圍內(nèi),則結(jié)果為內(nèi),則結(jié)果為T(mén)rueTrue,表明此記錄符合查詢條件。,表明此記錄符合查詢條件。第43頁(yè)/共117頁(yè)示例示例n n例例1414查詢年齡在查詢年齡在20202323歲之間的學(xué)生的姓名、所歲之間的學(xué)生的姓名、所在系和年齡。在系和年齡。SELECT Sname,Sdept,Sage FROM Student SELECT Sname,Sdept,Sage FROM Student WHERE Sage WHERE Sage BETWE
33、ENBETWEEN 20 20 ANDAND 23 23n n例例1515查詢年齡不在查詢年齡不在20202323之間的學(xué)生姓名、所在之間的學(xué)生姓名、所在系和年齡。系和年齡。SELECT Sname,Sdept,Sage FROM Student SELECT Sname,Sdept,Sage FROM Student WHERE Sage WHERE Sage NOT BETWEENNOT BETWEEN 20 20 ANDAND 23 23第44頁(yè)/共117頁(yè)確定集合確定集合n n使用使用ININ運(yùn)算符。運(yùn)算符。n n用來(lái)查找屬性值屬于指定集合的元組。用來(lái)查找屬性值屬于指定集合的元組。n
34、n格式為:格式為:列名列名 NOT IN NOT IN(常量(常量1,1,常量常量2,2,常量常量n n)n n當(dāng)列中的值與當(dāng)列中的值與ININ中的某個(gè)常量值相等時(shí),則結(jié)果為中的某個(gè)常量值相等時(shí),則結(jié)果為T(mén)rueTrue,表明此,表明此記錄為符合查詢條件的記錄;記錄為符合查詢條件的記錄;n nNOT INNOT IN:當(dāng)列中的值與某個(gè)常量值相同時(shí),則結(jié)果為:當(dāng)列中的值與某個(gè)常量值相同時(shí),則結(jié)果為FalseFalse,表明,表明此記錄為不符合查詢條件的記錄此記錄為不符合查詢條件的記錄 第45頁(yè)/共117頁(yè)示例示例n n例例1616查詢信息系、數(shù)學(xué)系和計(jì)算機(jī)系學(xué)生的姓查詢信息系、數(shù)學(xué)系和計(jì)算機(jī)系學(xué)
35、生的姓名和性別。名和性別。SELECT Sname,Ssex FROM Student WHERE Sdept IN(信息系信息系,數(shù)學(xué)系數(shù)學(xué)系,計(jì)算機(jī)系計(jì)算機(jī)系)n n例例1717查詢既不是信息系、數(shù)學(xué)系,也不是計(jì)算查詢既不是信息系、數(shù)學(xué)系,也不是計(jì)算機(jī)系學(xué)生的姓名和性別。機(jī)系學(xué)生的姓名和性別。SELECT Sname,Ssex FROM Student WHERE Sdept NOT IN(信息信息系系,數(shù)學(xué)系數(shù)學(xué)系,計(jì)算機(jī)系計(jì)算機(jī)系)第46頁(yè)/共117頁(yè)字符匹配字符匹配n n使用使用LIKELIKE運(yùn)算符運(yùn)算符n n一般形式為:一般形式為:列名列名 NOT LIKE NOT LIKE n
36、 n匹配串中可包含如下四種通配符:匹配串中可包含如下四種通配符:n n_ _:匹配任意一個(gè)字符;:匹配任意一個(gè)字符;n n%:匹配:匹配0 0個(gè)或多個(gè)字符;個(gè)或多個(gè)字符;n n :匹配:匹配 中的任意一個(gè)字符;中的任意一個(gè)字符;n n :不匹配:不匹配 中的任意一個(gè)字符中的任意一個(gè)字符 第47頁(yè)/共117頁(yè)示例示例n n例例1818查詢姓查詢姓 張張 的學(xué)生的詳細(xì)信息。的學(xué)生的詳細(xì)信息。SELECT*FROM Student SELECT*FROM Student WHERE Sname WHERE Sname LIKELIKE 張張張張%n n例例1919查詢學(xué)生表中姓查詢學(xué)生表中姓 張張、
37、李李 和和 劉劉 的學(xué)生的學(xué)生的情況。的情況。SELECT*FROM Student SELECT*FROM Student WHERE Sname WHERE Sname LIKELIKE 張李劉張李劉張李劉張李劉%n n例例2020查詢名字中第查詢名字中第2 2個(gè)字為個(gè)字為 小小 或或 大大 的學(xué)生的姓的學(xué)生的姓名和學(xué)號(hào)名和學(xué)號(hào) SELECT Sname,Sno FROM Student SELECT Sname,Sno FROM Student WHERE Sname WHERE Sname LIKELIKE _ _小大小大小大小大%第48頁(yè)/共117頁(yè)示例(續(xù))示例(續(xù))n n例例21
38、21查詢所有不姓查詢所有不姓“劉劉”的學(xué)生。的學(xué)生。SELECT Sname FROM Student SELECT Sname FROM Student WHERE Sname WHERE Sname NOT LIKENOT LIKE 劉劉劉劉%n n例例2222查詢學(xué)號(hào)的最后一位不是查詢學(xué)號(hào)的最后一位不是2 2、3 3、5 5的學(xué)生情的學(xué)生情況。況。SELECT*FROM Student SELECT*FROM Student WHERE Sno WHERE Sno LIKELIKE%235%235 第49頁(yè)/共117頁(yè)涉及空值的查詢涉及空值的查詢n n空值(空值(NULLNULL)在數(shù)據(jù)
39、庫(kù)中表示不確定的值。)在數(shù)據(jù)庫(kù)中表示不確定的值。n n例如,學(xué)生選修課程后還沒(méi)有考試時(shí),這些學(xué)生有選課記錄,但例如,學(xué)生選修課程后還沒(méi)有考試時(shí),這些學(xué)生有選課記錄,但沒(méi)有考試成績(jī),因此考試成績(jī)?yōu)榭罩怠](méi)有考試成績(jī),因此考試成績(jī)?yōu)榭罩?。n n判斷某個(gè)值是否為判斷某個(gè)值是否為NULLNULL值,不能使用普通的比較運(yùn)算符。值,不能使用普通的比較運(yùn)算符。n n判斷取值為空的語(yǔ)句格式為:判斷取值為空的語(yǔ)句格式為:列名列名 IS NULLIS NULLn n判斷取值不為空的語(yǔ)句格式為:判斷取值不為空的語(yǔ)句格式為:列名列名 IS NOT NULLIS NOT NULL 第50頁(yè)/共117頁(yè)示例示例n n例例
40、2323查詢無(wú)考試成績(jī)的學(xué)生的學(xué)號(hào)和相應(yīng)的課查詢無(wú)考試成績(jī)的學(xué)生的學(xué)號(hào)和相應(yīng)的課程號(hào)。程號(hào)。SELECT Sno,Cno FROM SC SELECT Sno,Cno FROM SC WHERE Grade WHERE Grade IS NULLIS NULLn n例例2424查詢所有有考試成績(jī)的學(xué)生的學(xué)號(hào)和課程查詢所有有考試成績(jī)的學(xué)生的學(xué)號(hào)和課程號(hào)。號(hào)。SELECT Sno,Cno FROM SC SELECT Sno,Cno FROM SC WHERE Grade WHERE Grade IS NOT NULLIS NOT NULL 第51頁(yè)/共117頁(yè)多重條件查詢多重條件查詢n n在在W
41、HEREWHERE子句中可以使用邏輯運(yùn)算符子句中可以使用邏輯運(yùn)算符ANDAND和和OROR來(lái)來(lái)組成多條件查詢。組成多條件查詢。n n用用ANDAND連接的條件表示必須全部滿足所有的條連接的條件表示必須全部滿足所有的條件的結(jié)果才為件的結(jié)果才為T(mén)rueTrue;n n用用OROR連接的條件表示只要滿足其中一個(gè)條件結(jié)連接的條件表示只要滿足其中一個(gè)條件結(jié)果即為果即為T(mén)rueTrue。n n例例2525查詢計(jì)算機(jī)系年齡在查詢計(jì)算機(jī)系年齡在2020歲以下的學(xué)生姓名。歲以下的學(xué)生姓名。SELECT Sname FROM Student SELECT Sname FROM Student WHERE Sdep
42、t=CS WHERE Sdept=CS ANDAND Sage 20 Sage 20 第52頁(yè)/共117頁(yè)簡(jiǎn)單查詢簡(jiǎn)單查詢3.對(duì)查詢結(jié)果進(jìn)行排序 第53頁(yè)/共117頁(yè)對(duì)查詢結(jié)果進(jìn)行排序?qū)Σ樵兘Y(jié)果進(jìn)行排序n n可對(duì)查詢結(jié)果進(jìn)行排序。n n排序子句為:ORDER BY ORDER BY ASC|DESC ,ASC|DESC ,n n說(shuō)明:按說(shuō)明:按 進(jìn)行升序(進(jìn)行升序(ASCASC)或)或降序(降序(DESCDESC)排序。)排序。第54頁(yè)/共117頁(yè)示例示例n n例例2626將學(xué)生按年齡的升序排序。將學(xué)生按年齡的升序排序。SELECT*FROM Student ORDER BY SageSELE
43、CT*FROM Student ORDER BY Sagen n例例2727查詢選修了查詢選修了c02c02號(hào)課程的學(xué)生的學(xué)號(hào)及其成績(jī),查詢結(jié)號(hào)課程的學(xué)生的學(xué)號(hào)及其成績(jī),查詢結(jié)果按成績(jī)降序排列。果按成績(jī)降序排列。SELECT Sno,Grade FROM SCSELECT Sno,Grade FROM SCWHERE Cno=c02 WHERE Cno=c02 ORDER BYORDER BY Grade Grade DESCDESC n n例例2828查詢?nèi)w學(xué)生的信息,查詢結(jié)果按所在系的系名升序排列,查詢?nèi)w學(xué)生的信息,查詢結(jié)果按所在系的系名升序排列,同一系的學(xué)生按年齡降序排列。同一系的學(xué)
44、生按年齡降序排列。SELECT*FROM StudentSELECT*FROM StudentORDER BYORDER BY Sdept,Sage Sdept,Sage DESCDESC 第55頁(yè)/共117頁(yè)簡(jiǎn)單查詢簡(jiǎn)單查詢4.使用計(jì)算函數(shù)匯總數(shù)據(jù) 第56頁(yè)/共117頁(yè)使用計(jì)算函數(shù)匯總數(shù)據(jù)使用計(jì)算函數(shù)匯總數(shù)據(jù) n nSQLSQL提供的計(jì)算函數(shù)有:提供的計(jì)算函數(shù)有:n nCOUNTCOUNT(*):統(tǒng)計(jì)表中元組個(gè)數(shù);:統(tǒng)計(jì)表中元組個(gè)數(shù);n nCOUNTCOUNT(DISTINCT DISTINCT ):統(tǒng)計(jì)本列列值個(gè)數(shù);:統(tǒng)計(jì)本列列值個(gè)數(shù);n nSUMSUM(DISTINCT DISTINCT
45、 ):計(jì)算列值總和;:計(jì)算列值總和;n nAVGAVG(DISTINCT DISTINCT ):計(jì)算列值平均值;:計(jì)算列值平均值;n nMAXMAX(DISTINCT DISTINCT ):求列值最大值;:求列值最大值;n nMINMIN(DISTINCT DISTINCT ):求列值最小值。:求列值最小值。n n上述函數(shù)中除上述函數(shù)中除上述函數(shù)中除上述函數(shù)中除COUNTCOUNT(*)外,其他函數(shù)在計(jì)算過(guò)程中均忽略)外,其他函數(shù)在計(jì)算過(guò)程中均忽略)外,其他函數(shù)在計(jì)算過(guò)程中均忽略)外,其他函數(shù)在計(jì)算過(guò)程中均忽略NULLNULL值。值。值。值。第57頁(yè)/共117頁(yè)示例示例n n例例2929統(tǒng)計(jì)學(xué)
46、生總?cè)藬?shù)。統(tǒng)計(jì)學(xué)生總?cè)藬?shù)。SELECT SELECT COUNT(*)COUNT(*)FROM StudentFROM Student n n例例3030統(tǒng)計(jì)選修了課程的學(xué)生的人數(shù)。統(tǒng)計(jì)選修了課程的學(xué)生的人數(shù)。SELECT SELECT COUNT(DISTINCT Sno)COUNT(DISTINCT Sno)FROM SC FROM SCn n例例31 31 計(jì)算計(jì)算95121019512101號(hào)學(xué)生的考試總成績(jī)之和。號(hào)學(xué)生的考試總成績(jī)之和。SELECT SELECT SUM(Grade)SUM(Grade)FROM SC FROM SC WHERE Sno=9512101 WHERE S
47、no=9512101 第58頁(yè)/共117頁(yè)示例(續(xù))示例(續(xù))n n例例3232計(jì)算計(jì)算 C01C01 號(hào)課程學(xué)生的考試平均成績(jī)。號(hào)課程學(xué)生的考試平均成績(jī)。SELECT AVG(Grade)FROM SC SELECT AVG(Grade)FROM SC WHERE Cno=C01 WHERE Cno=C01n n例例3333查詢選修了查詢選修了 C01C01 號(hào)課程的學(xué)生的最高分和最低分。號(hào)課程的學(xué)生的最高分和最低分。SELECT MAX(Grade),MIN(Grade)SELECT MAX(Grade),MIN(Grade)FROM SC WHERE Cno=C01 FROM SC WH
48、ERE Cno=C01n n注意:計(jì)算函數(shù)不能出現(xiàn)在注意:計(jì)算函數(shù)不能出現(xiàn)在WHEREWHERE子句中子句中 第59頁(yè)/共117頁(yè)簡(jiǎn)單查詢簡(jiǎn)單查詢5.對(duì)查詢結(jié)果進(jìn)行分組計(jì)算 第60頁(yè)/共117頁(yè)對(duì)查詢結(jié)果進(jìn)行分組計(jì)算對(duì)查詢結(jié)果進(jìn)行分組計(jì)算 n n作作用用:可可以以控控制制計(jì)計(jì)算算的的級(jí)級(jí)別別:對(duì)對(duì)全全表表還還是是對(duì)一組。對(duì)一組。n n目的:細(xì)化計(jì)算函數(shù)的作用對(duì)象。目的:細(xì)化計(jì)算函數(shù)的作用對(duì)象。n n分組語(yǔ)句的一般形式:分組語(yǔ)句的一般形式:GROUP BY GROUP BY HAVING HAVING 第61頁(yè)/共117頁(yè)1.使用使用GROUP BYn n例例3434統(tǒng)計(jì)每門(mén)課程的選課人數(shù),列出
49、課統(tǒng)計(jì)每門(mén)課程的選課人數(shù),列出課程號(hào)和人數(shù)。程號(hào)和人數(shù)。SELECT Cno as SELECT Cno as 課程號(hào)課程號(hào),COUNT(Sno)as COUNT(Sno)as 選課人數(shù)選課人數(shù) FROM SC FROM SC GROUP BYGROUP BY Cno Cno n n對(duì)查詢結(jié)果按對(duì)查詢結(jié)果按CnoCno的值分組,所有具有相的值分組,所有具有相同同CnoCno值的元組為一組,然后再對(duì)每一組值的元組為一組,然后再對(duì)每一組使用使用COUNTCOUNT計(jì)算,求得每組的學(xué)生人數(shù)。計(jì)算,求得每組的學(xué)生人數(shù)。第62頁(yè)/共117頁(yè)SnoSnoCnoCnoGradeGrade9512019512
50、01C01C018080951201951201C02C027878951202951202C01C019090952103952103C02C028888952103952103C01C018585952103952103C03C039191952103952103C04C047474CnoCnoCount(Sno)Count(Sno)C01C013 3C02C022 2C03C031 1C04C041 1SnoSnoCnoCnoGradeGrade951201951201C0C01 18080951202951202C0C01 19090952103952103C0C01 18585951
51、201951201C02C027878952103952103C02C028888952103952103C03C039191952103952103C04C047474第63頁(yè)/共117頁(yè)n n例例3535查詢每名學(xué)生的選課門(mén)數(shù)和平均成查詢每名學(xué)生的選課門(mén)數(shù)和平均成績(jī)。績(jī)。SELECT Sno as SELECT Sno as 學(xué)號(hào)學(xué)號(hào),COUNT(*)as COUNT(*)as 選課門(mén)數(shù)選課門(mén)數(shù),AVG(Grade)as AVG(Grade)as 平均成績(jī)平均成績(jī) FROM SC FROM SC GROUP BYGROUP BY Sno Sno第64頁(yè)/共117頁(yè)2.使用使用HAVINGn
52、 nHAVINGHAVING用于對(duì)分組自身進(jìn)行限制,它有用于對(duì)分組自身進(jìn)行限制,它有點(diǎn)象點(diǎn)象WHEREWHERE子句,但它用于組而不是對(duì)子句,但它用于組而不是對(duì)單個(gè)記錄。單個(gè)記錄。n n例例3636查詢修了查詢修了3 3門(mén)以上課程的學(xué)生的學(xué)號(hào)門(mén)以上課程的學(xué)生的學(xué)號(hào)SELECT Sno FROM SC SELECT Sno FROM SC GROUP BY Sno GROUP BY Sno HAVINGHAVING COUNT(*)3 COUNT(*)3 第65頁(yè)/共117頁(yè)示例示例n n例例3737查詢修課門(mén)數(shù)等于或大于查詢修課門(mén)數(shù)等于或大于4 4門(mén)的學(xué)生門(mén)的學(xué)生的平均成績(jī)和選課門(mén)數(shù)。的平均成
53、績(jī)和選課門(mén)數(shù)。SELECT Sno,AVG(Grade)SELECT Sno,AVG(Grade)平均成績(jī)平均成績(jī),COUNT(*)COUNT(*)修課門(mén)數(shù)修課門(mén)數(shù) FROM SC FROM SC GROUP BY Sno GROUP BY Sno HAVINGHAVING COUNT(*)=4 COUNT(*)=4 第66頁(yè)/共117頁(yè)多表連接查詢多表連接查詢 n n若一個(gè)查詢同時(shí)涉及兩個(gè)或兩個(gè)以上若一個(gè)查詢同時(shí)涉及兩個(gè)或兩個(gè)以上的表,則稱之為連接查詢。的表,則稱之為連接查詢。n n連接查詢是關(guān)系數(shù)據(jù)庫(kù)中最主要的查連接查詢是關(guān)系數(shù)據(jù)庫(kù)中最主要的查詢?cè)僴 n連接查詢包括內(nèi)連接、外連接和交叉連接
54、查詢包括內(nèi)連接、外連接和交叉連接等。連接等。第67頁(yè)/共117頁(yè)連接基礎(chǔ)知識(shí)連接基礎(chǔ)知識(shí)n n連接查詢中用于連接兩個(gè)表的條件稱為連連接查詢中用于連接兩個(gè)表的條件稱為連接條件或連接謂詞。接條件或連接謂詞。n n一般格式為:一般格式為:必須是可比的必須是可比的第68頁(yè)/共117頁(yè)內(nèi)連接內(nèi)連接n nSQL-92 SQL-92 內(nèi)連接語(yǔ)法如下:內(nèi)連接語(yǔ)法如下:SELECT SELECT FROM FROM 表名表名 INNER JOININNER JOIN 被連接表被連接表 ON ON 連接條件連接條件第69頁(yè)/共117頁(yè)n n執(zhí)行連接操作的過(guò)程:執(zhí)行連接操作的過(guò)程:執(zhí)行連接操作的過(guò)程:執(zhí)行連接操作的
55、過(guò)程:n n首先取表首先取表首先取表首先取表1 1 1 1中的第中的第中的第中的第1 1 1 1個(gè)元組,然后從頭開(kāi)始掃描表個(gè)元組,然后從頭開(kāi)始掃描表個(gè)元組,然后從頭開(kāi)始掃描表個(gè)元組,然后從頭開(kāi)始掃描表2 2 2 2,逐一查找滿,逐一查找滿,逐一查找滿,逐一查找滿足連接條件的元組,足連接條件的元組,足連接條件的元組,足連接條件的元組,n n找到后就將表找到后就將表找到后就將表找到后就將表1 1 1 1中的第中的第中的第中的第1 1 1 1個(gè)元組與該元組拼接起來(lái),形成結(jié)果表個(gè)元組與該元組拼接起來(lái),形成結(jié)果表個(gè)元組與該元組拼接起來(lái),形成結(jié)果表個(gè)元組與該元組拼接起來(lái),形成結(jié)果表中的一個(gè)元組。中的一個(gè)元
56、組。中的一個(gè)元組。中的一個(gè)元組。n n表表表表2 2 2 2全部查找完畢后,再取表全部查找完畢后,再取表全部查找完畢后,再取表全部查找完畢后,再取表1 1 1 1中的第中的第中的第中的第2 2 2 2個(gè)元組,然后再?gòu)念^開(kāi)始個(gè)元組,然后再?gòu)念^開(kāi)始個(gè)元組,然后再?gòu)念^開(kāi)始個(gè)元組,然后再?gòu)念^開(kāi)始掃描表掃描表掃描表掃描表2 2 2 2,n n重復(fù)這個(gè)過(guò)程,直到表重復(fù)這個(gè)過(guò)程,直到表重復(fù)這個(gè)過(guò)程,直到表重復(fù)這個(gè)過(guò)程,直到表1 1 1 1中的全部元組都處理完畢為止。中的全部元組都處理完畢為止。中的全部元組都處理完畢為止。中的全部元組都處理完畢為止。第70頁(yè)/共117頁(yè)n n例例40.40.查詢計(jì)算機(jī)系學(xué)生的
57、修課情況,要求查詢計(jì)算機(jī)系學(xué)生的修課情況,要求列出學(xué)生的名字、所修課的課程號(hào)和成績(jī)。列出學(xué)生的名字、所修課的課程號(hào)和成績(jī)。SELECT Sname,Cno,Grade SELECT Sname,Cno,Grade FROM Student FROM Student JOINJOIN SC SC ON Student.Sno=SC.Sno ON Student.Sno=SC.Sno WHERE Sdept=WHERE Sdept=計(jì)算機(jī)系計(jì)算機(jī)系 第71頁(yè)/共117頁(yè)n n例例41.41.查詢信息系修了查詢信息系修了VBVB課程的學(xué)生的修課成績(jī),要求課程的學(xué)生的修課成績(jī),要求列出學(xué)生姓名、課程名
58、和成績(jī)。列出學(xué)生姓名、課程名和成績(jī)。SELECT Sname,Cname,GradeSELECT Sname,Cname,Grade FROM Student s FROM Student s JOINJOIN SC SC ON s.Sno=SC.Sno ON s.Sno=SC.Sno JOIN Course c ON c.Cno=SC.Cno JOIN Course c ON c.Cno=SC.Cno WHERE Sdept=WHERE Sdept=信息系信息系 AND Cname=VB AND Cname=VB 第72頁(yè)/共117頁(yè)自連接自連接n n為特殊的內(nèi)連接為特殊的內(nèi)連接n n相互連
59、接的表物理上為同一張表。相互連接的表物理上為同一張表。n n必須為兩個(gè)表取別名,使之在邏輯上必須為兩個(gè)表取別名,使之在邏輯上成為兩個(gè)表。成為兩個(gè)表。第73頁(yè)/共117頁(yè)n n例例43.43.查詢與劉晨在同一個(gè)系學(xué)習(xí)的學(xué)生的姓名和所在的查詢與劉晨在同一個(gè)系學(xué)習(xí)的學(xué)生的姓名和所在的系。系。SELECT S2.Sname,S2.SdeptSELECT S2.Sname,S2.Sdept FROM Student S1 FROM Student S1 JOINJOIN Student S2 Student S2 ON S1.Sdept=S2.Sdept ON S1.Sdept=S2.Sdept WHE
60、RE S1.Sname=WHERE S1.Sname=劉晨劉晨 AND S2.Sname!=AND S2.Sname!=劉晨劉晨 第74頁(yè)/共117頁(yè)外連接外連接n n只限制一張表中的數(shù)據(jù)必須滿足連接條件,而只限制一張表中的數(shù)據(jù)必須滿足連接條件,而另一張表中數(shù)據(jù)可以不滿足連接條件。另一張表中數(shù)據(jù)可以不滿足連接條件。n nANSIANSI方式的外連接的語(yǔ)法格式為:方式的外連接的語(yǔ)法格式為:FROM 表1 LEFT|RIGHT OUTER JOIN 表2 ON n nthetatheta方式的外連接的語(yǔ)法格式為:方式的外連接的語(yǔ)法格式為:n n左外連接:左外連接:FROM FROM 表表1,1,表
61、表2 WHERE 2 WHERE 表表1.1.列名列名(+)(+)表表2.2.列名列名n n右外連接:右外連接:FROM FROM 表表1,1,表表2 WHERE 2 WHERE 表表1.1.列名列名 表表2.2.列名列名(+)(+)第75頁(yè)/共117頁(yè)n n例例44.44.查詢學(xué)生的修課情況,包括修了課查詢學(xué)生的修課情況,包括修了課程的學(xué)生和沒(méi)有修課的學(xué)生。程的學(xué)生和沒(méi)有修課的學(xué)生。SELECT Student.Sno,Sname,Cno,GradeSELECT Student.Sno,Sname,Cno,GradeFROM Student FROM Student LEFT OUTERLE
62、FT OUTER JOIN SC JOIN SCON Student.Sno=SC.Sno ON Student.Sno=SC.Sno 第76頁(yè)/共117頁(yè)子查詢子查詢 n n在在SQLSQL語(yǔ)言中,一個(gè)語(yǔ)言中,一個(gè)SELECTSELECTFROMFROMWHEREWHERE語(yǔ)句稱為一個(gè)查詢塊。語(yǔ)句稱為一個(gè)查詢塊。n n子查詢是一個(gè)子查詢是一個(gè) SELECT SELECT 查詢,它嵌套在查詢,它嵌套在 SELECTSELECT、INSERTINSERT、UPDATEUPDATE、DELETE DELETE 語(yǔ)句的語(yǔ)句的 WHERE WHERE 或或 HAVING HAVING 子句內(nèi),或其子句
63、內(nèi),或其它子查詢中它子查詢中 n n子查詢的子查詢的 SELECT SELECT 查詢總是使用圓括號(hào)括查詢總是使用圓括號(hào)括起來(lái)。起來(lái)。第77頁(yè)/共117頁(yè)使用子查詢進(jìn)行基于集合的測(cè)試使用子查詢進(jìn)行基于集合的測(cè)試n n使用子查詢進(jìn)行基于集合的測(cè)試的語(yǔ)句的一般格式為:列名 NOT IN(子查詢)第78頁(yè)/共117頁(yè)示例示例n n例例45.45.查詢與劉晨在同一個(gè)系的學(xué)生。查詢與劉晨在同一個(gè)系的學(xué)生。SELECT Sno,Sname,SdeptSELECT Sno,Sname,Sdept FROM Student FROM StudentWHERE Sdept WHERE Sdept ININ (S
64、ELECT Sdept FROM Student (SELECT Sdept FROM Student WHERE Sname=WHERE Sname=劉晨劉晨 )AND Sname!=AND Sname!=劉晨劉晨 第79頁(yè)/共117頁(yè)示例示例n n例例46.46.查詢成績(jī)?yōu)榇笥诓樵兂煽?jī)?yōu)榇笥?090分的學(xué)生的學(xué)號(hào)、分的學(xué)生的學(xué)號(hào)、姓名。姓名。SELECT Sno,Sname FROM StudentSELECT Sno,Sname FROM StudentWHERE Sno WHERE Sno ININ(SELECT Sno FROM SC(SELECT Sno FROM SCWHERE
65、Grade 90)WHERE Grade 90)第80頁(yè)/共117頁(yè)n n例例47.47.查詢選修了查詢選修了“數(shù)據(jù)庫(kù)基礎(chǔ)數(shù)據(jù)庫(kù)基礎(chǔ)”課程的學(xué)課程的學(xué)生的學(xué)號(hào)、姓名。生的學(xué)號(hào)、姓名。SELECT Sno,Sname FROM Student SELECT Sno,Sname FROM Student WHERE Sno WHERE Sno ININ(SELECT Sno FROM SC(SELECT Sno FROM SC WHERE Cno IN WHERE Cno IN(SELECT Cno FROM Course(SELECT Cno FROM Course WHERE Cname=WH
66、ERE Cname=數(shù)據(jù)庫(kù)基礎(chǔ)數(shù)據(jù)庫(kù)基礎(chǔ))第81頁(yè)/共117頁(yè)使用子查詢進(jìn)行比較測(cè)試使用子查詢進(jìn)行比較測(cè)試 n n帶比較運(yùn)算符的子查詢指父查詢與子帶比較運(yùn)算符的子查詢指父查詢與子查詢之間用比較運(yùn)算符連接,查詢之間用比較運(yùn)算符連接,n n當(dāng)用戶能確切知道內(nèi)層查詢返回的是當(dāng)用戶能確切知道內(nèi)層查詢返回的是單值時(shí)單值時(shí),可用,可用、=、=、運(yùn)算符。運(yùn)算符。第82頁(yè)/共117頁(yè)n n例例48.48.查詢修了查詢修了 c02c02 課程且成績(jī)高于此課程的課程且成績(jī)高于此課程的平均成績(jī)的學(xué)生的學(xué)號(hào)和成績(jī)。平均成績(jī)的學(xué)生的學(xué)號(hào)和成績(jī)。SELECT Sno,Grade FROM SCSELECT Sno,Grade FROM SC WHERE Cno=c02 WHERE Cno=c02 and Grade and Grade (SELECT AVG(Grade)from SC SELECT AVG(Grade)from SC WHERE Cno=c02)WHERE Cno=c02)第83頁(yè)/共117頁(yè)使用子查詢進(jìn)行存在性測(cè)試使用子查詢進(jìn)行存在性測(cè)試 n n一般使用一般使用EXISTSEXISTS謂詞。謂
- 溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024《增值稅法》全文學(xué)習(xí)解讀(規(guī)范增值稅的征收和繳納保護(hù)納稅人的合法權(quán)益)
- 2024《文物保護(hù)法》全文解讀學(xué)習(xí)(加強(qiáng)對(duì)文物的保護(hù)促進(jìn)科學(xué)研究工作)
- 銷售技巧培訓(xùn)課件:接近客戶的套路總結(jié)
- 20種成交的銷售話術(shù)和技巧
- 銷售技巧:接近客戶的8種套路
- 銷售套路總結(jié)
- 房產(chǎn)銷售中的常見(jiàn)問(wèn)題及解決方法
- 銷售技巧:值得默念的成交話術(shù)
- 銷售資料:讓人舒服的35種說(shuō)話方式
- 汽車(chē)銷售績(jī)效管理規(guī)范
- 銷售技巧培訓(xùn)課件:絕對(duì)成交的銷售話術(shù)
- 頂尖銷售技巧總結(jié)
- 銷售技巧:電話營(yíng)銷十大定律
- 銷售逼單最好的二十三種技巧
- 銷售最常遇到的10大麻煩