![理學(xué)建表單表查詢_第1頁](http://file4.renrendoc.com/view2/M01/2C/3C/wKhkFmZ4z6iAYKdEAAE-7PrgbRc677.jpg)
![理學(xué)建表單表查詢_第2頁](http://file4.renrendoc.com/view2/M01/2C/3C/wKhkFmZ4z6iAYKdEAAE-7PrgbRc6772.jpg)
![理學(xué)建表單表查詢_第3頁](http://file4.renrendoc.com/view2/M01/2C/3C/wKhkFmZ4z6iAYKdEAAE-7PrgbRc6773.jpg)
![理學(xué)建表單表查詢_第4頁](http://file4.renrendoc.com/view2/M01/2C/3C/wKhkFmZ4z6iAYKdEAAE-7PrgbRc6774.jpg)
![理學(xué)建表單表查詢_第5頁](http://file4.renrendoc.com/view2/M01/2C/3C/wKhkFmZ4z6iAYKdEAAE-7PrgbRc6775.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
AnIntroductiontoDatabaseSystemSQL語言
1974年由Boyce和Chamberlin提出SQL全稱—StructuredQueryLanguage原名:SEQUEL(StructuredEnglishQUEryLanguage)前身:SQUARE(SpecifyingQUEriesasRelationalExpressions)1975年~1979年IBM公司在SystemR原型系統(tǒng)上實(shí)現(xiàn)是關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言,是數(shù)據(jù)庫領(lǐng)域中一個(gè)主流語言3.1SQL概述AnIntroductiontoDatabaseSystem3.1SQL概述(續(xù))SQL標(biāo)準(zhǔn)
SQL-86第一個(gè)SQL標(biāo)準(zhǔn)由美國國家標(biāo)準(zhǔn)局(AmericanNationalStandardInstitute,簡稱ANSI)公布1987年國際標(biāo)準(zhǔn)化組織(InternationalOrganizationforStandardization,簡稱ISO)通過
SQL-89,SQL1SQL-92,SQL2SQL-99,SQL3SQL-2003AnIntroductiontoDatabaseSystem3.1SQL概述(續(xù))SQL的特點(diǎn)1.綜合統(tǒng)一2.高度非過程化3.面向集合的操作方式4.以同一種語法結(jié)構(gòu)提供兩種使用方法5.語言簡潔,易學(xué)易用AnIntroductiontoDatabaseSystem1.綜合統(tǒng)一SQL語言集數(shù)據(jù)定義語言DDL、數(shù)據(jù)操縱語言DML、數(shù)據(jù)控制語言DCL的功能于一體非關(guān)系模型的數(shù)據(jù)語言模式數(shù)據(jù)定義語言(模式DDL)外模式數(shù)據(jù)定義語言(外模式DDL或子模式DDL)與數(shù)據(jù)存儲有關(guān)的描述語言(DSDL)數(shù)據(jù)操縱語言(DML)AnIntroductiontoDatabaseSystem2.高度非過程化用戶只需提出“做什么”,而不必指明“怎么做”存取路徑的選擇以及SQL語句的操作過程由系統(tǒng)自動(dòng)完成。大大減輕了用戶負(fù)擔(dān),而且有利于提高數(shù)據(jù)獨(dú)立性。AnIntroductiontoDatabaseSystem3.面向集合的操作方式SQL語言采用集合操作方式操作對象、查找結(jié)果可以是元組的集合一次插入、刪除、更新操作的對象可以是元組的集合非關(guān)系數(shù)據(jù)模型采用的是面向記錄的操作方式,操作對象是一條記錄。AnIntroductiontoDatabaseSystem4.同一種語法結(jié)構(gòu)提供兩種使用方式自含式語言(交互式)能夠獨(dú)立地用于聯(lián)機(jī)交互的使用方式嵌入式語言(宿主式)能夠嵌入到高級語言(例如C,COBOL,F(xiàn)ORTRAN,PL/1)程序中,供程序員設(shè)計(jì)程序時(shí)使用。兩種不同使用方式下,SQL語言的語法結(jié)構(gòu)基本一致AnIntroductiontoDatabaseSystem5.語言簡捷,易學(xué)易用AnIntroductiontoDatabaseSystemSQL語言的基本概念SQL語言支持關(guān)系數(shù)據(jù)庫三級模式結(jié)構(gòu)AnIntroductiontoDatabaseSystem用戶用SQL語言對基本表和視圖進(jìn)行操作基本表本身獨(dú)立存在的表,在SQL中一個(gè)關(guān)系就對應(yīng)一個(gè)表一個(gè)(或多個(gè))基本表對應(yīng)一個(gè)存儲文件一個(gè)表可以帶若干索引,索引也存放在存儲文件中存儲文件存儲文件的邏輯結(jié)構(gòu)組成了關(guān)系數(shù)據(jù)庫的內(nèi)模式存儲文件的物理結(jié)構(gòu)是任意的,對用戶是透明的視圖從一個(gè)或幾個(gè)基本表或視圖導(dǎo)出的表是虛表,只存放視圖的定義而不存放對應(yīng)數(shù)據(jù)AnIntroductiontoDatabaseSystem3.2數(shù)據(jù)定義SQL的數(shù)據(jù)定義功能定義表(模式)
創(chuàng)建表刪除表修改表定義定義視圖(外模式)
創(chuàng)建視圖刪除視圖間接修改視圖定義:刪除+創(chuàng)建定義索引(內(nèi)模式)
創(chuàng)建索引刪除索引間接修改索引定義:刪除+創(chuàng)建AnIntroductiontoDatabaseSystem3.2數(shù)據(jù)定義(續(xù))AnIntroductiontoDatabaseSystem3.2.1定義、刪除與修改基本表一、定義基本表(CREATETABLE)二、修改基本表(ALTERTABLE)三、刪除基本表(DROPTABLE)AnIntroductiontoDatabaseSystem一、定義基本表語句格式CREATETABLE<表名>
(<列名><數(shù)據(jù)類型>[<列級完整性約束條件>][,<列名><數(shù)據(jù)類型>[<列級完整性約束條件>]]…[,<表級完整性約束條件>]);<表名>:所要定義的基本表的名字<列名>:組成該表的各個(gè)屬性(列)<列級完整性約束條件>:涉及相應(yīng)屬性列的完整性約束條件<表級完整性約束條件>:涉及一個(gè)或多個(gè)屬性列的完整性約束條件AnIntroductiontoDatabaseSystem一個(gè)簡單例子 [例1]建立一個(gè)“學(xué)生”表Student,它由學(xué)號Sno、姓名Sname、性別Ssex、年齡Sage、所在系Sdept五個(gè)屬性組成。。
CREATETABLEStudent(SnoCHAR(5)PRIMARYKEY,
SnameCHAR(20),
SsexCHAR(1),
SageINT,
SdeptCHAR(15));AnIntroductiontoDatabaseSystem例題(續(xù))AnIntroductiontoDatabaseSystem數(shù)據(jù)類型CHAR(n)VARCHAR(n)INTSMALLINTNUMERIC(p,s)FLOAT(n)DATETIMEAnIntroductiontoDatabaseSystem定義基本表(續(xù))不同的數(shù)據(jù)庫系統(tǒng)支持的數(shù)據(jù)類型不完全相Transact-SQL含有以下基本數(shù)據(jù)類型:biginttinyintbitintSmallintrealDecimalfloatmoneysmallmoneycharNcharntextnvarcharVarcharsmalldatetimetimestampdatetimeimageVarbinarytextBinary
uniqueidentifierAnIntroductiontoDatabaseSystem常用完整性約束實(shí)體完整性約束:PRIMARYKEY參照完整性約束:FOREIGNKEY用戶定義的完整性約束唯一性約束:UNIQUE非空值約束:NOTNULL檢查性約束:CHECKAnIntroductiontoDatabaseSystem實(shí)體完整性定義[例]建立一個(gè)“學(xué)生選課”表SC,它由學(xué)號Sno、課程號Cno,修課成績Grade組成,其中(Sno,Cno)為主碼。CREATETABLESC(SnoCHAR(5),CnoCHAR(3),Gradeint,
PRIMARYKEY(Sno,Cno));AnIntroductiontoDatabaseSystem參照完整性定義CREATETABLESC(SnoCHAR(5)REFERENCESStudent(Sno),CnoCHAR(3)REFERENCESCourse(Cno),Gradeint,PRIMARYKEY(Sno,Cno));AnIntroductiontoDatabaseSystem破壞參照完整性的四種情況參照表——拒絕插入一個(gè)元組修改外碼的值被參照表——拒絕,級聯(lián)操作,置空值,置缺省值刪除一個(gè)元組修改主碼的值被參照表Sno參照表Student(Sno,……)←SC(Sno,Cno,Grade)AnIntroductiontoDatabaseSystem違約處理策略拒絕操作 NOACTION級聯(lián)操作 CASCADE置空值 SETNULL 置缺省值 SETDEFAULTAnIntroductiontoDatabaseSystemCREATETABLESC(SnoCHAR(5)REFERENCES
Student(Sno),CnoCHAR(3),Gradeint,PRIMARYKEY(Sno,Cno), FOREIGNKEYCnoREFERENCES
Course(Cno) ONDELETENOACTION ONUPDATECASCADE);AnIntroductiontoDatabaseSystem用戶定義的完整性例:CREATETABLEStudent(SnoCHAR(5)UNIQUE,
SnameCHAR(20)NOTNULL,
SsexCHAR(1)CHECK(SsexIN(‘F’,’M’)),
SageINTDEFAULT18,
SdeptCHAR(15));AnIntroductiontoDatabaseSystem用戶定義的完整性例:CreateTableRCDA (編號 Char(8)PrimaryKey,
性別 Char(2),
出生日期 Datetime,
工資現(xiàn)狀 Decimal(10,2)
Default 1000
Check (工資現(xiàn)狀<10000) )AnIntroductiontoDatabaseSystem二、修改基本表語句格式ALTERTABLE<表名>[ADD<新列名><數(shù)據(jù)類型>[完整性約束]][DROP<完整性約束名>][MODIFY<列名><數(shù)據(jù)類型>];<表名>:要修改的基本表ADD子句:增加新列和新的完整性約束條件DROP子句:刪除指定的完整性約束條件MODIFY子句:用于修改列名和數(shù)據(jù)類型AnIntroductiontoDatabaseSystem例題[例2]向Student表增加“入學(xué)時(shí)間”列,其數(shù)據(jù)類型為日期型。
ALTERTABLEStudentADDScomeDATE;不論基本表中原來是否已有數(shù)據(jù),新增加的列一律為空值。
[例3]將年齡的數(shù)據(jù)類型改為半字長整數(shù)。
ALTERTABLEStudentMODIFYSageSMALLINT;修改原有的列定義有可能會(huì)破壞已有數(shù)據(jù)。[例4]刪除學(xué)生姓名必須取唯一值的約束。
ALTERTABLEStudentDROPUNIQUE(Sname);AnIntroductiontoDatabaseSystem語句格式(續(xù))刪除屬性列間接刪除把表中要保留的列及其內(nèi)容復(fù)制到一個(gè)新表中刪除原表再將新表重命名為原表名直接刪除屬性列:(新)
例:ALTERTABLEStudentDropScome;AnIntroductiontoDatabaseSystem三、刪除基本表 DROPTABLE<表名>;
[例5]刪除Student表
DROPTABLE
Student;基本表刪除 數(shù)據(jù)、表上的索引都刪除 表上的視圖往往仍然保留,但 無法引用AnIntroductiontoDatabaseSystem3.2.2建立與刪除索引建立索引是加快查詢速度的有效手段建立索引DBA或表的屬主(即建立表的人)根據(jù)需要建立有些DBMS自動(dòng)建立以下列上的索引
PRIMARYKEYUNIQUE維護(hù)索引
DBMS自動(dòng)完成
使用索引
DBMS自動(dòng)選擇是否使用索引以及使用哪些索引AnIntroductiontoDatabaseSystemAnIntroductiontoDatabaseSystem一、建立索引語句格式CREATE[UNIQUE][CLUSTER]INDEX<索引名>ON<表名>(<列名>[<次序>][,<列名>[<次序>]]…);
<表名>指定要建索引的基本表名字索引可以建立在該表的一列或多列上,各列名之間用逗號分隔<次序>指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASCUNIQUE表明此索引的每一個(gè)索引值只對應(yīng)唯一的數(shù)據(jù)記錄CLUSTER表示要建立的索引是聚簇索引AnIntroductiontoDatabaseSystem例題[例6]為學(xué)生-課程數(shù)據(jù)庫中的Student,Course,SC三個(gè)表建立索引。其中Student表按學(xué)號升序建唯一索引,Course表按課程號升序建唯一索引,SC表按學(xué)號升序和課程號降序建唯一索引。CREATEUNIQUEINDEXStusnoONStudent(Sno);CREATEUNIQUEINDEXCoucnoONCourse(Cno);CREATEUNIQUEINDEXSCnoONSC(SnoASC,CnoDESC);
AnIntroductiontoDatabaseSystem建立索引(續(xù))唯一值索引對于已含重復(fù)值的屬性列不能建UNIQUE索引對某個(gè)列建立UNIQUE索引后,插入新記錄時(shí)DBMS會(huì)自動(dòng)檢查新記錄在該列上是否取了重復(fù)值。這相當(dāng)于增加了一個(gè)UNIQUE約束AnIntroductiontoDatabaseSystem建立索引(續(xù))聚簇索引建立聚簇索引后,基表中數(shù)據(jù)也需要按指定的聚簇屬性值的升序或降序存放。也即聚簇索引的索引項(xiàng)順序與表中記錄的物理順序一致AnIntroductiontoDatabaseSystem例:CREATECLUSTERINDEXStusnameONStudent(Sname);在Student表的Sname(姓名)列上建立一個(gè)聚簇索引,而且Student表中的記錄將按照Sname值的升序存放
AnIntroductiontoDatabaseSystem建立索引(續(xù))在一個(gè)基本表上最多只能建立一個(gè)聚簇索引在最常查詢的列上建立聚簇索引,可以提高查詢效率對于經(jīng)常更新的列不宜建立聚簇索引AnIntroductiontoDatabaseSystem二、刪除索引 DROPINDEX<索引名>;刪除索引時(shí),系統(tǒng)會(huì)從數(shù)據(jù)字典中刪去有關(guān)該索引的描述。[例7]刪除Student表的Stusname索引。
DROPINDEXStusname;AnIntroductiontoDatabaseSystem3.3查詢3.3.1概述3.3.2單表查詢3.3.3連接查詢3.3.4嵌套查詢3.3.5集合查詢3.3.6小結(jié)AnIntroductiontoDatabaseSystem3.3.1概述語句格式SELECT[ALL|DISTINCT]<目標(biāo)列表達(dá)式>[,<目標(biāo)列表達(dá)式>]…FROM
<表名或視圖名>[,<表名或視圖名>]…[WHERE<條件表達(dá)式>][GROUPBY<列名1>[HAVING<條件表達(dá)式>]][ORDERBY<列名2>[ASC|DESC]];
AnIntroductiontoDatabaseSystem語句格式SELECT子句:指定要顯示的屬性列FROM子句:指定查詢對象(基本表或視圖)WHERE子句:指定查詢條件GROUPBY子句:對查詢結(jié)果按指定列的值分組,該屬性列值相等的元組為一個(gè)組。通常會(huì)在每組中作用集函數(shù)。HAVING短語:篩選出滿足指定條件的組ORDERBY子句:對查詢結(jié)果表按指定列值的升序或降序排序AnIntroductiontoDatabaseSystem示例數(shù)據(jù)庫學(xué)生-課程數(shù)據(jù)庫學(xué)生表:Student(#Sno,Sname,Ssex,Sage,Sdept)課程表:Course(#Cno,Cname,Cpno,Ccredit)學(xué)生選課表:SC(#Sno,#Cno,Grade)AnIntroductiontoDatabaseSystem3.3查詢3.3.1概述3.3.2單表查詢3.3.3連接查詢3.3.4嵌套查詢3.3.5集合查詢3.3.6小結(jié)AnIntroductiontoDatabaseSystem3.3.2單表查詢
查詢僅涉及一個(gè)表,是一種最簡單的查詢操作一、選擇表中的若干列二、選擇表中的若干元組三、對查詢結(jié)果排序四、使用集函數(shù)五、對查詢結(jié)果分組
AnIntroductiontoDatabaseSystem1.查詢指定列[例1]查詢?nèi)w學(xué)生的學(xué)號與姓名。SELECTSno,SnameFROMStudent;
[例2]查詢?nèi)w學(xué)生的姓名、學(xué)號、所在系。SELECTSname,Sno,SdeptFROMStudent;AnIntroductiontoDatabaseSystem2.查詢?nèi)苛衃例3]查詢?nèi)w學(xué)生的詳細(xì)記錄。SELECTSno,Sname,Ssex,Sage,SdeptFROMStudent;或SELECT*FROMStudent;AnIntroductiontoDatabaseSystem3.查詢經(jīng)過計(jì)算的值SELECT子句的<目標(biāo)列表達(dá)式>為表達(dá)式算術(shù)表達(dá)式字符串常量函數(shù)列別名等AnIntroductiontoDatabaseSystem3.查詢經(jīng)過計(jì)算的值(續(xù))[例4]查全體學(xué)生的姓名及其出生年份。SELECTSname,2007-SageFROMStudent;
輸出結(jié)果:
Sname2007-Sage----------------------
李勇1976
劉晨1977
王名1978
張立1978AnIntroductiontoDatabaseSystem3.查詢經(jīng)過計(jì)算的值(續(xù))[例5]查詢?nèi)w學(xué)生的姓名、出生年份和所有系,要求用小寫字母表示所有系名。
SELECTSname,'YearofBirth:',2007-Sage,
ISLOWER(Sdept)FROMStudent;
AnIntroductiontoDatabaseSystem例題(續(xù))輸出結(jié)果:
Sname'YearofBirth:'2007-SageISLOWER(Sdept)----------------------------------------------
李勇YearofBirth:1976cs
劉晨YearofBirth:1977is
王名YearofBirth:1978ma
張立YearofBirth:1977isAnIntroductiontoDatabaseSystem[例5.1]使用列別名改變查詢結(jié)果的列標(biāo)題SELECTSnameNAME,'YearofBirth:’
BIRTH,2007-Sage
BIRTHDAY,ISLOWER(Sdept)DEPARTMENTFROMStudent;輸出結(jié)果:
NAMEBIRTHBIRTHDAYDEPARTMENT------------------------------------------------------
李勇YearofBirth:1976cs
劉晨YearofBirth:1977is
王名YearofBirth:1978ma
張立YearofBirth:1977isAnIntroductiontoDatabaseSystem二、選擇表中的若干元組消除取值重復(fù)的行查詢滿足條件的元組AnIntroductiontoDatabaseSystem1.消除取值重復(fù)的行在SELECT子句中使用DISTINCT短語假設(shè)SC表中有下列數(shù)據(jù)
SnoCnoGrade---------------------950011929500128595001388
9500229095002380AnIntroductiontoDatabaseSystemALL與
DISTINCT
[例6]查詢選修了課程的學(xué)生學(xué)號。(1)SELECTSnoFROMSC;
或(默認(rèn)ALL)SELECTALLSnoFROMSC;
結(jié)果:Sno-------9500195001950019500295002AnIntroductiontoDatabaseSystem例題(續(xù))(2)SELECTDISTINCTSnoFROMSC;
結(jié)果:
Sno-------9500195002AnIntroductiontoDatabaseSystem2.查詢滿足條件的元組表3.3常用的查詢條件查
詢
條
件謂
詞比
較=,>,<,>=,<=,!=,<>,!>,!<;NOT
+上述比較運(yùn)算符確定范圍BETWEENAND,NOTBETWEENAND確定集合IN,NOTIN字符匹配LIKE,NOTLIKE空值ISNULL,ISNOTNULL多重條件AND,ORWHERE子句常用的查詢條件AnIntroductiontoDatabaseSystem(1)比較大小在WHERE子句的<比較條件>中使用比較運(yùn)算符=,>,<,>=,<=,!=或<>,!>,!<,邏輯運(yùn)算符NOT+比較運(yùn)算符[例8]查詢所有年齡在20歲以下的學(xué)生姓名及其年齡。
SELECTSname,SageFROMStudentWHERESage<20;或SELECTSname,SageFROMStudentWHERENOTSage>=20;AnIntroductiontoDatabaseSystem(2)確定范圍使用謂詞BETWEEN…AND…NOTBETWEEN…AND…[例10]查詢年齡在20~23歲(包括20歲和23歲)之間的學(xué)生的姓名、系別和年齡。
SELECTSname,Sdept,SageFROMStudentWHERESageBETWEEN20AND23;AnIntroductiontoDatabaseSystem例題(續(xù))[例11]查詢年齡不在20~23歲之間的學(xué)生姓名、系別和年齡。
SELECTSname,Sdept,SageFROMStudentWHERESageNOTBETWEEN20AND23;AnIntroductiontoDatabaseSystem(3)確定集合使用謂詞IN<值表>,NOTIN<值表><值表>:用逗號分隔的一組取值[例12]查詢信息系(IS)、數(shù)學(xué)系(MA)和計(jì)算機(jī)科學(xué)系(CS)學(xué)生的姓名和性別。
SELECTSname,Ssex FROMStudent WHERESdeptIN('IS','MA','CS');AnIntroductiontoDatabaseSystem(3)確定集合[例13]查詢既不是信息系、數(shù)學(xué)系,也不是計(jì)算機(jī)科學(xué)系的學(xué)生的姓名和性別。
SELECTSname,Ssex FROMStudent WHERESdeptNOTIN('IS','MA','CS');AnIntroductiontoDatabaseSystem(4)字符串匹配[NOT]LIKE‘<匹配串>’[ESCAPE‘<換碼字符>’]搜索與指定模式匹配的字符串、日期或時(shí)間值。<匹配串>:指定匹配模板匹配模板:固定字符串或含通配符的字符串當(dāng)匹配模板為固定字符串時(shí),可以用=運(yùn)算符取代LIKE謂詞,用!=或<>運(yùn)算符取代NOTLIKE謂詞AnIntroductiontoDatabaseSystem通配符%(百分號)
代表任意長度(長度可以為0)的字符串例:a%b表示以a開頭,以b結(jié)尾的任意長度的字符串。如acb,addgb,ab等都滿足該匹配串_(下橫線)
代表任意單個(gè)字符例:a_b表示以a開頭,以b結(jié)尾的長度為3的任意字符串。如acb,afb等都滿足該匹配串AnIntroductiontoDatabaseSystemESCAPE短語:當(dāng)用戶要查詢的字符串本身就含有%或_時(shí),要使用ESCAPE'<換碼字符>'短語對通配符進(jìn)行轉(zhuǎn)義。AnIntroductiontoDatabaseSystem例題1)匹配模板為固定字符串[例14]查詢學(xué)號為95001的學(xué)生的詳細(xì)情況。
SELECT*FROMStudentWHERESnoLIKE'95001';等價(jià)于:
SELECT*FROMStudentWHERESno='95001';AnIntroductiontoDatabaseSystem例題(續(xù))2)匹配模板為含通配符的字符串
[例15]查詢所有姓劉學(xué)生的姓名、學(xué)號和性別。
SELECTSname,Sno,Ssex FROMStudent WHERESnameLIKE‘劉%’;AnIntroductiontoDatabaseSystem例題(續(xù))[例16]查詢姓"歐陽"且全名為三個(gè)漢字的學(xué)生的姓名。
SELECTSname FROMStudent WHERESnameLIKE'歐陽__';AnIntroductiontoDatabaseSystem例題(續(xù))[例17]查詢名字中第2個(gè)字為"陽"字的學(xué)生的姓名和學(xué)號。
SELECTSname,Sno FROMStudent WHERESnameLIKE'__陽%';AnIntroductiontoDatabaseSystem例題(續(xù))[例18]查詢所有不姓劉的學(xué)生姓名。
SELECTSname,Sno,Ssex FROMStudent WHERESnameNOTLIKE'劉%';AnIntroductiontoDatabaseSystem例題(續(xù))3)使用換碼字符將通配符轉(zhuǎn)義為普通字符
[例19]查詢DB_Design課程的課程號和學(xué)分。
SELECTCno,Ccredit FROMCourse WHERECnameLIKE'DB\_Design'ESCAPE'\‘
當(dāng)轉(zhuǎn)義符置于通配符之前時(shí),該通配符就解釋為普通字符。AnIntroductiontoDatabaseSystem例題(續(xù))[例20]查詢以"DB_"開頭,且倒數(shù)第3個(gè)字符為i的課程的詳細(xì)情況。
SELECT* FROMCourse WHERECnameLIKE‘DB\_%i__’ESCAPE‘\’;AnIntroductiontoDatabaseSystem(5)涉及空值的查詢
使用謂詞ISNULL或ISNOTNULL“ISNULL”不能用“=NULL”代替[例21]某些學(xué)生選修課程后沒有參加考試,所以有選課記錄,但沒有考試成績。查詢?nèi)鄙俪煽兊膶W(xué)生的學(xué)號和相應(yīng)的課程號。
SELECTSno,CnoFROMSCWHEREGradeISNULL;AnIntroductiontoDatabaseSystem例題(續(xù))[例22]查所有有成績的學(xué)生學(xué)號和課程號。
SELECTSno,Cno FROMSC WHEREGradeISNOTNULL;AnIntroductiontoDatabaseSystem(6)多重條件查詢用邏輯運(yùn)算符AND和OR來聯(lián)結(jié)多個(gè)查詢條件
AND的優(yōu)先級高于OR
可以用括號改變優(yōu)先級可用來實(shí)現(xiàn)多種其他謂詞
[NOT]IN[NOT]BETWEEN…AND…AnIntroductiontoDatabaseSystem例題[例23]查詢計(jì)算機(jī)系年齡在20歲以下的學(xué)生姓名。
SELECTSname FROMStudent WHERESdept='CS'ANDSage<20;AnIntroductiontoDatabaseSystem改寫[例12][例12]查詢信息系(IS)、數(shù)學(xué)系(MA)和計(jì)算機(jī)科學(xué)系(CS)學(xué)生的姓名和性別。
SELECTSname,Ssex FROMStudent WHERESdeptIN('IS','MA','CS')可改寫為:
SELECTSname,Ssex FROMStudent WHERESdept='IS'ORSdept='MA'ORSdept='CS';AnIntroductiontoDatabaseSystem改寫[例10][例10]查詢年齡在20~23歲(包括20歲和23歲)之間的學(xué)生的姓名、系別和年齡。
SELECTSname,Sdept,Sage FROMStudent WHERESageBETWEEN20AND23;可改寫為:
SELECTSname,Sdept,Sage FROMStudent WHERESage>=20ANDSage<=23;AnIntroductiontoDatabaseSystem三、對查詢結(jié)果排序使用ORDERBY子句可以按一個(gè)或多個(gè)屬性列排序升序:ASC;降序:DESC;缺省值為升序當(dāng)排序列含空值時(shí)ASC:排序列為空值的元組最后顯示DESC:排序列為空值的元組最先顯示AnIntroductiontoDatabaseSystem對查詢結(jié)果排序(續(xù))[例24]查詢選修了3號課程的學(xué)生的學(xué)號及其成績,查詢結(jié)果按分?jǐn)?shù)降序排列。
SELECTSno,Grade FROMSC WHERECno='3'
ORDERBYGradeDESC;AnIntroductiontoDatabaseSystem查詢結(jié)果
SnoGrade--------------9501095024950079295003829501082950097595014619500255AnIntroductiontoDatabaseSystem對查詢結(jié)果排序(續(xù))[例25]查詢?nèi)w學(xué)生情況,查詢結(jié)果按所在系的系號升序排列,同一系中的學(xué)生按年齡降序排列。
SELECT* FROMStudent
ORDERBYSdept,SageDESC;AnIntroductiontoDatabaseSystem四、使用集函數(shù)5類主要集函數(shù)計(jì)數(shù)COUNT([DISTINCT|ALL]*)COUNT([DISTINCT|ALL]<列名>)計(jì)算總和SUM([DISTINCT|ALL
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年硝酸鉛項(xiàng)目可行性研究報(bào)告
- 農(nóng)村舊房租房合同范本
- 出售商標(biāo)合同范本
- 個(gè)人借公司合同范本
- 入股做生意合同范例
- 2025年高性能陶瓷復(fù)合材料項(xiàng)目經(jīng)濟(jì)評價(jià)報(bào)告
- 100%股權(quán)轉(zhuǎn)讓合同范本
- 產(chǎn)品模特簽約合同范本
- 烏市供熱合同范本
- 2025年度教育資源共享平臺數(shù)據(jù)安全保障服務(wù)合同
- 暖氣維修常識知識培訓(xùn)課件
- 精神科患者服藥依從性健康宣教
- 設(shè)備維保的維修流程與指導(dǎo)手冊
- 急性腎小球腎炎病人護(hù)理課件
- 招標(biāo)代理服務(wù)的關(guān)鍵流程與難點(diǎn)解析
- GB/T 5465.2-2023電氣設(shè)備用圖形符號第2部分:圖形符號
- 《三國演義》中的佛教文化:以黃承兒為例
- 材料預(yù)定協(xié)議
- 《學(xué)習(xí)的本質(zhì)》讀書會(huì)活動(dòng)
- 高氨血癥護(hù)理課件
- 《石油化工電氣自動(dòng)化系統(tǒng)設(shè)計(jì)規(guī)范》
評論
0/150
提交評論