版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)庫系統(tǒng)概論(第五版)()演示文稿當(dāng)前第1頁\共有95頁\編于星期五\0點(diǎn)數(shù)據(jù)庫系統(tǒng)概論(第五版)第章()當(dāng)前第2頁\共有95頁\編于星期五\0點(diǎn)第三章
關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL3.1SQL概述3.2學(xué)生-課程數(shù)據(jù)庫3.3數(shù)據(jù)定義3.4數(shù)據(jù)查詢3.5數(shù)據(jù)更新3.6空值的處理3.7視圖3.8小結(jié)當(dāng)前第3頁\共有95頁\編于星期五\0點(diǎn)3.1SQL概述SQL(StructuredQueryLanguage)結(jié)構(gòu)化查詢語言,是關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言SQL是一個(gè)通用的、功能極強(qiáng)的關(guān)系數(shù)據(jù)庫語言當(dāng)前第4頁\共有95頁\編于星期五\0點(diǎn)SQL概述(續(xù))3.1.1SQL的產(chǎn)生與發(fā)展3.1.2SQL的特點(diǎn)3.1.3SQL的基本概念當(dāng)前第5頁\共有95頁\編于星期五\0點(diǎn)SQL標(biāo)準(zhǔn)的進(jìn)展過程標(biāo)準(zhǔn)大致頁數(shù)發(fā)布日期SQL/861986.10SQL/89(FIPS127-1)120頁1989年SQL/92622頁1992年SQL99(SQL3)1700頁1999年SQL20033600頁
2003年SQL20083777頁2006年SQL20112010年目前,沒有一個(gè)數(shù)據(jù)庫系統(tǒng)能夠支持SQL標(biāo)準(zhǔn)的所有概念和特性當(dāng)前第6頁\共有95頁\編于星期五\0點(diǎn)3.1SQL概述3.1.1SQL的產(chǎn)生與發(fā)展3.1.2SQL的特點(diǎn)3.1.3SQL的基本概念當(dāng)前第7頁\共有95頁\編于星期五\0點(diǎn)3.1.2SQL的特點(diǎn)綜合統(tǒng)一集數(shù)據(jù)定義語言(DDL),數(shù)據(jù)操縱語言(DML),數(shù)據(jù)控制語言(DCL)功能于一體??梢元?dú)立完成數(shù)據(jù)庫生命周期中的全部活動(dòng):定義和修改、刪除關(guān)系模式,定義和刪除視圖,插入數(shù)據(jù),建立數(shù)據(jù)庫;對(duì)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行查詢和更新;數(shù)據(jù)庫重構(gòu)和維護(hù)數(shù)據(jù)庫安全性、完整性控制,以及事務(wù)控制嵌入式SQL和動(dòng)態(tài)SQL定義用戶數(shù)據(jù)庫投入運(yùn)行后,可根據(jù)需要隨時(shí)逐步修改模式,不影響數(shù)據(jù)庫的運(yùn)行。數(shù)據(jù)操作符統(tǒng)一當(dāng)前第8頁\共有95頁\編于星期五\0點(diǎn)2.高度非過程化非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操縱語言“面向過程”,必須指定存取路徑。SQL只要提出“做什么”,無須了解存取路徑。存取路徑的選擇以及SQL的操作過程由系統(tǒng)自動(dòng)完成。當(dāng)前第9頁\共有95頁\編于星期五\0點(diǎn)3.面向集合的操作方式非關(guān)系數(shù)據(jù)模型采用面向記錄的操作方式,操作對(duì)象是一條記錄SQL采用集合操作方式操作對(duì)象、查找結(jié)果可以是元組的集合一次插入、刪除、更新操作的對(duì)象可以是元組的集合當(dāng)前第10頁\共有95頁\編于星期五\0點(diǎn)4.以同一種語法結(jié)構(gòu)提供多種使用方式SQL是獨(dú)立的語言能夠獨(dú)立地用于聯(lián)機(jī)交互的使用方式SQL又是嵌入式語言
SQL能夠嵌入到高級(jí)語言(例如C,C++,Java)程序中,供程序員設(shè)計(jì)程序時(shí)使用當(dāng)前第11頁\共有95頁\編于星期五\0點(diǎn)5.語言簡潔,易學(xué)易用SQL功能極強(qiáng),完成核心功能只用了9個(gè)動(dòng)詞。當(dāng)前第12頁\共有95頁\編于星期五\0點(diǎn)3.1SQL概述3.1.1SQL的產(chǎn)生與發(fā)展3.1.2SQL的特點(diǎn)3.1.3SQL的基本概念當(dāng)前第13頁\共有95頁\編于星期五\0點(diǎn)SQL的基本概念(續(xù))SQL視圖2視圖1基本表2基本表1基本表3基本表4存儲(chǔ)文件2存儲(chǔ)文件1外模式模式內(nèi)模式SQL支持關(guān)系數(shù)據(jù)庫三級(jí)模式結(jié)構(gòu)當(dāng)前第14頁\共有95頁\編于星期五\0點(diǎn)SQL的基本概念(續(xù))基本表本身獨(dú)立存在的表SQL中一個(gè)關(guān)系就對(duì)應(yīng)一個(gè)基本表一個(gè)(或多個(gè))基本表對(duì)應(yīng)一個(gè)存儲(chǔ)文件一個(gè)表可以帶若干索引當(dāng)前第15頁\共有95頁\編于星期五\0點(diǎn)SQL的基本概念(續(xù))存儲(chǔ)文件邏輯結(jié)構(gòu)組成了關(guān)系數(shù)據(jù)庫的內(nèi)模式物理結(jié)構(gòu)對(duì)用戶是隱蔽的當(dāng)前第16頁\共有95頁\編于星期五\0點(diǎn)SQL的基本概念(續(xù))視圖從一個(gè)或幾個(gè)基本表導(dǎo)出的表數(shù)據(jù)庫中只存放視圖的定義而不存放視圖對(duì)應(yīng)的數(shù)據(jù)視圖是一個(gè)虛表用戶可以在視圖上再定義視圖當(dāng)前第17頁\共有95頁\編于星期五\0點(diǎn)第三章
關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL3.1SQL概述3.2學(xué)生-課程數(shù)據(jù)庫3.3數(shù)據(jù)定義3.4數(shù)據(jù)查詢3.5數(shù)據(jù)更新3.6空值的處理3.7視圖3.8小結(jié)當(dāng)前第18頁\共有95頁\編于星期五\0點(diǎn)3.2學(xué)生-課程數(shù)據(jù)庫學(xué)生-課程模式S-T: 學(xué)生表:Student(Sno,Sname,Ssex,Sage,Sdept)
課程表:Course(Cno,Cname,Cpno,Ccredit)
學(xué)生選課表:SC(Sno,Cno,Grade)
當(dāng)前第19頁\共有95頁\編于星期五\0點(diǎn)Student表學(xué)號(hào)Sno姓名Sname性別
Ssex年齡
Sage所在系
Sdept201215121李勇男20CS201215122劉晨女19CS201215123王敏女18MA201215125張立男19IS當(dāng)前第20頁\共有95頁\編于星期五\0點(diǎn)Course表課程號(hào)Cno課程名Cname先行課Cpno學(xué)分Ccredit1數(shù)據(jù)庫542數(shù)學(xué)23信息系統(tǒng)144操作系統(tǒng)635數(shù)據(jù)結(jié)構(gòu)746數(shù)據(jù)處理27PASCAL語言64當(dāng)前第21頁\共有95頁\編于星期五\0點(diǎn)SC表學(xué)號(hào)Sno
課程號(hào)
Cno
成績
Grade201215121192201215121285201215121388201215122290201215122380當(dāng)前第22頁\共有95頁\編于星期五\0點(diǎn)第三章
關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL3.1SQL概述3.2學(xué)生-課程數(shù)據(jù)庫3.3數(shù)據(jù)定義3.4數(shù)據(jù)查詢3.5數(shù)據(jù)更新3.6空值的處理3.7視圖3.8小結(jié)當(dāng)前第23頁\共有95頁\編于星期五\0點(diǎn)3.3數(shù)據(jù)定義SQL的數(shù)據(jù)定義功能:模式定義表定義視圖和索引的定義當(dāng)前第24頁\共有95頁\編于星期五\0點(diǎn)模式現(xiàn)代關(guān)系數(shù)據(jù)庫管理系統(tǒng)提供了一個(gè)層次化的數(shù)據(jù)庫對(duì)象命名機(jī)制一個(gè)關(guān)系數(shù)據(jù)庫管理系統(tǒng)的實(shí)例(Instance)中可以建立多個(gè)數(shù)據(jù)庫一個(gè)數(shù)據(jù)庫中可以建立多個(gè)模式一個(gè)模式下通常包括多個(gè)表、視圖和索引等數(shù)據(jù)庫對(duì)象數(shù)據(jù)庫(有的系統(tǒng)稱為目錄)模式表以及視圖、索引等當(dāng)前第25頁\共有95頁\編于星期五\0點(diǎn)3.3數(shù)據(jù)定義3.3.1模式的定義與刪除3.3.2基本表的定義、刪除與修改3.3.3索引的建立與刪除當(dāng)前第26頁\共有95頁\編于星期五\0點(diǎn)1.定義模式[例3.1]為用戶WANG定義一個(gè)學(xué)生-課程模式S-T
CREATESCHEMA“S-T”AUTHORIZATIONWANG;
[例3.2]CREATESCHEMAAUTHORIZATIONWANG;該語句沒有指定<模式名>,<模式名>隱含為<用戶名>當(dāng)前第27頁\共有95頁\編于星期五\0點(diǎn)定義模式(續(xù))定義模式實(shí)際上定義了一個(gè)命名空間。在這個(gè)空間中可以定義該模式包含的數(shù)據(jù)庫對(duì)象,例如基本表、視圖、索引等。在CREATESCHEMA中可以接受CREATETABLE,CREATEVIEW和GRANT子句。
CREATESCHEMA<模式名>AUTHORIZATION<用戶名>[<表定義子句>|<視圖定義子句>|<授權(quán)定義子句>]當(dāng)前第28頁\共有95頁\編于星期五\0點(diǎn)定義模式(續(xù))[例3.3]為用戶ZHANG創(chuàng)建了一個(gè)模式TEST,并且在其中定義一個(gè)表TAB1CREATESCHEMATESTAUTHORIZATIONZHANGCREATETABLETAB1(COL1SMALLINT,
COL2INT,
COL3CHAR(20),
COL4NUMERIC(10,3),
COL5DECIMAL(5,2)
);
當(dāng)前第29頁\共有95頁\編于星期五\0點(diǎn)2.刪除模式DROPSCHEMA<模式名><CASCADE|RESTRICT>CASCADE(級(jí)聯(lián))刪除模式的同時(shí)把該模式中所有的數(shù)據(jù)庫對(duì)象全部刪除RESTRICT(限制)如果該模式中定義了下屬的數(shù)據(jù)庫對(duì)象(如表、視圖等),則拒絕該刪除語句的執(zhí)行。僅當(dāng)該模式中沒有任何下屬的對(duì)象時(shí)才能執(zhí)行。當(dāng)前第30頁\共有95頁\編于星期五\0點(diǎn)刪除模式(續(xù))[例3.4]DROPSCHEMAZHANGCASCADE;刪除模式ZHANG
同時(shí)該模式中定義的表TAB1也被刪除當(dāng)前第31頁\共有95頁\編于星期五\0點(diǎn)3.3數(shù)據(jù)定義3.3.1模式的定義與刪除3.3.2基本表的定義、刪除與修改3.3.3索引的建立與刪除當(dāng)前第32頁\共有95頁\編于星期五\0點(diǎn)3.3.2基本表的定義、刪除與修改定義基本表
CREATETABLE<表名>
(<列名><數(shù)據(jù)類型>[<列級(jí)完整性約束條件>]
[,<列名><數(shù)據(jù)類型>[<列級(jí)完整性約束條件>]]
…
[,<表級(jí)完整性約束條件>]);<表名>:所要定義的基本表的名字<列名>:組成該表的各個(gè)屬性(列)<列級(jí)完整性約束條件>:涉及相應(yīng)屬性列的完整性約束條件<表級(jí)完整性約束條件>:涉及一個(gè)或多個(gè)屬性列的完整性約束條件如果完整性約束條件涉及到該表的多個(gè)屬性列,則必須定義在表級(jí)上,否則既可以定義在列級(jí)也可以定義在表級(jí)。當(dāng)前第33頁\共有95頁\編于星期五\0點(diǎn)學(xué)生表Student[例3.5]建立“學(xué)生”表Student。學(xué)號(hào)是主碼,姓名取值唯一。
CREATETABLEStudent
(SnoCHAR(9)
PRIMARYKEY,
/*列級(jí)完整性約束條件,Sno是主碼*/
SnameCHAR(20)
UNIQUE,
/*Sname取唯一值*/
SsexCHAR(2),
SageSMALLINT,
SdeptCHAR(20)
);主碼UNIQUE約束當(dāng)前第34頁\共有95頁\編于星期五\0點(diǎn)課程表Course
[例3.6]
建立一個(gè)“課程”表Course
CREATETABLECourse
(CnoCHAR(4)PRIMARYKEY,
CnameCHAR(40),
CpnoCHAR(4),
CcreditSMALLINT,
FOREIGNKEY(Cpno)REFERENCESCourse(Cno)
);先修課
Cpno是外碼被參照表是Course被參照列是Cno當(dāng)前第35頁\共有95頁\編于星期五\0點(diǎn)學(xué)生選課表SC[例3.7]建立一個(gè)學(xué)生選課表SC
CREATETABLESC
(SnoCHAR(9),
CnoCHAR(4),
GradeSMALLINT,
PRIMARYKEY(Sno,Cno),
/*主碼由兩個(gè)屬性構(gòu)成,必須作為表級(jí)完整性進(jìn)行定義*/
FOREIGNKEY(Sno)REFERENCESStudent(Sno),
/*表級(jí)完整性約束條件,Sno是外碼,被參照表是Student*/
FOREIGNKEY(Cno)REFERENCESCourse(Cno)/*表級(jí)完整性約束條件,Cno是外碼,被參照表是Course*/);當(dāng)前第36頁\共有95頁\編于星期五\0點(diǎn)2.數(shù)據(jù)類型SQL中域的概念用數(shù)據(jù)類型來實(shí)現(xiàn)定義表的屬性時(shí)需要指明其數(shù)據(jù)類型及長度選用哪種數(shù)據(jù)類型取值范圍要做哪些運(yùn)算當(dāng)前第37頁\共有95頁\編于星期五\0點(diǎn)數(shù)據(jù)類型(續(xù))數(shù)據(jù)類型含義CHAR(n),CHARACTER(n)長度為n的定長字符串VARCHAR(n),CHARACTERVARYING(n)最大長度為n的變長字符串CLOB字符串大對(duì)象BLOB二進(jìn)制大對(duì)象INT,INTEGER長整數(shù)(4字節(jié))SMALLINT短整數(shù)(2字節(jié))BIGINT大整數(shù)(8字節(jié))NUMERIC(p,d)定點(diǎn)數(shù),由p位數(shù)字(不包括符號(hào)、小數(shù)點(diǎn))組成,小數(shù)后面有d位數(shù)字DECIMAL(p,d),DEC(p,d)同NUMERICREAL取決于機(jī)器精度的單精度浮點(diǎn)數(shù)DOUBLEPRECISION取決于機(jī)器精度的雙精度浮點(diǎn)數(shù)FLOAT(n)可選精度的浮點(diǎn)數(shù),精度至少為n位數(shù)字BOOLEAN邏輯布爾量DATE日期,包含年、月、日,格式為YYYY-MM-DDTIME時(shí)間,包含一日的時(shí)、分、秒,格式為HH:MM:SSTIMESTAMP時(shí)間戳類型INTERVAL時(shí)間間隔類型當(dāng)前第38頁\共有95頁\編于星期五\0點(diǎn)3.模式與表每一個(gè)基本表都屬于某一個(gè)模式一個(gè)模式包含多個(gè)基本表定義基本表所屬模式方法一:在表名中明顯地給出模式名Createtable"S-T".Student(......);/*模式名為S-T*/Createtable"S-T".Cource(......);Createtable"S-T".SC(......);方法二:在創(chuàng)建模式語句中同時(shí)創(chuàng)建表方法三:設(shè)置所屬的模式當(dāng)前第39頁\共有95頁\編于星期五\0點(diǎn)模式與表(續(xù))創(chuàng)建基本表(其他數(shù)據(jù)庫對(duì)象也一樣)時(shí),若沒有指定模式,系統(tǒng)根據(jù)搜索路徑來確定該對(duì)象所屬的模式關(guān)系數(shù)據(jù)庫管理系統(tǒng)會(huì)使用模式列表中第一個(gè)存在的模式作為數(shù)據(jù)庫對(duì)象的模式名若搜索路徑中的模式名都不存在,系統(tǒng)將給出錯(cuò)誤顯示當(dāng)前的搜索路徑:SHOWsearch_path;搜索路徑的當(dāng)前默認(rèn)值是:$user,PUBLIC
當(dāng)前第40頁\共有95頁\編于星期五\0點(diǎn)模式與表(續(xù))數(shù)據(jù)庫管理員用戶可以設(shè)置搜索路徑,然后定義基本表
SETsearch_pathTO"S-T",PUBLIC;
CreatetableStudent(......);結(jié)果建立了S-T.Student基本表。關(guān)系數(shù)據(jù)庫管理系統(tǒng)發(fā)現(xiàn)搜索路徑中第一個(gè)模式名S-T,就把該模式作為基本表Student所屬的模式。當(dāng)前第41頁\共有95頁\編于星期五\0點(diǎn)4.修改基本表ALTERTABLE<表名>[ADD[COLUMN]<新列名><數(shù)據(jù)類型>[完整性約束]][ADD<表級(jí)完整性約束>][DROP[COLUMN]<列名>[CASCADE|RESTRICT]][DROPCONSTRAINT<完整性約束名>[RESTRICT|CASCADE]][ALTERCOLUMN<列名><數(shù)據(jù)類型>];當(dāng)前第42頁\共有95頁\編于星期五\0點(diǎn)修改基本表(續(xù))<表名>是要修改的基本表ADD子句用于增加新列、新的列級(jí)完整性約束條件和新的表級(jí)完整性約束條件DROPCOLUMN子句用于刪除表中的列如果指定了CASCADE短語,則自動(dòng)刪除引用了該列的其他對(duì)象如果指定了RESTRICT短語,則如果該列被其他對(duì)象引用,關(guān)系數(shù)據(jù)庫管理系統(tǒng)將拒絕刪除該列DROPCONSTRAINT子句用于刪除指定的完整性約束條件ALTERCOLUMN子句用于修改原有的列定義,包括修改列名和數(shù)據(jù)類型當(dāng)前第43頁\共有95頁\編于星期五\0點(diǎn)修改基本表(續(xù))[例3.8]向Student表增加“入學(xué)時(shí)間”列,其數(shù)據(jù)類型為日期型
ALTERTABLEStudentADDS_entranceDATE;不管基本表中原來是否已有數(shù)據(jù),新增加的列一律為空值
當(dāng)前第44頁\共有95頁\編于星期五\0點(diǎn)修改基本表(續(xù))[例3.9]將年齡的數(shù)據(jù)類型由字符型(假設(shè)原來的數(shù)據(jù)類型是字符型)改為整數(shù)。
ALTERTABLEStudentALTERCOLUMNSageINT;[例3.10]增加課程名稱必須取唯一值的約束條件。
ALTERTABLECourseADDUNIQUE(Cname);當(dāng)前第45頁\共有95頁\編于星期五\0點(diǎn)5.刪除基本表
DROPTABLE<表名>[RESTRICT|CASCADE];RESTRICT:刪除表是有限制的。欲刪除的基本表不能被其他表的約束所引用如果存在依賴該表的對(duì)象,則此表不能被刪除CASCADE:刪除該表沒有限制。在刪除基本表的同時(shí),相關(guān)的依賴對(duì)象一起刪除當(dāng)前第46頁\共有95頁\編于星期五\0點(diǎn)刪除基本表(續(xù))[例3.11]刪除Student表
DROPTABLEStudentCASCADE;基本表定義被刪除,數(shù)據(jù)被刪除表上建立的索引、視圖、觸發(fā)器等一般也將被刪除當(dāng)前第47頁\共有95頁\編于星期五\0點(diǎn)刪除基本表(續(xù))
[例3.12]若表上建有視圖,選擇RESTRICT時(shí)表不能刪除;選擇CASCADE時(shí)可以刪除表,視圖也自動(dòng)刪除。
CREATEVIEWIS_Student
AS SELECTSno,Sname,Sage FROMStudent WHERESdept='IS';
DROPTABLEStudentRESTRICT;--ERROR:cannotdroptableStudentbecauseotherobjectsdependonit
當(dāng)前第48頁\共有95頁\編于星期五\0點(diǎn)刪除基本表(續(xù))[例3.12續(xù)]如果選擇CASCADE時(shí)可以刪除表,視圖也自動(dòng)被刪除DROPTABLEStudentCASCADE; --NOTICE:dropcascadestoviewIS_StudentSELECT*FROMIS_Student;--ERROR:relation"IS_Student"doesnotexist當(dāng)前第49頁\共有95頁\編于星期五\0點(diǎn)刪除基本表(續(xù))序號(hào)
標(biāo)準(zhǔn)及主流數(shù)據(jù)庫
的處理方式依賴基本表的對(duì)象SQL2011KingbaseESOracle12cMSSQLServer2012RCRCC1索引無規(guī)定√√√√√2視圖×√×√√保留√保留√保留3DEFAULT,PRIMARYKEY,CHECK(只含該表的列)NOTNULL等約束√√√√√√√4外碼FOREIGNKEY×√×√×√×5觸發(fā)器TRIGGER×√×√√√√6函數(shù)或存儲(chǔ)過程×√√保留√保留√保留√保留√保留DROPTABLE時(shí),SQL2011與3個(gè)RDBMS的處理策略比較R表示RESTRICT,C表示CASCADE
'×'表示不能刪除基本表,'√'表示能刪除基本表,‘保留’表示刪除基本表后,還保留依賴對(duì)象當(dāng)前第50頁\共有95頁\編于星期五\0點(diǎn)3.3數(shù)據(jù)定義3.3.1模式的定義與刪除3.3.2基本表的定義、刪除與修改3.3.3索引的建立與刪除3.3.4數(shù)據(jù)字典當(dāng)前第51頁\共有95頁\編于星期五\0點(diǎn)3.3.3索引的建立與刪除建立索引的目的:加快查詢速度關(guān)系數(shù)據(jù)庫管理系統(tǒng)中常見索引:順序文件上的索引B+樹索引(參見愛課程網(wǎng)3.2節(jié)動(dòng)畫《B+樹的增刪改》)散列(hash)索引位圖索引特點(diǎn):B+樹索引具有動(dòng)態(tài)平衡的優(yōu)點(diǎn)HASH索引具有查找速度快的特點(diǎn)當(dāng)前第52頁\共有95頁\編于星期五\0點(diǎn)索引誰可以建立索引數(shù)據(jù)庫管理員
或表的屬主(即建立表的人)誰維護(hù)索引關(guān)系數(shù)據(jù)庫管理系統(tǒng)自動(dòng)完成
使用索引關(guān)系數(shù)據(jù)庫管理系統(tǒng)自動(dòng)選擇合適的索引作為存取路徑,用戶不必也不能顯式地選擇索引當(dāng)前第53頁\共有95頁\編于星期五\0點(diǎn)1.建立索引語句格式CREATE[UNIQUE][CLUSTER]INDEX<索引名>ON<表名>(<列名>[<次序>][,<列名>[<次序>]]…);<表名>:要建索引的基本表的名字索引:可以建立在該表的一列或多列上,各列名之間用逗號(hào)分隔<次序>:指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASCUNIQUE:此索引的每一個(gè)索引值只對(duì)應(yīng)唯一的數(shù)據(jù)記錄CLUSTER:表示要建立的索引是聚簇索引當(dāng)前第54頁\共有95頁\編于星期五\0點(diǎn)建立索引(續(xù))[例3.13]為學(xué)生-課程數(shù)據(jù)庫中的Student,Course,SC三個(gè)表建立索引。Student表按學(xué)號(hào)升序建唯一索引,Course表按課程號(hào)升序建唯一索引,SC表按學(xué)號(hào)升序和課程號(hào)降序建唯一索引
CREATEUNIQUEINDEXStusnoONStudent(Sno);
CREATEUNIQUEINDEXCoucnoONCourse(Cno);
CREATEUNIQUEINDEXSCnoONSC(SnoASC,CnoDESC);
當(dāng)前第55頁\共有95頁\編于星期五\0點(diǎn)2.修改索引ALTERINDEX<舊索引名>RENAMETO<新索引名>[例3.14]將SC表的SCno索引名改為SCSno ALTERINDEXSCnoRENAMETOSCSno;當(dāng)前第56頁\共有95頁\編于星期五\0點(diǎn)3.刪除索引DROPINDEX<索引名>;刪除索引時(shí),系統(tǒng)會(huì)從數(shù)據(jù)字典中刪去有關(guān)該索引的描述。[例3.15]刪除Student表的Stusname索引
DROPINDEXStusname;當(dāng)前第57頁\共有95頁\編于星期五\0點(diǎn)3.3數(shù)據(jù)定義3.3.1模式的定義與刪除3.3.2基本表的定義、刪除與修改3.3.3索引的建立與刪除3.3.4數(shù)據(jù)字典當(dāng)前第58頁\共有95頁\編于星期五\0點(diǎn)數(shù)據(jù)字典數(shù)據(jù)字典是關(guān)系數(shù)據(jù)庫管理系統(tǒng)內(nèi)部的一組系統(tǒng)表,它記錄了數(shù)據(jù)庫中所有定義信息:關(guān)系模式定義視圖定義索引定義完整性約束定義各類用戶對(duì)數(shù)據(jù)庫的操作權(quán)限統(tǒng)計(jì)信息等關(guān)系數(shù)據(jù)庫管理系統(tǒng)在執(zhí)行SQL的數(shù)據(jù)定義語句時(shí),實(shí)際上就是在更新數(shù)據(jù)字典表中的相應(yīng)信息。當(dāng)前第59頁\共有95頁\編于星期五\0點(diǎn)第三章
關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL3.1SQL概述3.2學(xué)生-課程數(shù)據(jù)庫3.3數(shù)據(jù)定義3.4數(shù)據(jù)查詢3.5數(shù)據(jù)更新3.6空值的處理3.7視圖3.8小結(jié)當(dāng)前第60頁\共有95頁\編于星期五\0點(diǎn)數(shù)據(jù)查詢語句格式
SELECT[ALL|DISTINCT]<目標(biāo)列表達(dá)式>[,<目標(biāo)列表達(dá)式>]…
FROM<表名或視圖名>[,<表名或視圖名>]…|(SELECT語句)
[AS]<別名>[WHERE<條件表達(dá)式>][GROUPBY<列名1>[HAVING<條件表達(dá)式>]][ORDERBY<列名2>[ASC|DESC]];
當(dāng)前第61頁\共有95頁\編于星期五\0點(diǎn)數(shù)據(jù)查詢SELECT子句:指定要顯示的屬性列FROM子句:指定查詢對(duì)象(基本表或視圖)WHERE子句:指定查詢條件GROUPBY子句:對(duì)查詢結(jié)果按指定列的值分組,該屬性列值相等的元組為一個(gè)組。通常會(huì)在每組中作用聚集函數(shù)。HAVING短語:只有滿足指定條件的組才予以輸出ORDERBY子句:對(duì)查詢結(jié)果表按指定列值的升序或降序排序當(dāng)前第62頁\共有95頁\編于星期五\0點(diǎn)3.4數(shù)據(jù)查詢3.4.1單表查詢3.4.2連接查詢3.4.3嵌套查詢3.4.4集合查詢基于派生表的查詢3.4.6Select語句的一般形式
當(dāng)前第63頁\共有95頁\編于星期五\0點(diǎn)3.4.1單表查詢查詢僅涉及一個(gè)表1.選擇表中的若干列2.選擇表中的若干元組3.ORDERBY子句4.聚集函數(shù)5.GROUPBY子句當(dāng)前第64頁\共有95頁\編于星期五\0點(diǎn)1.選擇表中的若干列查詢指定列
[例3.16]查詢?nèi)w學(xué)生的學(xué)號(hào)與姓名。
SELECTSno,Sname FROMStudent;
[例3.17]查詢?nèi)w學(xué)生的姓名、學(xué)號(hào)、所在系。
SELECTSname,Sno,Sdept FROMStudent;當(dāng)前第65頁\共有95頁\編于星期五\0點(diǎn)選擇表中的若干列(續(xù))查詢?nèi)苛羞x出所有屬性列:在SELECT關(guān)鍵字后面列出所有列名將<目標(biāo)列表達(dá)式>指定為*[例3.18]查詢?nèi)w學(xué)生的詳細(xì)記錄SELECTSno,Sname,Ssex,Sage,SdeptFROMStudent;或SELECT*FROMStudent;當(dāng)前第66頁\共有95頁\編于星期五\0點(diǎn)查詢經(jīng)過計(jì)算的值SELECT子句的<目標(biāo)列表達(dá)式>不僅可以為表中的屬性列,也可以是表達(dá)式[例3.19]查全體學(xué)生的姓名及其出生年份。SELECTSname,2014-Sage/*假設(shè)當(dāng)時(shí)為2014年*/FROMStudent;輸出結(jié)果:
Sname2014-Sage
李勇1994
劉晨1995
王敏1996
張立1995查詢經(jīng)過計(jì)算的值(續(xù))當(dāng)前第67頁\共有95頁\編于星期五\0點(diǎn)[例3.20]查詢?nèi)w學(xué)生的姓名、出生年份和所在的院系,要求用小寫字母表示系名。SELECTSname,'YearofBirth:',2014-Sage,LOWER(Sdept)FROMStudent;輸出結(jié)果:
Sname'YearofBirth:'2014-SageLOWER(Sdept)
李勇YearofBirth:1994 cs
劉晨YearofBirth:1995 cs
王敏YearofBirth:1996 ma
張立YearofBirth:1995 is查詢經(jīng)過計(jì)算的值(續(xù))當(dāng)前第68頁\共有95頁\編于星期五\0點(diǎn)使用列別名改變查詢結(jié)果的列標(biāo)題:
SELECTSnameNAME,'YearofBirth:'
BIRTH,
2014-Sage
BIRTHDAY,LOWER(Sdept)
DEPARTMENT FROMStudent;輸出結(jié)果:
NAMEBIRTHBIRTHDAYDEPARTMENT
李勇YearofBirth:1994cs
劉晨YearofBirth:1995cs
王敏YearofBirth:1996ma
張立YearofBirth:1995is查詢經(jīng)過計(jì)算的值(續(xù))當(dāng)前第69頁\共有95頁\編于星期五\0點(diǎn)3.4.1單表查詢查詢僅涉及一個(gè)表:1.選擇表中的若干列2.選擇表中的若干元組3.ORDERBY子句4.聚集函數(shù)5.GROUPBY子句當(dāng)前第70頁\共有95頁\編于星期五\0點(diǎn)消除取值重復(fù)的行 如果沒有指定DISTINCT關(guān)鍵詞,則缺省為ALL[例3.21]查詢選修了課程的學(xué)生學(xué)號(hào)。
SELECTSnoFROMSC; 等價(jià)于:
SELECTALLSnoFROMSC; 執(zhí)行上面的SELECT語句后,結(jié)果為:
Sno 201215121 201215121 201215121 201215122 2012151222.選擇表中的若干元組當(dāng)前第71頁\共有95頁\編于星期五\0點(diǎn)消除取值重復(fù)的行(續(xù))指定DISTINCT關(guān)鍵詞,去掉表中重復(fù)的行
SELECTDISTINCTSnoFROMSC;執(zhí)行結(jié)果:
Sno 201215121 201215122當(dāng)前第72頁\共有95頁\編于星期五\0點(diǎn)(2)查詢滿足條件的元組查詢條件謂詞比較=,>,<,>=,<=,!=,<>,!>,!<;NOT+上述比較運(yùn)算符確定范圍BETWEENAND,NOTBETWEENAND確定集合IN,NOTIN字符匹配LIKE,NOTLIKE空值ISNULL,ISNOTNULL多重條件(邏輯運(yùn)算)AND,OR,NOT表3.6常用的查詢條件當(dāng)前第73頁\共有95頁\編于星期五\0點(diǎn)①
比較大小[例3.22]查詢計(jì)算機(jī)科學(xué)系全體學(xué)生的名單。
SELECTSnameFROMStudentWHERESdept=‘CS’;[例3.23]查詢所有年齡在20歲以下的學(xué)生姓名及其年齡。
SELECTSname,SageFROMStudentWHERESage<20;[例3.24]查詢考試成績有不及格的學(xué)生的學(xué)號(hào)。SELECTDISTINCTSnFROMSCWHEREGrade<60;當(dāng)前第74頁\共有95頁\編于星期五\0點(diǎn)②確定范圍謂詞:
BETWEEN…AND…NOTBETWEEN…AND…[例3.25]
查詢年齡在20~23歲(包括20歲和23歲)之間的學(xué)生的姓名、系別和年齡
SELECTSname,Sdept,SageFROMStudentWHERESageBETWEEN20AND23;[例3.26]查詢年齡不在20~23歲之間的學(xué)生姓名、系別和年齡
SELECTSname,Sdept,Sage FROMStudent WHERESageNOTBETWEEN20AND23;當(dāng)前第75頁\共有95頁\編于星期五\0點(diǎn)③
確定集合謂詞:IN<值表>,NOTIN<值表>
[例3.27]查詢計(jì)算機(jī)科學(xué)系(CS)、數(shù)學(xué)系(MA)和信息系(IS)學(xué)生的姓名和性別。
SELECTSname,Ssex FROMStudent WHERESdeptIN('CS','MA’,'IS');[例3.28]查詢既不是計(jì)算機(jī)科學(xué)系、數(shù)學(xué)系,也不是信息系的學(xué)生的姓名和性別。
SELECTSname,Ssex
FROMStudent
WHERESdeptNOTIN('IS','MA’,'CS');當(dāng)前第76頁\共有95頁\編于星期五\0點(diǎn)④字符匹配謂詞:[NOT]LIKE‘<匹配串>’[ESCAPE‘<換碼字符>’]<匹配串>可以是一個(gè)完整的字符串,也可以含有通配符%和
_%(百分號(hào))代表任意長度(長度可以為0)的字符串例如a%b表示以a開頭,以b結(jié)尾的任意長度的字符串_(下橫線)代表任意單個(gè)字符。例如a_b表示以a開頭,以b結(jié)尾的長度為3的任意字符串當(dāng)前第77頁\共有95頁\編于星期五\0點(diǎn)字符匹配(續(xù))匹配串為固定字符串[例3.29]查詢學(xué)號(hào)為201215121的學(xué)生的詳細(xì)情況。
SELECT*FROMStudentWHERESnoLIKE‘201215121';等價(jià)于:
SELECT*
FROMStudent
WHERESno='201215121';當(dāng)前第78頁\共有95頁\編于星期五\0點(diǎn)字符匹配(續(xù))匹配串為含通配符的字符串[例3.30]查詢所有姓劉學(xué)生的姓名、學(xué)號(hào)和性別。
SELECTSname,Sno,SsexFROMStudentWHERESnameLIKE'劉%';[例3.31]查詢姓"歐陽"且全名為三個(gè)漢字的學(xué)生的姓名。
SELECTSnameFROMStudentWHERESnameLIKE'歐陽__';當(dāng)前第79頁\共有95頁\編于星期五\0點(diǎn)字符匹配(續(xù))[例3.32]查詢名字中第2個(gè)字為"陽"字的學(xué)生的姓名和學(xué)號(hào)。
SELECTSname,Sno
FROMStudent
WHERESnameLIKE'__陽%';[例3.33]查詢所有不姓劉的學(xué)生姓名、學(xué)號(hào)和性別。
SELECTSname,Sno,SsexFROMStudentWHERESnameNOTLIKE'劉%';當(dāng)前第80頁\共有95頁\編于星期五\0點(diǎn)字符匹配(續(xù))
使用換碼字符將通配符轉(zhuǎn)義為普通字符
[例3.34]
查詢DB_Design課程的課程號(hào)和學(xué)分。
SELECTCno,CcreditFROMCourseWHERECnameLIKE'DB\_Design'ESCAPE'\';[例3.35]查詢以"DB_"開頭,且倒數(shù)第3個(gè)字符為i的課程的詳細(xì)情況。
SELECT*FROMCourseWHERECnameLIKE'DB\_%i__'
ESCAPE'\';
ESCAPE'\'表示“\”為換碼字符
當(dāng)前第81頁\共有95頁\編于星期五\0點(diǎn)⑤
涉及空值的查詢謂詞:ISNULL或ISNOTNULL“IS”不能用“=”代替
[例3.36]某些學(xué)生選修課程后沒有參加考試,所以有選課記錄,但沒有考試成績。查詢?nèi)鄙俪煽兊膶W(xué)生的學(xué)號(hào)和相應(yīng)的課程號(hào)。
SELECTSno,CnoFROMSCWHEREGradeISNULL[例3.37]查所有有成績的學(xué)生學(xué)號(hào)和課程號(hào)。
SELECTSno,CnoFROMSCWHEREGradeISNOTNULL;當(dāng)前第82頁\共有95頁\編于星期五\0點(diǎn)⑥多重條件查詢邏輯運(yùn)算符:AND和OR來連接多個(gè)查詢條件
AND的優(yōu)先級(jí)高于OR
可以用括號(hào)改變優(yōu)先級(jí)[例3.38]查詢計(jì)算機(jī)系年齡在20歲以下的學(xué)生姓名。
SELECTSnameFROMStudentWHERESdept='CS'ANDSage<20;當(dāng)前第83頁\共有95頁\編于星期五\0點(diǎn)多重條件查詢(續(xù))改寫[例3.27][例3.27]查詢計(jì)算機(jī)科學(xué)系(CS)、數(shù)學(xué)系(MA)和信息系(IS)學(xué)生的姓名和性別。SELECTSname,SsexFROMStudentWHERESdeptIN('CS','MA','IS')可改寫為:SELECTSname,SsexFROMStudentWHERESdept='CS'ORSdept='MA'ORSdept='IS';當(dāng)前第84頁\共有95頁\編于星期五\0點(diǎn)3.4.1單表查詢查詢僅涉及一個(gè)表:1.選擇表中的若干列2.選擇表中的若干元組3.ORDERBY子句4.聚集函數(shù)5.GROUPBY子句當(dāng)前第85頁\共有95頁\編于星期五\0點(diǎn)3.ORDERBY子句ORDERBY子句可以按一個(gè)或多個(gè)屬性列排序升序:ASC;降序:DESC;缺省值為升序?qū)τ诳罩担判驎r(shí)顯示的次序由具體系統(tǒng)實(shí)現(xiàn)來決定當(dāng)前第86頁\共有95頁\編于星期五\0點(diǎn)ORDERBY子句(續(xù))[例3.39]查詢選修了3號(hào)課程的學(xué)生的學(xué)號(hào)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 吊機(jī)安裝合同范例
- 2024年生產(chǎn)車間承包與綠色供應(yīng)鏈管理合作協(xié)議3篇
- 2024年版:技術(shù)開發(fā)合同變更協(xié)議書
- 2024年工業(yè)用途車庫轉(zhuǎn)讓合同3篇
- 2024年電子競技俱樂部會(huì)員轉(zhuǎn)會(huì)合同
- 《南京地標(biāo)性景觀研究》
- 2024年度電子產(chǎn)品批量采購合同書規(guī)范范本3篇
- 《我國6-7歲女網(wǎng)球運(yùn)動(dòng)員選材指標(biāo)體系構(gòu)建及實(shí)證研究》
- 《基于LoRa的時(shí)鐘同步系統(tǒng)研究與實(shí)現(xiàn)》
- 2023年東莞市運(yùn)河治理中心自主招聘聘用人員筆試真題
- 裝飾裝修施工方案
- (完整PPT)半導(dǎo)體物理與器件物理課件
- 中班語言《新房子》3--完整版PPT課件(24頁P(yáng)PT)
- 高電壓技術(shù):5-2絕緣電阻、吸收比、泄漏電流的測(cè)量
- 王守仁英國文學(xué)選讀課后答案
- (完整版)20以內(nèi)帶括號(hào)加減法口算練習(xí)
- 奧星-計(jì)算機(jī)化系統(tǒng)驗(yàn)證要點(diǎn)分析與校準(zhǔn)管理
- 北京九強(qiáng)生物技術(shù)股份有限公司新建研發(fā)中心及參考試驗(yàn)室項(xiàng)目環(huán)境影響評(píng)價(jià)報(bào)告書簡本
- 中國國際商會(huì)入會(huì)申請(qǐng)表
- 心臟彩超電子病例檢查模塊
- 洪水計(jì)算(推理公式法)
評(píng)論
0/150
提交評(píng)論