SQL語(yǔ)言基礎(chǔ)基本概念 SQL的數(shù)據(jù)類(lèi)型基本表的定義刪除及修改數(shù)據(jù)查詢(xún)功能數(shù)據(jù)更改功能建立與刪除索引
《SQL語(yǔ)言基礎(chǔ)基本概念 SQL的數(shù)據(jù)類(lèi)型基本表的定義刪除及修改數(shù)據(jù)查詢(xún)功能數(shù)據(jù)更改功能建立與刪除索引》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《SQL語(yǔ)言基礎(chǔ)基本概念 SQL的數(shù)據(jù)類(lèi)型基本表的定義刪除及修改數(shù)據(jù)查詢(xún)功能數(shù)據(jù)更改功能建立與刪除索引(117頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、會(huì)計(jì)學(xué)1SQL語(yǔ)言基礎(chǔ)語(yǔ)言基礎(chǔ) 基本概念基本概念 SQL的數(shù)據(jù)類(lèi)型的數(shù)據(jù)類(lèi)型 基本表的定義刪除及修改基本表的定義刪除及修改 數(shù)據(jù)查詢(xún)功能數(shù)據(jù)查詢(xún)功能 數(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,稱(chēng)為,稱(chēng)為SQL
2、-89 SQL-89。n n19921992年年1111月,月,ISOISO又公布了新的又公布了新的SQLSQL標(biāo)準(zhǔn),稱(chēng)標(biāo)準(zhǔn),稱(chēng)為為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ù)查詢(xún)數(shù)據(jù)查詢(xún)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ù)查詢(xún)功能和數(shù)據(jù)操縱功能。第4頁(yè)/共117頁(yè)4.2 SQL的數(shù)據(jù)類(lèi)型的數(shù)據(jù)類(lèi)型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、通編碼字符串類(lèi)型普通編碼字符串類(lèi)型n n統(tǒng)一字符編碼字符串類(lèi)型統(tǒng)一字符編碼字符串類(lèi)型n n二進(jìn)制字符串類(lèi)型二進(jìn)制字符串類(lèi)型第7頁(yè)/共117頁(yè)普通編碼字符串類(lèi)型普通編碼字符串類(lèi)型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)字符)字符串類(lèi)型串類(lèi)型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)制字符串類(lèi)型二進(jìn)制字符串類(lèi)型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è)貨幣類(lèi)型貨幣類(lèi)型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表添加表添加“修課類(lèi)別修課類(lèi)別”列,此列的列,此列的定義為:定義為:
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的類(lèi)型改為的類(lèi)型改為 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ù)查詢(xún)功能數(shù)據(jù)查詢(xún)功能 n n查詢(xún)語(yǔ)句的基本結(jié)構(gòu)查詢(xún)語(yǔ)句的基本結(jié)構(gòu)n n簡(jiǎn)單查詢(xún)簡(jiǎn)單查詢(xún)n n多表連接查詢(xún)多表連接查詢(xún)n n子查詢(xún)子查詢(xún) 第32頁(yè)/共117頁(yè)查詢(xún)語(yǔ)句基本格式查詢(xún)語(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)單查詢(xún)簡(jiǎn)單查詢(xún)1.選擇表中若干列 第34頁(yè)/共117頁(yè)1.查詢(xún)指定的列查詢(xún)指定的列n n查詢(xún)表中用戶(hù)感興趣的部分
25、屬性列。查詢(xún)表中用戶(hù)感興趣的部分屬性列。n n例例5 5:查詢(xún)?nèi)w學(xué)生的學(xué)號(hào)與姓名。:查詢(xún)?nèi)w學(xué)生的學(xué)號(hào)與姓名。SELECT SnoSELECT Sno,Sname FROM StudentSname FROM Studentn n例例6 6:查詢(xún)?nèi)w學(xué)生的姓名、學(xué)號(hào)和所在系。:查詢(xún)?nèi)w學(xué)生的姓名、學(xué)號(hào)和所在系。SELECT SnameSELECT Sname,SnoSno,Sdept Sdept FROM Student FROM Student 第35頁(yè)/共117頁(yè)2.查詢(xún)?nèi)苛胁樵?xún)?nèi)苛?n n例例7 7查詢(xún)?nèi)w學(xué)生的記錄查詢(xún)?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.查詢(xún)經(jīng)過(guò)計(jì)算的列查詢(xún)經(jīng)過(guò)計(jì)算的列 n n例例8 8查詢(xún)?nèi)w學(xué)生的姓名及其出生年份。查詢(xún)?nèi)w學(xué)生的姓名及其出生年份。SELECT SnameSELECT Sname,2006-Sage2006-Sage FROM Student FROM Studentn n例例9 9查詢(xún)?nèi)w學(xué)生的姓名和出生年份所在系,并在出生查詢(xún)?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)單查詢(xún)簡(jiǎn)單查詢(xún)2.選擇表中若干元組 第39頁(yè)/共117頁(yè)1.消除取值相同的記錄消除取值相同的記錄n n例例1010在修課表中查詢(xún)有哪些學(xué)生修了課程,要求列出學(xué)生的在修課表中查詢(xún)有哪些學(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.查詢(xún)滿(mǎn)足條件的元組查詢(xún)滿(mǎn)足條件的元組 查詢(xún)條件查詢(xún)條件謂謂 詞詞比較運(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查詢(xún)計(jì)算機(jī)系全體
30、學(xué)生的姓名。查詢(xún)計(jì)算機(jī)系全體學(xué)生的姓名。SELECT Sname FROM Student SELECT Sname FROM Student WHERE Sdept WHERE Sdept=計(jì)算機(jī)系計(jì)算機(jī)系 n n例例1212查詢(xún)年齡在查詢(xún)年齡在2020歲以下的學(xué)生的姓名及年齡。歲以下的學(xué)生的姓名及年齡。SELECT Sname,Sage FROM Student SELECT Sname,Sage FROM Student WHERE Sage WHERE Sage 20 20n n例例1313查詢(xún)考試成績(jī)有不及格的學(xué)生的學(xué)號(hào)查詢(xún)考試成績(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,表明此記錄符合查詢(xún)條件。,表明此記錄符合查詢(xún)條件。第43頁(yè)/共117頁(yè)示例示例n n例例1414查詢(xún)年齡在查詢(xún)年齡在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查詢(xún)年齡不在查詢(xún)年齡不在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,表明此,表明此記錄為符合查詢(xún)條件的記錄;記錄為符合查詢(xún)條件的記錄;n nNOT INNOT IN:當(dāng)列中的值與某個(gè)常量值相同時(shí),則結(jié)果為:當(dāng)列中的值與某個(gè)常量值相同時(shí),則結(jié)果為FalseFalse,表明,表明此記錄為不符合查詢(xún)條件的記錄此記錄為不符合查詢(xún)條件的記錄 第45頁(yè)/共117頁(yè)示例示例n n例例1616查詢(xún)信息系、數(shù)學(xué)系和計(jì)算機(jī)系學(xué)生的姓查詢(xún)信息系、數(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查詢(xún)既不是信息系、數(shù)學(xué)系,也不是計(jì)算查詢(xún)既不是信息系、數(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查詢(xún)姓查詢(xún)姓 張張 的學(xué)生的詳細(xì)信息。的學(xué)生的詳細(xì)信息。SELECT*FROM Student SELECT*FROM Student WHERE Sname WHERE Sname LIKELIKE 張張張張%n n例例1919查詢(xún)學(xué)生表中姓查詢(xún)學(xué)生表中姓 張張、
37、李李 和和 劉劉 的學(xué)生的學(xué)生的情況。的情況。SELECT*FROM Student SELECT*FROM Student WHERE Sname WHERE Sname LIKELIKE 張李劉張李劉張李劉張李劉%n n例例2020查詢(xún)名字中第查詢(xún)名字中第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查詢(xún)所有不姓查詢(xún)所有不姓“劉劉”的學(xué)生。的學(xué)生。SELECT Sname FROM Student SELECT Sname FROM Student WHERE Sname WHERE Sname NOT LIKENOT LIKE 劉劉劉劉%n n例例2222查詢(xún)學(xué)號(hào)的最后一位不是查詢(xún)學(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è)涉及空值的查詢(xún)涉及空值的查詢(xún)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判斷某個(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查詢(xún)無(wú)考試成績(jī)的學(xué)生的學(xué)號(hào)和相應(yīng)的課查詢(xún)無(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查詢(xún)所有有考試成績(jī)的學(xué)生的學(xué)號(hào)和課程查詢(xún)所有有考試成績(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è)多重條件查詢(xún)多重條件查詢(xún)n n在在W
41、HEREWHERE子句中可以使用邏輯運(yùn)算符子句中可以使用邏輯運(yùn)算符ANDAND和和OROR來(lái)來(lái)組成多條件查詢(xún)。組成多條件查詢(xún)。n n用用ANDAND連接的條件表示必須全部滿(mǎn)足所有的條連接的條件表示必須全部滿(mǎn)足所有的條件的結(jié)果才為件的結(jié)果才為T(mén)rueTrue;n n用用OROR連接的條件表示只要滿(mǎn)足其中一個(gè)條件結(jié)連接的條件表示只要滿(mǎn)足其中一個(gè)條件結(jié)果即為果即為T(mén)rueTrue。n n例例2525查詢(xún)計(jì)算機(jī)系年齡在查詢(xún)計(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)單查詢(xún)簡(jiǎn)單查詢(xún)3.對(duì)查詢(xún)結(jié)果進(jìn)行排序 第53頁(yè)/共117頁(yè)對(duì)查詢(xún)結(jié)果進(jìn)行排序?qū)Σ樵?xún)結(jié)果進(jìn)行排序n n可對(duì)查詢(xún)結(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查詢(xún)選修了查詢(xún)選修了c02c02號(hào)課程的學(xué)生的學(xué)號(hào)及其成績(jī),查詢(xún)結(jié)號(hào)課程的學(xué)生的學(xué)號(hào)及其成績(jī),查詢(xún)結(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查詢(xún)?nèi)w學(xué)生的信息,查詢(xún)結(jié)果按所在系的系名升序排列,查詢(xún)?nèi)w學(xué)生的信息,查詢(xún)結(jié)果按所在系的系名升序排列,同一系的學(xué)生按年齡降序排列。同一系的學(xué)
44、生按年齡降序排列。SELECT*FROM StudentSELECT*FROM StudentORDER BYORDER BY Sdept,Sage Sdept,Sage DESCDESC 第55頁(yè)/共117頁(yè)簡(jiǎn)單查詢(xún)簡(jiǎn)單查詢(xú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查詢(xún)選修了查詢(xún)選修了 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)單查詢(xún)簡(jiǎn)單查詢(xún)5.對(duì)查詢(xún)結(jié)果進(jìn)行分組計(jì)算 第60頁(yè)/共117頁(yè)對(duì)查詢(xún)結(jié)果進(jìn)行分組計(jì)算對(duì)查詢(xún)結(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ì)查詢(xún)結(jié)果按對(duì)查詢(xún)結(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查詢(xún)每名學(xué)生的選課門(mén)數(shù)和平均成查詢(xún)每名學(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查詢(xún)修了查詢(xún)修了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查詢(xún)修課門(mén)數(shù)等于或大于查詢(xún)修課門(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è)多表連接查詢(xún)多表連接查詢(xún) n n若一個(gè)查詢(xún)同時(shí)涉及兩個(gè)或兩個(gè)以上若一個(gè)查詢(xún)同時(shí)涉及兩個(gè)或兩個(gè)以上的表,則稱(chēng)之為連接查詢(xún)。的表,則稱(chēng)之為連接查詢(xún)。n n連接查詢(xún)是關(guān)系數(shù)據(jù)庫(kù)中最主要的查連接查詢(xún)是關(guān)系數(shù)據(jù)庫(kù)中最主要的查詢(xún)?cè)僴 n連接查詢(xún)包括內(nèi)連接、外連接和交叉連接
54、查詢(xún)包括內(nèi)連接、外連接和交叉連接等。連接等。第67頁(yè)/共117頁(yè)連接基礎(chǔ)知識(shí)連接基礎(chǔ)知識(shí)n n連接查詢(xún)中用于連接兩個(gè)表的條件稱(chēng)為連連接查詢(xún)中用于連接兩個(gè)表的條件稱(chēng)為連接條件或連接謂詞。接條件或連接謂詞。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,逐一查找滿(mǎn),逐一查找滿(mǎn),逐一查找滿(mǎn),逐一查找滿(mǎn)足連接條件的元組,足連接條件的元組,足連接條件的元組,足連接條件的元組,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.查詢(xún)計(jì)算機(jī)系學(xué)生的
57、修課情況,要求查詢(xún)計(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.查詢(xún)信息系修了查詢(xún)信息系修了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.查詢(xún)與劉晨在同一個(gè)系學(xué)習(xí)的學(xué)生的姓名和所在的查詢(xún)與劉晨在同一個(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ù)必須滿(mǎn)足連接條件,而只限制一張表中的數(shù)據(jù)必須滿(mǎn)足連接條件,而另一張表中數(shù)據(jù)可以不滿(mǎn)足連接條件。另一張表中數(shù)據(jù)可以不滿(mǎn)足連接條件。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.查詢(xún)學(xué)生的修課情況,包括修了課查詢(xún)學(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è)子查詢(xún)子查詢(xún) n n在在SQLSQL語(yǔ)言中,一個(gè)語(yǔ)言中,一個(gè)SELECTSELECTFROMFROMWHEREWHERE語(yǔ)句稱(chēng)為一個(gè)查詢(xún)塊。語(yǔ)句稱(chēng)為一個(gè)查詢(xún)塊。n n子查詢(xún)是一個(gè)子查詢(xún)是一個(gè) SELECT SELECT 查詢(xún),它嵌套在查詢(xún),它嵌套在 SELECTSELECT、INSERTINSERT、UPDATEUPDATE、DELETE DELETE 語(yǔ)句的語(yǔ)句的 WHERE WHERE 或或 HAVING HAVING 子句內(nèi),或其子句
63、內(nèi),或其它子查詢(xún)中它子查詢(xún)中 n n子查詢(xún)的子查詢(xún)的 SELECT SELECT 查詢(xún)總是使用圓括號(hào)括查詢(xún)總是使用圓括號(hào)括起來(lái)。起來(lái)。第77頁(yè)/共117頁(yè)使用子查詢(xún)進(jìn)行基于集合的測(cè)試使用子查詢(xún)進(jìn)行基于集合的測(cè)試n n使用子查詢(xún)進(jìn)行基于集合的測(cè)試的語(yǔ)句的一般格式為:列名 NOT IN(子查詢(xún))第78頁(yè)/共117頁(yè)示例示例n n例例45.45.查詢(xún)與劉晨在同一個(gè)系的學(xué)生。查詢(xún)與劉晨在同一個(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.查詢(xún)成績(jī)?yōu)榇笥诓樵?xún)成績(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.查詢(xún)選修了查詢(xún)選修了“數(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è)使用子查詢(xún)進(jìn)行比較測(cè)試使用子查詢(xún)進(jìn)行比較測(cè)試 n n帶比較運(yùn)算符的子查詢(xún)指父查詢(xún)與子帶比較運(yùn)算符的子查詢(xún)指父查詢(xún)與子查詢(xún)之間用比較運(yùn)算符連接,查詢(xún)之間用比較運(yùn)算符連接,n n當(dāng)用戶(hù)能確切知道內(nèi)層查詢(xún)返回的是當(dāng)用戶(hù)能確切知道內(nèi)層查詢(xún)返回的是單值時(shí)單值時(shí),可用,可用、=、=、運(yùn)算符。運(yùn)算符。第82頁(yè)/共117頁(yè)n n例例48.48.查詢(xún)修了查詢(xún)修了 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è)使用子查詢(xún)進(jìn)行存在性測(cè)試使用子查詢(xún)進(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)益歸上傳用戶(hù)所有。
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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 語(yǔ)文部編版《端午粽》課件2
- 秋的思念最新課件
- 20套清新商務(wù)日歷圖表合集一課件
- 簡(jiǎn)歷篩選技巧教學(xué)課件
- 《圖形創(chuàng)意設(shè)計(jì)》【初中美術(shù)教學(xué)課件】
- 部編新版人教版一年級(jí)下冊(cè)姓氏歌課件
- 西師大版六年級(jí)數(shù)學(xué)下冊(cè)總復(fù)習(xí)(5)---比和比例
- 藥物過(guò)敏反應(yīng)及處理流程ppt
- 人教版《道德與法治》九年級(jí)上冊(cè)42《凝聚法治共識(shí)》課件_參考
- 蘇教版二年級(jí)數(shù)學(xué)下冊(cè)第六單元--兩、三位數(shù)的加法和減法第7課時(shí)---練習(xí)七課件
- 蘇教版小學(xué)數(shù)學(xué)五年級(jí)下冊(cè)《方程的認(rèn)識(shí)》課件
- 國(guó)培計(jì)劃項(xiàng)目匯報(bào)模板
- 藏羚羊跪拜王春華
- 危重病人護(hù)理查房
- 中醫(yī)體質(zhì)分類(lèi)及其辨證調(diào)護(hù)