




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
會(huì)計(jì)學(xué)1AnIntroductiontoDatabaseSystem數(shù)據(jù)庫(kù)系統(tǒng)概論AnIntroductiontoDatabaseSystem關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言第三章
關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL3.1SQL概述3.2學(xué)生-課程數(shù)據(jù)庫(kù)3.3數(shù)據(jù)定義3.4數(shù)據(jù)查詢3.5數(shù)據(jù)更新3.6視圖3.7小結(jié)第1頁(yè)/共89頁(yè)3.1SQL概述SQL(StructuredQueryLanguage)結(jié)構(gòu)化查詢語(yǔ)言,是關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL是一個(gè)通用的、功能極強(qiáng)的關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言第2頁(yè)/共89頁(yè)SQL概述(續(xù))3.1.1SQL的產(chǎn)生與發(fā)展3.1.2SQL的特點(diǎn)3.1.3SQL的基本概念第3頁(yè)/共89頁(yè)SQL標(biāo)準(zhǔn)的進(jìn)展過程
標(biāo)準(zhǔn)大致頁(yè)數(shù)發(fā)布日期SQL/861986.10SQL/89(FIPS127-1)120頁(yè)1989年SQL/92622頁(yè)1992年SQL991700頁(yè)1999年SQL20032003年第4頁(yè)/共89頁(yè)3.1SQL概述3.1.1SQL的產(chǎn)生與發(fā)展3.1.2SQL的特點(diǎn)3.1.3SQL的基本概念第5頁(yè)/共89頁(yè)3.1.2SQL的特點(diǎn)1.綜合統(tǒng)一集數(shù)據(jù)定義語(yǔ)言(DDL),數(shù)據(jù)操縱語(yǔ)言(DML),數(shù)據(jù)控制語(yǔ)言(DCL)功能于一體??梢元?dú)立完成數(shù)據(jù)庫(kù)生命周期中的全部活動(dòng):定義關(guān)系模式,插入數(shù)據(jù),建立數(shù)據(jù)庫(kù);對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行查詢和更新;數(shù)據(jù)庫(kù)重構(gòu)和維護(hù)數(shù)據(jù)庫(kù)安全性、完整性控制等用戶數(shù)據(jù)庫(kù)投入運(yùn)行后,可根據(jù)需要隨時(shí)逐步修改模式,不影響數(shù)據(jù)的運(yùn)行。數(shù)據(jù)操作符統(tǒng)一第6頁(yè)/共89頁(yè)2.高度非過程化非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操縱語(yǔ)言“面向過程”,必須制定存取路徑SQL只要提出“做什么”,無(wú)須了解存取路徑。存取路徑的選擇以及SQL的操作過程由系統(tǒng)自動(dòng)完成。第7頁(yè)/共89頁(yè)3.面向集合的操作方式非關(guān)系數(shù)據(jù)模型采用面向記錄的操作方式,操作對(duì)象是一條記錄SQL采用集合操作方式操作對(duì)象、查找結(jié)果可以是元組的集合一次插入、刪除、更新操作的對(duì)象可以是元組的集合第8頁(yè)/共89頁(yè)4.以同一種語(yǔ)法結(jié)構(gòu)提供多種使用方式SQL是獨(dú)立的語(yǔ)言能夠獨(dú)立地用于聯(lián)機(jī)交互的使用方式SQL又是嵌入式語(yǔ)言
SQL能夠嵌入到高級(jí)語(yǔ)言(例如C,C++,Java)程序中,供程序員設(shè)計(jì)程序時(shí)使用第9頁(yè)/共89頁(yè)5.語(yǔ)言簡(jiǎn)潔,易學(xué)易用SQL功能極強(qiáng),完成核心功能只用了9個(gè)動(dòng)詞。第10頁(yè)/共89頁(yè)3.1SQL概述3.1.1SQL的產(chǎn)生與發(fā)展3.1.2SQL的特點(diǎn)3.1.3SQL的基本概念第11頁(yè)/共89頁(yè)SQL的基本概念(續(xù))SQL視圖2視圖1基本表2基本表1基本表3基本表4存儲(chǔ)文件2存儲(chǔ)文件1外模式模式內(nèi)模式SQL支持關(guān)系數(shù)據(jù)庫(kù)三級(jí)模式結(jié)構(gòu)第12頁(yè)/共89頁(yè)SQL的基本概念(續(xù))基本表本身獨(dú)立存在的表SQL中一個(gè)關(guān)系就對(duì)應(yīng)一個(gè)基本表一個(gè)(或多個(gè))基本表對(duì)應(yīng)一個(gè)存儲(chǔ)文件一個(gè)表可以帶若干索引存儲(chǔ)文件邏輯結(jié)構(gòu)組成了關(guān)系數(shù)據(jù)庫(kù)的內(nèi)模式物理結(jié)構(gòu)是任意的,對(duì)用戶透明視圖從一個(gè)或幾個(gè)基本表導(dǎo)出的表數(shù)據(jù)庫(kù)中只存放視圖的定義而不存放視圖對(duì)應(yīng)的數(shù)據(jù)視圖是一個(gè)虛表用戶可以在視圖上再定義視圖第13頁(yè)/共89頁(yè)第三章
關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL3.1SQL概述3.2學(xué)生-課程數(shù)據(jù)庫(kù)3.3數(shù)據(jù)定義3.4數(shù)據(jù)查詢3.5數(shù)據(jù)更新3.6視圖3.7小結(jié)第14頁(yè)/共89頁(yè)3.2學(xué)生-課程數(shù)據(jù)庫(kù)學(xué)生-課程模式S-T:
學(xué)生表:Student(Sno,Sname,Ssex,Sage,Sdept)
課程表:Course(Cno,Cname,Cpno,Ccredit)
學(xué)生選課表:SC(Sno,Cno,Grade)
第15頁(yè)/共89頁(yè)Student表學(xué)號(hào)Sno姓名Sname性別
Ssex年齡
Sage所在系
Sdept200215121200215122200215123200515125李勇劉晨王敏張立男女女男20191819CSCSMAIS第16頁(yè)/共89頁(yè)Course表課程號(hào)Cno課程名Cname先行課Cpno學(xué)分Ccredit1234567數(shù)據(jù)庫(kù)數(shù)學(xué)信息系統(tǒng)操作系統(tǒng)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)處理PASCAL語(yǔ)言516764243424第17頁(yè)/共89頁(yè)SC表學(xué)號(hào)Sno
課程號(hào)
Cno
成績(jī)
Grade200215121200215121200215121200215122200215122123239285889080第18頁(yè)/共89頁(yè)第三章
關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL3.1SQL概述3.2學(xué)生-課程數(shù)據(jù)庫(kù)3.3數(shù)據(jù)定義3.4數(shù)據(jù)查詢3.5數(shù)據(jù)更新3.6視圖3.7小結(jié)第19頁(yè)/共89頁(yè)3.3數(shù)據(jù)定義SQL的數(shù)據(jù)定義功能:模式定義、表定義、視圖和索引的定義
第20頁(yè)/共89頁(yè)3.3數(shù)據(jù)定義3.3.1模式的定義與刪除3.3.2基本表的定義、刪除與修改3.3.3索引的建立與刪除第21頁(yè)/共89頁(yè)定義模式(續(xù))[例1]定義一個(gè)學(xué)生-課程模式S-TCREATESCHEMA“S-T”AUTHORIZATIONWANG;
為用戶WANG定義了一個(gè)模式S-T[例2]CREATESCHEMAAUTHORIZATIONWANG;
<模式名>隱含為用戶名WANG如果沒有指定<模式名>,那么<模式名>隱含為<用戶名>第22頁(yè)/共89頁(yè)定義模式(續(xù))定義模式實(shí)際上定義了一個(gè)命名空間在這個(gè)空間中可以定義該模式包含的數(shù)據(jù)庫(kù)對(duì)象,例如基本表、視圖、索引等。在CREATESCHEMA中可以接受CREATETABLE,CREATEVIEW和GRANT子句。
CREATESCHEMA<模式名>AUTHORIZATION<用戶名>[<表定義子句>|<視圖定義子句>|<授權(quán)定義子句>]第23頁(yè)/共89頁(yè)定義模式(續(xù))[例3]CREATESCHEMATESTAUTHORIZATIONZHANGCREATETABLETAB1(COL1SMALLINT,
COL2INT,
COL3CHAR(20),
COL4NUMERIC(10,3),
COL5DECIMAL(5,2));為用戶ZHANG創(chuàng)建了一個(gè)模式TEST,并在其中定義了一個(gè)表TAB1。第24頁(yè)/共89頁(yè)二、刪除模式DROPSCHEMA<模式名><CASCADE|RESTRICT>CASCADE(級(jí)聯(lián))
刪除模式的同時(shí)把該模式中所有的數(shù)據(jù)庫(kù)對(duì)象全部刪除RESTRICT(限制)
如果該模式中定義了下屬的數(shù)據(jù)庫(kù)對(duì)象(如表、視圖等),則拒絕該刪除語(yǔ)句的執(zhí)行。當(dāng)該模式中沒有任何下屬的對(duì)象時(shí)才能執(zhí)行。第25頁(yè)/共89頁(yè)刪除模式(續(xù))[例4]DROPSCHEMAZHANGCASCADE;刪除模式ZHANG
同時(shí)該模式中定義的表TAB1也被刪除第26頁(yè)/共89頁(yè)3.3數(shù)據(jù)定義3.3.1模式的定義與刪除3.3.2基本表的定義、刪除與修改3.3.3索引的建立與刪除第27頁(yè)/共89頁(yè)3.3.2基本表的定義、刪除與修改一、定義基本表CREATETABLE<表名>
(<列名><數(shù)據(jù)類型>[<列級(jí)完整性約束條件>][,<列名><數(shù)據(jù)類型>[<列級(jí)完整性約束條件>]]…[,<表級(jí)完整性約束條件>]);如果完整性約束條件涉及到該表的多個(gè)屬性列,則必須定義在表級(jí)上,否則既可以定義在列級(jí)也可以定義在表級(jí)。第28頁(yè)/共89頁(yè)學(xué)生表Student[例5]建立“學(xué)生”表Student,學(xué)號(hào)是主碼,姓名取值唯一。
CREATETABLEStudent (SnoCHAR(9)PRIMARYKEY,/*列級(jí)完整性約束條件*/SnameCHAR(20)UNIQUE,/*Sname取唯一值*/SsexCHAR(2),
SageSMALLINT,
SdeptCHAR(20));
主碼第29頁(yè)/共89頁(yè)課程表Course[例6]建立一個(gè)“課程”表CourseCREATETABLECourse(CnoCHAR(4)PRIMARYKEY,
CnameCHAR(40),
CpnoCHAR(4),
CcreditSMALLINT,
FOREIGNKEY(Cpno)REFERENCESCourse(Cno));先修課Cpno是外碼被參照表是Course被參照列是Cno第30頁(yè)/共89頁(yè)學(xué)生選課表SC[例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*/ );第31頁(yè)/共89頁(yè)二、數(shù)據(jù)類型SQL中域的概念用數(shù)據(jù)類型來(lái)實(shí)現(xiàn)定義表的屬性時(shí)需要指明其數(shù)據(jù)類型及長(zhǎng)度選用哪種數(shù)據(jù)類型取值范圍要做哪些運(yùn)算第32頁(yè)/共89頁(yè)二、數(shù)據(jù)類型數(shù)據(jù)類型含義CHAR(n)長(zhǎng)度為n的定長(zhǎng)字符串VARCHAR(n)最大長(zhǎng)度為n的變長(zhǎng)字符串INT長(zhǎng)整數(shù)(也可以寫作INTEGER)SMALLINT短整數(shù)NUMERIC(p,d)定點(diǎn)數(shù),由p位數(shù)字(不包括符號(hào)、小數(shù)點(diǎn))組成,小數(shù)后面有d位數(shù)字REAL取決于機(jī)器精度的浮點(diǎn)數(shù)DoublePrecision取決于機(jī)器精度的雙精度浮點(diǎn)數(shù)FLOAT(n)浮點(diǎn)數(shù),精度至少為n位數(shù)字DATE日期,包含年、月、日,格式為YYYY-MM-DDTIME時(shí)間,包含一日的時(shí)、分、秒,格式為HH:MM:SS第33頁(yè)/共89頁(yè)三、模式與表每一個(gè)基本表都屬于某一個(gè)模式一個(gè)模式包含多個(gè)基本表定義基本表所屬模式方法一:在表名中明顯地給出模式名Createtable“S-T”.Student(......);/*模式名為S-T*/Createtable“S-T”.Cource(......);Createtable“S-T”.SC(......);方法二:在創(chuàng)建模式語(yǔ)句中同時(shí)創(chuàng)建表方法三:設(shè)置所屬的模式第34頁(yè)/共89頁(yè)模式與表(續(xù))創(chuàng)建基本表(其他數(shù)據(jù)庫(kù)對(duì)象也一樣)時(shí),若沒有指定模式,系統(tǒng)根據(jù)搜索路徑來(lái)確定該對(duì)象所屬的模式RDBMS會(huì)使用模式列表中第一個(gè)存在的模式作為數(shù)據(jù)庫(kù)對(duì)象的模式名若搜索路徑中的模式名都不存在,系統(tǒng)將給出錯(cuò)誤顯示當(dāng)前的搜索路徑:SHOWsearch_path;搜索路徑的當(dāng)前默認(rèn)值是:$user,PUBLIC
第35頁(yè)/共89頁(yè)模式與表(續(xù))DBA用戶可以設(shè)置搜索路徑,然后定義基本表
SETsearch_pathTO“S-T”,PUBLIC;
CreatetableStudent(......);結(jié)果建立了S-T.Student基本表。RDBMS發(fā)現(xiàn)搜索路徑中第一個(gè)模式名S-T存在,就把該模式作為基本表Student所屬的模式。第36頁(yè)/共89頁(yè)四、修改基本表ALTERTABLE<表名>[ADD<新列名><數(shù)據(jù)類型>[完整性約束]][DROP<完整性約束名>][ALTERCOLUMN<列名><數(shù)據(jù)類型>];第37頁(yè)/共89頁(yè)修改基本表(續(xù))[例8]向Student表增加“入學(xué)時(shí)間”列,其數(shù)據(jù)類型為日期型。
ALTERTABLEStudentADDS_entranceDATE;不論基本表中原來(lái)是否已有數(shù)據(jù),新增加的列一律為空值。
[例9]將年齡的數(shù)據(jù)類型由字符型(假設(shè)原來(lái)的數(shù)據(jù)類型是字符型)改為整數(shù)。
ALTERTABLEStudentALTERCOLUMNSageINT;[例10]增加課程名稱必須取唯一值的約束條件。
ALTERTABLECourseADDUNIQUE(Cname);第38頁(yè)/共89頁(yè)五、刪除基本表 DROPTABLE<表名>[RESTRICT|CASCADE];RESTRICT:刪除表是有限制的。欲刪除的基本表不能被其他表的約束所引用如果存在依賴該表的對(duì)象,則此表不能被刪除CASCADE:刪除該表沒有限制。在刪除基本表的同時(shí),相關(guān)的依賴對(duì)象一起刪除第39頁(yè)/共89頁(yè)刪除基本表(續(xù))[例11]刪除Student表
DROPTABLEStudentCASCADE;基本表定義被刪除,數(shù)據(jù)被刪除表上建立的索引、視圖、觸發(fā)器等一般也將被刪除第40頁(yè)/共89頁(yè)刪除基本表(續(xù))[例12]若表上建有視圖,選擇RESTRICT時(shí)表不能刪除
CREATEVIEWIS_Student AS SELECTSno,Sname,Sage FROMStudent WHERESdept='IS';
DROPTABLEStudentRESTRICT;--ERROR:cannotdroptableStudentbecauseotherobjectsdependonit
第41頁(yè)/共89頁(yè)刪除基本表(續(xù))[例12]如果選擇CASCADE時(shí)可以刪除表,視圖也自動(dòng)被刪除
DROPTABLEStudentCASCADE; --NOTICE:dropcascadestoviewIS_StudentSELECT*FROMIS_Student;--ERROR:relation"IS_Student"doesnotexist
第42頁(yè)/共89頁(yè)刪除基本表(續(xù))序號(hào)
標(biāo)準(zhǔn)及主流數(shù)據(jù)庫(kù)的處理方式依賴基本表的對(duì)象SQL99KingbaseESORACLE9iMSSQLSERVER2000RCRCC1.索引無(wú)規(guī)定√√√√√2.視圖×√×√√保留√保留√保留3.DEFAULT,PRIMARYKEY,CHECK(只含該表的列)NOTNULL等約束√√√√√√√4.ForeignKey×√×√×√×5.TRIGGER×√×√√√√6.函數(shù)或存儲(chǔ)過程×√√保留√保留√保留√保留√保留DROPTABLE時(shí),SQL99與3個(gè)RDBMS的處理策略比較R表示RESTRICT,C表示CASCADE'×'表示不能刪除基本表,'√'表示能刪除基本表,‘保留’表示刪除基本表后,還保留依賴對(duì)象第43頁(yè)/共89頁(yè)3.3數(shù)據(jù)定義3.3.1模式的定義與刪除3.3.2基本表的定義、刪除與修改3.3.3索引的建立與刪除第44頁(yè)/共89頁(yè)3.3.3索引的建立與刪除建立索引的目的:加快查詢速度誰(shuí)可以建立索引DBA或表的屬主(即建立表的人)DBMS一般會(huì)自動(dòng)建立以下列上的索引
PRIMARYKEYUNIQUE誰(shuí)維護(hù)索引
DBMS自動(dòng)完成
使用索引
DBMS自動(dòng)選擇是否使用索引以及使用哪些索引第45頁(yè)/共89頁(yè)索引RDBMS中索引一般采用B+樹、HASH索引來(lái)實(shí)現(xiàn)B+樹索引具有動(dòng)態(tài)平衡的優(yōu)點(diǎn)HASH索引具有查找速度快的特點(diǎn)采用B+樹,還是HASH索引則由具體的RDBMS來(lái)決定索引是關(guān)系數(shù)據(jù)庫(kù)的內(nèi)部實(shí)現(xiàn)技術(shù),屬于內(nèi)模式的范疇CREATEINDEX語(yǔ)句定義索引時(shí),可以定義索引是唯一索引、非唯一索引或聚簇索引第46頁(yè)/共89頁(yè)一、建立索引語(yǔ)句格式CREATE[UNIQUE][CLUSTER]INDEX<索引名>ON<表名>(<列名>[<次序>][,<列名>[<次序>]]…); 第47頁(yè)/共89頁(yè)建立索引(續(xù))[例13]CREATECLUSTERINDEXStusnameONStudent(Sname);在Student表的Sname(姓名)列上建立一個(gè)聚簇索引在最經(jīng)常查詢的列上建立聚簇索引以提高查詢效率一個(gè)基本表上最多只能建立一個(gè)聚簇索引經(jīng)常更新的列不宜建立聚簇索引
第48頁(yè)/共89頁(yè)建立索引(續(xù))[例14]為學(xué)生-課程數(shù)據(jù)庫(kù)中的Student,Course,SC三個(gè)表建立索引。
CREATEUNIQUEINDEXStusnoONStudent(Sno);CREATEUNIQUEINDEXCoucnoONCourse(Cno);CREATEUNIQUEINDEXSCnoONSC(SnoASC,CnoDESC);
Student表按學(xué)號(hào)升序建唯一索引
Course表按課程號(hào)升序建唯一索引
SC表按學(xué)號(hào)升序和課程號(hào)降序建唯一索引第49頁(yè)/共89頁(yè)二、刪除索引DROPINDEX<索引名>;刪除索引時(shí),系統(tǒng)會(huì)從數(shù)據(jù)字典中刪去有關(guān)該索引的描述。[例15]刪除Student表的Stusname索引
DROPINDEXStusname;第50頁(yè)/共89頁(yè)第三章
關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL3.1SQL概述3.2學(xué)生-課程數(shù)據(jù)庫(kù)3.3數(shù)據(jù)定義3.4數(shù)據(jù)查詢3.5數(shù)據(jù)更新3.6視圖3.7小結(jié)第51頁(yè)/共89頁(yè)數(shù)據(jù)查詢語(yǔ)句格式
SELECT[ALL|DISTINCT]<目標(biāo)列表達(dá)式>[,<目標(biāo)列表達(dá)式>]…FROM<表名或視圖名>[,<表名或視圖名>]…[WHERE<條件表達(dá)式>][GROUPBY<列名1>[HAVING<條件表達(dá)式>]][ORDERBY<列名2>[ASC|DESC]];
第52頁(yè)/共89頁(yè)3.4數(shù)據(jù)查詢3.4.1單表查詢3.4.2連接查詢3.4.3嵌套查詢3.4.4集合查詢3.4.5Select語(yǔ)句的一般形式
第53頁(yè)/共89頁(yè)3.4.1單表查詢查詢僅涉及一個(gè)表:一、選擇表中的若干列二、選擇表中的若干元組三、ORDERBY子句四、聚集函數(shù)五、GROUPBY子句第54頁(yè)/共89頁(yè)一、選擇表中的若干列查詢指定列
[例1]查詢?nèi)w學(xué)生的學(xué)號(hào)與姓名。
SELECTSno,Sname FROMStudent;
[例2]查詢?nèi)w學(xué)生的姓名、學(xué)號(hào)、所在系。
SELECTSname,Sno,Sdept FROMStudent;第55頁(yè)/共89頁(yè)2.查詢?nèi)苛羞x出所有屬性列:在SELECT關(guān)鍵字后面列出所有列名將<目標(biāo)列表達(dá)式>指定為*[例3]查詢?nèi)w學(xué)生的詳細(xì)記錄。SELECTSno,Sname,Ssex,Sage,SdeptFROMStudent;或SELECT*FROMStudent;第56頁(yè)/共89頁(yè)3.查詢經(jīng)過計(jì)算的值SELECT子句的<目標(biāo)列表達(dá)式>可以為:算術(shù)表達(dá)式字符串常量函數(shù)列別名第57頁(yè)/共89頁(yè)[例4]查全體學(xué)生的姓名及其出生年份。SELECTSname,2004-Sage/*假定當(dāng)年的年份為2004年*/FROMStudent;
輸出結(jié)果:
Sname2004-Sage
李勇 1984
劉晨 1985
王敏 1986
張立 1985查詢經(jīng)過計(jì)算的值(續(xù))第58頁(yè)/共89頁(yè)查詢經(jīng)過計(jì)算的值(續(xù))[例5]查詢?nèi)w學(xué)生的姓名、出生年份和所有系,要求用小寫字母表示所有系名SELECTSname,‘YearofBirth:',2004-Sage,
ISLOWER(Sdept)FROMStudent;輸出結(jié)果:
Sname'YearofBirth:'2004-SageISLOWER(Sdept)
李勇YearofBirth:1984 cs
劉晨YearofBirth:1985 is
王敏YearofBirth:1986 ma
張立YearofBirth:1985 is第59頁(yè)/共89頁(yè)查詢經(jīng)過計(jì)算的值(續(xù))使用列別名改變查詢結(jié)果的列標(biāo)題:
SELECTSnameNAME,'YearofBirth:’
BIRTH,
2000-SageBIRTHDAY,LOWER(Sdept)DEPARTMENT FROM
Student;輸出結(jié)果:
NAMEBIRTHBIRTHDAYDEPARTMENT------------------------------------------------------
李勇YearofBirth:1984cs
劉晨YearofBirth:1985is
王敏YearofBirth:1986ma
張立YearofBirth:1985is第60頁(yè)/共89頁(yè)3.4.1單表查詢查詢僅涉及一個(gè)表:一、選擇表中的若干列二、選擇表中的若干元組三、ORDERBY子句四、聚集函數(shù)五、GROUPBY子句第61頁(yè)/共89頁(yè)二、選擇表中的若干元組1.消除取值重復(fù)的行
如果沒有指定DISTINCT關(guān)鍵詞,則缺省為ALL
[例6]查詢選修了課程的學(xué)生學(xué)號(hào)。
SELECTSnoFROMSC; 等價(jià)于:
SELECTALLSnoFROMSC; 執(zhí)行上面的SELECT語(yǔ)句后,結(jié)果為:
Sno 200215121 200215121 200215121 200215122 200215122第62頁(yè)/共89頁(yè)消除取值重復(fù)的行(續(xù))指定DISTINCT關(guān)鍵詞,去掉表中重復(fù)的行
SELECTDISTINCTSnoFROMSC;執(zhí)行結(jié)果:
Sno 200215121 200215122第63頁(yè)/共89頁(yè)2.查詢滿足條件的元組查詢條件謂詞比較=,>,<,>=,<=,!=,<>,!>,!<;NOT+上述比較運(yùn)算符確定范圍BETWEENAND,NOTBETWEENAND確定集合IN,NOTIN字符匹配LIKE,NOTLIKE空值ISNULL,ISNOTNULL多重條件(邏輯運(yùn)算)AND,OR,NOT表3.4常用的查詢條件第64頁(yè)/共89頁(yè)(1)比較大?。劾?]查詢計(jì)算機(jī)科學(xué)系全體學(xué)生的名單。
SELECTSnameFROMStudentWHERESdept=‘CS’;[例8]查詢所有年齡在20歲以下的學(xué)生姓名及其年齡。
SELECTSname,SageFROMStudentWHERESage<20;[例9]查詢考試成績(jī)有不及格的學(xué)生的學(xué)號(hào)。
SELECTDISTINCTSnoFROMSCWHEREGrade<60;第65頁(yè)/共89頁(yè)(2)確定范圍謂詞:BETWEEN…AND…NOTBETWEEN…AND…[例10]查詢年齡在20~23歲(包括20歲和23歲)之間的學(xué)生的姓名、系別和年齡
SELECTSname,Sdept,SageFROMStudentWHERESageBETWEEN20AND23;[例11]查詢年齡不在20~23歲之間的學(xué)生姓名、系別和年齡
SELECTSname,Sdept,Sage FROMStudent WHERESageNOTBETWEEN20AND23;第66頁(yè)/共89頁(yè)(3)確定集合謂詞:IN<值表>,NOTIN<值表>
[例12]查詢信息系(IS)、數(shù)學(xué)系(MA)和計(jì)算機(jī)科學(xué)系(CS)學(xué)生的姓名和性別。
SELECTSname,Ssex FROMStudent WHERESdeptIN('IS','MA','CS');[例13]查詢既不是信息系、數(shù)學(xué)系,也不是計(jì)算機(jī)科學(xué)系的學(xué)生的姓名和性別。SELECTSname,SsexFROMStudent WHERESdeptNOTIN('IS','MA','CS');第67頁(yè)/共89頁(yè)(4)字符匹配謂詞:
[NOT]LIKE‘<匹配串>’[ESCAPE‘<換碼字符>’]匹配串為固定字符串[例14]查詢學(xué)號(hào)為200215121的學(xué)生的詳細(xì)情況。
SELECT*FROMStudentWHERESnoLIKE‘200215121';等價(jià)于:
SELECT*FROMStudentWHERESno='200215121';第68頁(yè)/共89頁(yè)字符匹配(續(xù))2)匹配串為含通配符的字符串[例15]查詢所有姓劉學(xué)生的姓名、學(xué)號(hào)和性別。
SELECTSname,Sno,SsexFROMStudentWHERESnameLIKE‘劉%’;[例16]查詢姓"歐陽(yáng)"且全名為三個(gè)漢字的學(xué)生的姓名。
SELECTSnameFROMStudentWHERESnameLIKE'歐陽(yáng)__';第69頁(yè)/共89頁(yè)字符匹配(續(xù))[例17]查詢名字中第2個(gè)字為"陽(yáng)"字的學(xué)生的姓名和學(xué)號(hào)。
SELECTSname,SnoFROMStudentWHERESnameLIKE‘__陽(yáng)%’;[例18]查詢所有不姓劉的學(xué)生姓名。
SELECTSname,Sno,SsexFROMStudentWHERESnameNOTLIKE'劉%';第70頁(yè)/共89頁(yè)字符匹配(續(xù))3)使用換碼字符將通配符轉(zhuǎn)義為普通字符
[例19]查詢DB_Design課程的課程號(hào)和學(xué)分。
SELECTCno,CcreditFROMCourseWHERECnameLIKE'DB\_Design'ESCAPE'\‘;[例20]查詢以"DB_"開頭,且倒數(shù)第3個(gè)字符為i的課程的詳細(xì)情況。
SELECT*FROMCourseWHERECnameLIKE'DB\_%i__'ESCAPE'\‘;
ESCAPE'\'表示“\”為換碼字符
第71頁(yè)/共89頁(yè)(5)涉及空值的查詢謂詞:
ISNULL或ISNOTNULL“IS”不能用“=”代替
[例21]某些學(xué)生選修課程后沒有參加考試,所以有選課記錄,但沒有考試成績(jī)。查詢?nèi)鄙俪煽?jī)的學(xué)生的學(xué)號(hào)和相應(yīng)的課程號(hào)。
SELECTSno,CnoFROMSCWHEREGradeISNULL[例22]查所有有成績(jī)的學(xué)生學(xué)號(hào)和課程號(hào)。
SELECTSno,CnoFROMSCWHEREGradeISNOTNULL;第72頁(yè)/共89頁(yè)(6)多重條件查詢邏輯運(yùn)算符:AND和OR來(lái)聯(lián)結(jié)多個(gè)查詢條件
AND的優(yōu)先級(jí)高于OR
可以用括號(hào)改變優(yōu)先級(jí)可用來(lái)實(shí)現(xiàn)多種其他謂詞
[NOT]IN[NOT]BETWEEN…AND…第73頁(yè)/共89頁(yè)多重條件查詢(續(xù))[例23]查詢計(jì)算機(jī)系年齡在20歲以下的學(xué)生姓名。
SELECTSnameFROMStudentWHERESdept='CS'ANDSage<20;第74頁(yè)/共89頁(yè)多重條件查詢(續(xù))改寫[例12][例12]查詢信息系(IS)、數(shù)學(xué)系(MA)和計(jì)算機(jī)科學(xué)系(CS)學(xué)生的姓名和性別。SELECTSname,SsexFROMStudentWHERESdeptIN('IS','MA','CS')可改寫為:SELECTSname,SsexFROMStudentWHERESdept='IS'ORSdept='MA'ORSdept='CS';第75頁(yè)/共89頁(yè)3.4.1單表查詢查詢僅涉及一個(gè)表:一、選擇表中的若干列二、選擇表中的若干元組三、ORDERBY子句四、聚集函數(shù)五、GROUPBY子句第76頁(yè)/共89頁(yè)三、ORDERBY子句ORDERBY子句可以按一個(gè)或多個(gè)屬性列排序升序:ASC;降序:DESC;缺省值為升序當(dāng)排序列含空值時(shí)ASC:排序列為空值的元組最后顯示DESC:排序列為空值的元組最先顯示第77頁(yè)/共89頁(yè)ORDERBY子句(續(xù))[例24]查詢選修了3號(hào)課程的學(xué)生的學(xué)號(hào)及其成績(jī),查詢結(jié)果按分?jǐn)?shù)降序排列。
SELECTSno,GradeFROMSCWHERECno='3'ORDERBYGradeDESC;[例25]查詢?nèi)w學(xué)生情況,查詢結(jié)果按所在系的系號(hào)升序排列,同一系中的學(xué)生按年齡降序排列。
SELECT*FROMStuden
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 對(duì)分包單位的進(jìn)場(chǎng)安全總交底
- 2025年消霧塔項(xiàng)目發(fā)展計(jì)劃
- 《紅樓夢(mèng)》閱讀考題
- 江蘇省鹽城市射陽(yáng)縣2024-2025學(xué)年八年級(jí)下學(xué)期3月月考英語(yǔ)試題(原卷版+解析版)
- 實(shí)驗(yàn)室儀器采購(gòu) 投標(biāo)方案(技術(shù)方案)
- 城市供水系統(tǒng)優(yōu)化管理方案
- 醫(yī)藥冷鏈運(yùn)輸公司排名
- 孝感城區(qū)智慧燃?xì)忭?xiàng)目可行性研究報(bào)告
- 開發(fā)項(xiàng)目居間合同
- 2025年度北京市餐廳裝修與品牌故事創(chuàng)作合同
- 第2課 中華文化的世界意義 說課稿-2023-2024學(xué)年高中歷史統(tǒng)編版(2019)選擇性必修3
- 2.2學(xué)會(huì)管理情緒 課件 -2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)下冊(cè)
- 加油站常見安全隱患
- 2025年醫(yī)院基本公共衛(wèi)生服務(wù)項(xiàng)目工作計(jì)劃
- 2025年福建能化集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 江蘇省中小學(xué)生金鑰匙科技競(jìng)賽(高中組)考試題及答案
- 護(hù)理個(gè)案介入手術(shù)案例
- 《異常子宮出血診斷與治療指南(2022更新版)》解讀
- 國(guó)際貿(mào)易行業(yè)的知識(shí)產(chǎn)權(quán)保護(hù)培訓(xùn)
- DB37T 2216-2012 10kV及以下電力用戶受電工程技術(shù)規(guī)范
- 2024秋新冀教版英語(yǔ)七年級(jí)上冊(cè)教學(xué)課件 Unit 3 Lesson 3
評(píng)論
0/150
提交評(píng)論