河北經(jīng)貿(mào)大學(xué)信息技術(shù)學(xué)院_第1頁
河北經(jīng)貿(mào)大學(xué)信息技術(shù)學(xué)院_第2頁
河北經(jīng)貿(mào)大學(xué)信息技術(shù)學(xué)院_第3頁
河北經(jīng)貿(mào)大學(xué)信息技術(shù)學(xué)院_第4頁
河北經(jīng)貿(mào)大學(xué)信息技術(shù)學(xué)院_第5頁
已閱讀5頁,還剩88頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

河北經(jīng)貿(mào)大學(xué)信息技術(shù)學(xué)院數(shù)據(jù)庫系統(tǒng)概論

AnIntroductionto

DatabaseSystems1河北經(jīng)貿(mào)貿(mào)大學(xué)信信息技術(shù)術(shù)學(xué)院數(shù)據(jù)庫系系統(tǒng)概論論AnIntroductiontoDatabaseSystem第三章關(guān)關(guān)系數(shù)數(shù)據(jù)庫標(biāo)標(biāo)準(zhǔn)語言言SQL第三章關(guān)系數(shù)據(jù)據(jù)庫標(biāo)準(zhǔn)準(zhǔn)語言SQL3.1SQL概述3.2學(xué)學(xué)生--課程數(shù)數(shù)據(jù)庫3.3數(shù)數(shù)據(jù)定定義3.4數(shù)數(shù)據(jù)查查詢3.5數(shù)數(shù)據(jù)更更新3.6視視圖3.7小小結(jié)3.1SQL概述SQL((StructuredQueryLanguage)結(jié)構(gòu)化查查詢語言言,是關(guān)關(guān)系數(shù)據(jù)據(jù)庫的標(biāo)標(biāo)準(zhǔn)語言言SQL是是一個通通用的、、功能極極強的關(guān)關(guān)系數(shù)據(jù)據(jù)庫語言言SQL概概述(續(xù)續(xù))3.1..1SQL的產(chǎn)產(chǎn)生與發(fā)發(fā)展3.1..2SQL的特點點3.1..3SQL的基本本概念SQL標(biāo)標(biāo)準(zhǔn)的進進展過程程標(biāo)準(zhǔn)大大致頁頁數(shù)發(fā)發(fā)布布日期SQL//861986..10SQL//89((FIPS127--1)120頁頁1989年SQL//92622頁1992年SQL991700頁1999年年SQL20032003年3.1SQL概述3.1..1SQL的產(chǎn)產(chǎn)生與發(fā)發(fā)展3.1..2SQL的特點點3.1..3SQL的基本本概念3.1..2SQL的特點點1.綜合合統(tǒng)一集數(shù)據(jù)定定義語言言(DDL),,數(shù)據(jù)操操縱語言言(DML),,數(shù)據(jù)控控制語言言(DCL)功功能于一一體。可以獨立立完成數(shù)數(shù)據(jù)庫生生命周期期中的全全部活動動:定義關(guān)系系模式,,插入數(shù)數(shù)據(jù),建建立數(shù)據(jù)據(jù)庫;對數(shù)據(jù)庫庫中的數(shù)數(shù)據(jù)進行行查詢和和更新;;數(shù)據(jù)庫重重構(gòu)和維維護數(shù)據(jù)庫安安全性、、完整性性控制等等用戶數(shù)據(jù)據(jù)庫投入入運行后后,可根根據(jù)需要要隨時逐逐步修改改模式,,不影響響數(shù)據(jù)的的運行。。數(shù)據(jù)操作作符統(tǒng)一一2.高度度非過程程化非關(guān)系數(shù)數(shù)據(jù)模型型的數(shù)據(jù)據(jù)操縱語語言“面向過程程”,必須須制定存存取路徑徑SQL只只要提出出“做什什么”,,無須了了解存取取路徑。。存取路徑徑的選擇擇以及SQL的的操作過過程由系系統(tǒng)自動動完成。。3.1..2SQL的特點點3.面向向集合的的操作方方式非關(guān)系數(shù)數(shù)據(jù)模型型采用面面向記錄錄的操作作方式,,操作對對象是一一條記錄錄SQL采采用集合合操作方方式操作對象象、查找找結(jié)果可可以是元元組的集集合一次插入入、刪除除、更新新操作的的對象可可以是元元組的集集合3.1..2SQL的特點點4.以同同一種語語法結(jié)構(gòu)構(gòu)提供多多種使用用方式SQL是是獨立的的語言能夠獨立立地用于于聯(lián)機交交互的使使用方式式SQL又又是嵌入入式語言言SQL能能夠嵌入入到高級級語言((例如C,C+++,Java)程序序中,供供程序員員設(shè)計程程序時使使用3.1..2SQL的特點點5.語言言簡潔,,易學(xué)易易用SQL功功能極強強,完成成核心功功能只用用了9個個動詞。。3.1..2SQL的特點點3.1SQL概述3.1..1SQL的產(chǎn)產(chǎn)生與發(fā)發(fā)展3.1..2SQL的特點點3.1..3SQL的基本本概念SQL的的基本概概念(續(xù)續(xù))SQL視圖2視圖1基本表2基本表1基本表3基本表4存儲文件2存儲文件1外模式模式內(nèi)模式SQL支支持關(guān)系系數(shù)據(jù)庫庫三級模模式結(jié)構(gòu)構(gòu)SQL的的基本概概念(續(xù)續(xù))基本表本身獨立立存在的的表SQL中中一個關(guān)關(guān)系就對對應(yīng)一個個基本表表一個(或或多個))基本表表對應(yīng)一一個存儲儲文件一個表可可以帶若若干索引引存儲文件件邏輯結(jié)構(gòu)構(gòu)組成了了關(guān)系數(shù)數(shù)據(jù)庫的的內(nèi)模式式物理結(jié)構(gòu)構(gòu)是任意意的,對對用戶透透明視圖從一個或或幾個基基本表導(dǎo)導(dǎo)出的表表數(shù)據(jù)庫中中只存放放視圖的的定義而而不存放放視圖對對應(yīng)的數(shù)數(shù)據(jù)視圖是一一個虛表表用戶可以以在視圖圖上再定定義視圖圖第三章關(guān)系數(shù)據(jù)據(jù)庫標(biāo)準(zhǔn)準(zhǔn)語言SQL3.1SQL概述3.2學(xué)學(xué)生--課程數(shù)數(shù)據(jù)庫3.3數(shù)數(shù)據(jù)定定義3.4數(shù)數(shù)據(jù)查查詢3.5數(shù)數(shù)據(jù)更更新3.6視視圖3.7小小結(jié)3.2學(xué)學(xué)生--課程數(shù)數(shù)據(jù)庫庫學(xué)生-課課程模式式S--T::學(xué)生表::Student(Sno,Sname,,Ssex,Sage,Sdept)課程表::Course(Cno,Cname,,Cpno,Ccredit)學(xué)生選課課表:SC(Sno,,Cno,Grade))Student表學(xué)號Sno姓名Sname性別Ssex年齡Sage所在系Sdept200215121200215122200215123200515125李勇劉晨王敏張立男女女男20191819CSCSMAISCourse表表課程號Cno課程名Cname先行課Cpno學(xué)分Ccredit1234567數(shù)據(jù)庫數(shù)學(xué)信息系統(tǒng)操作系統(tǒng)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)處理PASCAL語言516764243424SC表學(xué)號Sno課程號Cno成績Grade200215121200215121200215121200215122200215122123239285889080第三章關(guān)系數(shù)據(jù)據(jù)庫標(biāo)準(zhǔn)準(zhǔn)語言SQL3.1SQL概述3.2學(xué)學(xué)生--課程數(shù)數(shù)據(jù)庫3.3數(shù)數(shù)據(jù)定定義3.4數(shù)數(shù)據(jù)查查詢3.5數(shù)數(shù)據(jù)更更新3.6視視圖3.7小小結(jié)3.3數(shù)數(shù)據(jù)據(jù)定義SQL的數(shù)據(jù)定定義功能能:模式定義義、表定定義、視視圖和索索引的定定義3.3數(shù)數(shù)據(jù)定定義3.3..1模模式的定定義與刪刪除3.3..2基基本表的的定義、、刪除與與修改3.3..3索索引的建建立與刪刪除定義模式式(續(xù)))[例1]]定義一一個學(xué)生生-課程程模式S-TCREATESCHEMA“S-T””AUTHORIZATIONWANG;為用戶WANG定義了了一個模模式S--T[例2]]CREATESCHEMAAUTHORIZATIONWANG;;<模式名名>隱含含為用戶戶名WANG如果沒有有指定<<模式名名>,那那么<模模式名>>隱含為為<用戶戶名>定義模式式(續(xù)))定義模式式實際上上定義了了一個命名空間間在這個空空間中可可以定義義該模式式包含的的數(shù)據(jù)庫庫對象,,例如基基本表、、視圖、、索引等等。在CREATESCHEMA中可可以接受受CREATETABLE,CREATEVIEW和GRANT子句。。CREATESCHEMA<模模式名>>AUTHORIZATION<<用戶戶名>[[<表定定義子句句>|<<視圖定定義子句句>|<<授權(quán)定定義子句句>]定義模式式(續(xù)))[例3]]CREATESCHEMATESTAUTHORIZATIONZHANGCREATETABLETAB1(COL1SMALLINT,COL2INT,COL3CHAR((20)),COL4NUMERIC((10,,3),,COL5DECIMAL((5,2));為用戶ZHANG創(chuàng)建建了一個個模式TEST,并在在其中定定義了一一個表TAB1。二、刪除除模式DROPSCHEMA<<模式名名><<CASCADE|RESTRICT>CASCADE(級聯(lián)聯(lián))刪除模式式的同時時把該模模式中所所有的數(shù)數(shù)據(jù)庫對對象全部部刪除RESTRICT(限限制)如果該模模式中定定義了下下屬的數(shù)數(shù)據(jù)庫對對象(如如表、視視圖等)),則拒拒絕該刪刪除語句句的執(zhí)行行。當(dāng)該模式式中沒有有任何下下屬的對對象時才才能執(zhí)執(zhí)行。刪除模式式(續(xù)))[例4]]DROPSCHEMAZHANGCASCADE;刪除模式式ZHANG同時該模模式中定定義的表表TAB1也被被刪除3.3數(shù)數(shù)據(jù)定定義3.3..1模模式的定定義與刪刪除3.3..2基基本表的的定義、、刪除與與修改3.3..3索索引的建建立與刪刪除3.3..2基基本表的的定義、、刪除與與修改一、定義義基本表表CREATETABLE<<表名名>(<列名名><<數(shù)據(jù)類類型>[[<列列級完整整性約束束條件>>][,<列列名><<數(shù)據(jù)據(jù)類型>>[<<列級完完整性約約束條件件>]]]……[,<表表級完整整性約束束條件>>]));<列級完完整性約約束條件件>:涉及相相應(yīng)屬性性列的完完整性約約束條件件<表級完整整性約束束條件>>:涉及一一個或多多個屬性性列的完完整性約約束條件件定義基本本表(續(xù)續(xù))常用完整整性約束束主碼約束束:PRIMARYKEY唯一性約約束:UNIQUE非空值約約束:NOTNULL參照完整整性約束束:FOREIGNKEY……REFERENCES…...PRIMARYKEY與UNIQUE的區(qū)區(qū)別?學(xué)生表Student[例5]]建建立“學(xué)學(xué)生”表表Student,學(xué)學(xué)號是主主碼,姓姓名取值值唯一。。CREATETABLEStudent(SnoCHAR(9)PRIMARYKEY,/**列級級完整性性約束條條件*//SnameCHAR(20)UNIQUE,//*Sname取唯唯一值**/SsexCHAR((2),,SageSMALLINT,,SdeptCHAR(20));主碼課程表Course[例6]建立一個個“課程程”表CourseCREATETABLECourse(CnoCHAR(4))PRIMARYKEY,CnameCHAR(40),,CpnoCHAR(4)),CcreditSMALLINT,F(xiàn)OREIGNKEY((Cpno)REFERENCESCourse(Cno));先修課Cpno是外碼被參照表表是Course被參照列列是Cno學(xué)生選課課表SC[例7]建立一個個“學(xué)生生選課””表SCCREATETABLESC(SnoCHAR(9)),CnoCHAR((4),,GradeSMALLINT,PRIMARYKEY((Sno,Cno),,/*主主碼由兩兩個屬性性構(gòu)成,,必須作作為表級級完整性性進行定定義*//FOREIGNKEY((Sno)REFERENCESStudent((Sno),/*表表級完整整性約束束條件,,Sno是外碼碼,被參參照表是是Student**/FOREIGNKEY((Cno)REFERENCESCourse(Cno))/*表表級完整整性約束束條件,,Cno是外外碼,被被參照表表是Course*//);二、數(shù)據(jù)據(jù)類型SQL中中域的概概念用數(shù)據(jù)類型型來實現(xiàn)定義表的的屬性時時需要要指明其其數(shù)據(jù)類類型及長長度選用哪種種數(shù)據(jù)類類型取值范圍圍要做哪些些運算二、數(shù)據(jù)據(jù)類型數(shù)據(jù)類型含義CHAR(n)長度為n的定長字符串VARCHAR(n)最大長度為n的變長字符串INT長整數(shù)(也可以寫作INTEGER)SMALLINT短整數(shù)NUMERIC(p,d)定點數(shù),由p位數(shù)字(不包括符號、小數(shù)點)組成,小數(shù)后面有d位數(shù)字REAL取決于機器精度的浮點數(shù)DoublePrecision取決于機器精度的雙精度浮點數(shù)FLOAT(n)浮點數(shù),精度至少為n位數(shù)字DATE日期,包含年、月、日,格式為YYYY-MM-DDTIME時間,包含一日的時、分、秒,格式為HH:MM:SS三、模式式與表每一個基基本表都都屬于某某一個模模式一個模式式包含多多個基本本表定義基本本表所屬屬模式方法一::在表名名中明顯顯地給出出模式名名Createtable““S--T”..Student(........));//**模式名名為S-T**/Createtable““S--T”..Cource(........);;Createtable““S--T”..SC((........);方法二::在創(chuàng)建建模式語語句中同同時創(chuàng)建建表方法三::設(shè)置所所屬的模模式模式與表表(續(xù)))創(chuàng)建基本本表(其其他數(shù)據(jù)據(jù)庫對象象也一樣樣)時,,若沒有有指定模模式,系系統(tǒng)根據(jù)據(jù)搜索路徑徑來確定該該對象所所屬的模模式RDBMS會使使用模式式列表中中第一個存存在的模模式作為數(shù)據(jù)據(jù)庫對象象的模式式名若搜索路路徑中的的模式名名都不存存在,系系統(tǒng)將給給出錯誤誤顯示當(dāng)前前的搜索索路徑::SHOWsearch_path;;搜索路徑徑的當(dāng)前前默認(rèn)值值是:$$user,PUBLIC模式與表表(續(xù)))DBA用用戶可以以設(shè)置搜搜索路徑徑,然后后定義基基本表SETsearch_pathTO““S--T”,,PUBLIC;CreatetableStudent(........));結(jié)果建立立了S--T.Student基本表表。RDBMS發(fā)現(xiàn)現(xiàn)搜索路路徑中第第一個模模式名S-T存存在,就就把該模模式作為為基本表表Student所屬屬的模式式。四、修改改基本表表ALTERTABLE<<表名>>[ADD<<新列名名><<數(shù)據(jù)類類型>[[完完整性約約束]]][DROP<<完整整性約束束名>]][ALTERCOLUMN<列列名><<數(shù)據(jù)據(jù)類型>>];;修改基本本表(續(xù)續(xù))[例8]]向Student表表增加““入學(xué)時時間”列列,其數(shù)數(shù)據(jù)類型型為日期期型。ALTERTABLEStudentADDS_entranceDATE;;不論基本本表中原原來是否否已有數(shù)數(shù)據(jù),新新增加的的列一律律為空值值。[例9]]將年齡齡的數(shù)據(jù)據(jù)類型由由字符型型(假設(shè)設(shè)原來的的數(shù)據(jù)類類型是字字符型))改為整整數(shù)。ALTERTABLEStudentALTERCOLUMNSageINT;[例10]增加加課程名名稱必須須取唯一一值的約約束條件件。ALTERTABLECourseADDUNIQUE(Cname);;五、刪除除基本表表DROPTABLE<表表名>[[RESTRICT||CASCADE]];RESTRICT:刪刪除表是是有限制制的。欲刪除的的基本表表不能被被其他表表的約束束所引用用如果存在在依賴該該表的對對象,則則此表不不能被刪刪除CASCADE:刪除除該表沒沒有限制制。在刪除基基本表的的同時,,相關(guān)的的依賴對對象一起起刪除刪除基本本表(續(xù)續(xù))[例11]刪刪除Student表DROPTABLEStudentCASCADE;基本表定定義被刪刪除,數(shù)數(shù)據(jù)被刪刪除表上建立立的索引引、視圖圖、觸發(fā)發(fā)器等一一般也將將被刪除除刪除基本本表(續(xù)續(xù))[例12]若表上建建有視圖圖,選擇擇RESTRICT時時表不能能刪除CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROMStudentWHERESdept=''IS'';DROPTABLEStudentRESTRICT;;--ERROR:cannotdroptableStudentbecauseotherobjectsdependonit

刪除基本本表(續(xù)續(xù))[例12]如果選擇擇CASCADE時可可以刪除除表,視視圖也自自動被刪刪除DROPTABLEStudentCASCADE;--NOTICE:dropcascadestoviewIS_StudentSELECT**FROMIS_Student;;--ERROR:relation"IS__Student""doesnotexist刪除基本本表(續(xù)續(xù))序號標(biāo)準(zhǔn)及主流數(shù)據(jù)庫的處理方式依賴基本表的對象SQL99KingbaseESORACLE9iMSSQLSERVER2000RCRCC1.索引無規(guī)定√√√√√2.視圖×√×√√保留√保留√保留3.DEFAULT,PRIMARYKEY,CHECK(只含該表的列)NOTNULL等約束√√√√√√√4.ForeignKey×√×√×√×5.TRIGGER×√×√√√√6.函數(shù)或存儲過程×√√保留√保留√保留√保留√保留DROPTABLE時,SQL99與3個RDBMS的處理策策略比較較R表示RESTRICT,,C表示CASCADE'×'表示不能能刪除基基本表,,'√'表示能刪刪除基本本表,‘‘保留’’表示刪刪除基本本表后,,還保留留依賴對對象3.3數(shù)數(shù)據(jù)定定義3.3..1模模式的定定義與刪刪除3.3..2基基本表的的定義、、刪除與與修改3.3..3索索引的建建立與刪刪除3.3..3索索引的建建立與刪刪除建立索引引的目的的:加快快查詢速速度誰可以建建立索引引DBA或或表表的屬主主(即建建立表的的人)DBMS一般會會自動建建立以下下列上的的索引PRIMARYKEYUNIQUE維護索引引DBMS自動完完成使用索引引DBMS自動選選擇是否否使用索索引以及及使用哪哪些索引引索引引RDBMS中索索引一般般采用B+樹、、HASH索引引來實現(xiàn)現(xiàn)B+樹索索引具有有動態(tài)平平衡的優(yōu)優(yōu)點HASH索引具具有查找找速度快快的特點點采用B++樹,還還是HASH索索引則則由具體體的RDBMS來決定定索引是關(guān)關(guān)系數(shù)據(jù)據(jù)庫的內(nèi)內(nèi)部實現(xiàn)現(xiàn)技術(shù),,屬于內(nèi)內(nèi)模式的的范疇CREATEINDEX語語句定義義索引時時,可以以定義索索引是唯唯一索引引、非唯唯一索引引或聚簇簇索引一、建立立索引語句格式式CREATE[UNIQUE][[CLUSTER]INDEX<<索引名名>ON<<表名>>(<列列名>[[<次序序>][[,<列列名>[[<次序序>]]]…));用<表名>>指定要建建索引的的基本表表名字索引可以以建立在在該表的的一列或或多列上上,各列列名之間間用逗號號分隔用<次序>>指定索引引值的排排列次序序,升序序:ASC,降降序:DESC。缺省省值:ASCUNIQUE表明此索索引的每每一個索索引值只只對應(yīng)唯唯一的數(shù)數(shù)據(jù)記錄錄CLUSTER表示要建建立的索索引是聚聚簇索引引建立索引引(續(xù)))[例13]CREATECLUSTERINDEXStusnameONStudent(Sname);在在Student表的的Sname((姓名))列上建建立一個個聚簇索索引,而而且Student表表中的記記錄將按按照Sname值的升升序存放放在最經(jīng)常常查詢的的列上建建立聚簇簇索引以以提高查查詢效率率一個基本本表上最最多只能能建立一一個聚簇簇索引經(jīng)常更新新的列不不宜建立立聚簇索索引聚簇索引引的適用用范圍很少對基基表進行行增刪操操作很少對其其中的變變長列進進行修改改操作建立索引引(續(xù)))[例14]為學(xué)學(xué)生-課課程數(shù)據(jù)據(jù)庫中的的Student,Course,,SC三三個表建建立立索引。。CREATEUNIQUEINDEXStusnoONStudent(Sno));CREATEUNIQUEINDEXCoucnoONCourse(Cno);;CREATEUNIQUEINDEXSCnoONSC(SnoASC,,CnoDESC));Student表按學(xué)學(xué)號升序序建唯一一索引;;Course表按按課程號號升序建建唯一索索引;SC表表按學(xué)號號升序和和課程號號降序建建唯一索索引對于已含含重復(fù)值值的屬性性列不能能建UNIQUE索引引對某個列列建立UNIQUE索索引后,,插入新新記錄時時DBMS會自自動檢查查新記錄錄在該列列上是否否取了重重復(fù)值。。這相當(dāng)當(dāng)于增加加了一個個UNIQUE約束二、刪除除索引DROPINDEX<<索引名名>;刪除索引引時,系系統(tǒng)會從從數(shù)據(jù)字字典中刪刪去有關(guān)關(guān)該索引引的描述述。[例15]刪刪除Student表的Stusname索引引DROPINDEXStusname;第三章關(guān)系數(shù)據(jù)據(jù)庫標(biāo)準(zhǔn)準(zhǔn)語言SQL3.1SQL概述3.2學(xué)學(xué)生--課程數(shù)數(shù)據(jù)庫3.3數(shù)數(shù)據(jù)定定義3.4數(shù)數(shù)據(jù)查查詢3.5數(shù)數(shù)據(jù)更更新3.6視視圖3.7小小結(jié)數(shù)據(jù)查詢詢語句格式式SELECT[ALL|DISTINCT]<<目標(biāo)列列表達式式>[,<目目標(biāo)列表表達式>>]……FROM<表名或或視圖名名>[,,<表表名或視視圖名>>]……[WHERE<條件表表達式>>][GROUPBY<列名1>[[HAVING<條件表表達式>>]]][ORDERBY<列名2>[[ASC|DESC]]];

語句格式式SELECT子子句:指定要要顯示的的屬性列列FROM子句:指定查查詢對象象(基本本表或視視圖)WHERE子句句:指定查查詢條件件GROUPBY子句句:對查詢詢結(jié)果按按指定列列的值分分組,該該屬性列列值相等等的元組組為一個個組。通通常會在在每組中中作用集集函數(shù)。。HAVING短短語:篩選出出只有滿滿足指定定條件的的組ORDERBY子句句:對查詢詢結(jié)果表表按指定定列值的的升序或或降序排排序3.4數(shù)數(shù)據(jù)據(jù)查詢3.4..1單單表查詢詢3.4..2連連接查詢詢3.4..3嵌嵌套查詢詢3.4..4集集合查詢詢3.4..5Select語語句的一一般形式式

3.4..1單單表查查詢查詢僅涉涉及一個個表:一、選選擇表中中的若干干列二、選選擇表中中的若干干元組三、ORDERBY子句句四、聚聚集函數(shù)數(shù)五、GROUPBY子句句一、選選擇表中中的若干干列查詢指定定列[例1]]查查詢?nèi)w體學(xué)生的的學(xué)號與與姓名。。SELECTSno,SnameFROMStudent;;

[例2]]查查詢?nèi)w體學(xué)生的的姓名、、學(xué)號、、所在系系。SELECTSname,,Sno,SdeptFROMStudent;;2.查查詢?nèi)坎苛羞x出所有有屬性列列:在SELECT關(guān)鍵字字后面列列出所有有列名將<目標(biāo)標(biāo)列表達達式>指指定為*[例3]]查查詢?nèi)w體學(xué)生的的詳細記記錄。SELECTSno,Sname,Ssex,Sage,,SdeptFROMStudent;;或SELECT**FROMStudent;3.查查詢經(jīng)過過計算的的值SELECT子子句的<<目標(biāo)列列表達式式>可以以為:算術(shù)表達達式字符串常常量函數(shù)列別名[例4]]查查全體學(xué)學(xué)生的姓姓名及其其出生年年份。SELECTSname,,2004-Sage/*假定定當(dāng)年的的年份為為2004年**/FROMStudent;;

輸出結(jié)果果:Sname2004--Sage李勇1984劉晨1985王敏1986張立1985查詢經(jīng)過過計算的的值(續(xù)續(xù))查詢經(jīng)過過計算的的值(續(xù)續(xù))[例5]]查查詢?nèi)w體學(xué)生的的姓名、、出生年年份和所所有系,,要求用用小寫字字母表示示所有系系名SELECTSname,,‘YearofBirth::',,2004-Sage,ISLOWER(Sdept)FROMStudent;;輸出結(jié)果果:Sname''YearofBirth:'2004--SageISLOWER((Sdept))李勇YearofBirth:1984cs劉晨YearofBirth:1985is王敏YearofBirth:1986ma張立YearofBirth:1985is查詢經(jīng)過過計算的的值(續(xù)續(xù))使用列別名改變查詢詢結(jié)果的的列標(biāo)題題:

SELECTSnameNAME,'YearofBirth::’BIRTH,2000-SageBIRTHDAY,LOWER((Sdept))DEPARTMENTFROMStudent;輸出結(jié)果果:NAMEBIRTHBIRTHDAYDEPARTMENT--------------------------------------------------------------------------李勇YearofBirth:1984cs劉晨YearofBirth:1985is王敏YearofBirth:1986ma張立YearofBirth:1985is3.4..1單單表查查詢查詢僅涉涉及一個個表:一、選選擇表中中的若干干列二、選選擇表中中的若干干元組三、ORDERBY子句句四、聚聚集函數(shù)數(shù)五、GROUPBY子句句二、選擇擇表中的的若干元元組1.消消除取值值重復(fù)的的行如果沒有有指定DISTINCT關(guān)鍵鍵詞,則則缺省為為ALL[例6]]查查詢選修修了課程程的學(xué)生生學(xué)號。。SELECTSnoFROMSC;等價于::SELECTALLSnoFROMSC;;執(zhí)行上面面的SELECT語句句后,結(jié)結(jié)果為::Sno200215121200215121200215121200215122200215122消除取值值重復(fù)的的行(續(xù)續(xù))指定DISTINCT關(guān)鍵詞詞,去掉掉表中重重復(fù)的行行

SELECTDISTINCTSnoFROMSC;執(zhí)行結(jié)果果Sno200215121200215122例題(續(xù)續(xù))注意DISTINCT短語語的作用用范圍是是所有目目標(biāo)列例:查詢詢選修課課程的各各種成績績錯誤的寫寫法SELECTDISTINCTCno,DISTINCTGradeFROMSC;正確的寫寫法SELECTDISTINCTCno,GradeFROMSC;2.查詢詢滿足條條件的元元組查詢條件謂詞比較=,>,<,>=,<=,!=,<>,!>,!<;NOT+上述比較運算符確定范圍BETWEENAND,NOTBETWEENAND確定集合IN,NOTIN字符匹配LIKE,NOTLIKE空值ISNULL,ISNOTNULL多重條件(邏輯運算)AND,OR,NOT表3.4常用的查查詢條件件(1)比比較大大?。劾?]]查查詢計算算機科學(xué)學(xué)系全體體學(xué)生的的名單。。SELECTSnameFROMStudentWHERESdept=‘‘CS’’;[例8]]查詢詢所有年年齡在20歲以以下的學(xué)學(xué)生姓名名及其年年齡。SELECTSname,,SageFROMStudentWHERESage<20;;[例9]]查詢詢考試成成績有不不及格的的學(xué)生的的學(xué)號。。SELECTDISTINCTSnoFROMSCWHEREGrade<60;(2)確確定范圍圍謂詞:BETWEEN…AND……NOTBETWEEN……AND……[例10]查查詢年齡齡在20~23歲(包包括20歲和23歲))之間的的學(xué)生的的姓名、系系別和年年齡SELECTSname,,Sdept,,SageFROMStudentWHERESageBETWEEN20AND23;;[例11]查查詢年年齡不在在20~~23歲歲之間的的學(xué)生姓姓名、系系別和年年齡SELECTSname,,Sdept,,SageFROMStudentWHERESageNOTBETWEEN20AND23;(3)確確定集集合謂詞:IN<<值表>>,NOTIN<值值表>[例12]查查詢信息息系(IS)、、數(shù)學(xué)系系(MA)和計計算機科科學(xué)系((CS))學(xué)生的的姓名和和性別。。SELECTSname,,SsexFROMStudentWHERESdeptIN(('IS',,'MA',''CS'');;[例13]查查詢既不不是信息息系、數(shù)數(shù)學(xué)系,,也不是是計算機機科學(xué)系系的學(xué)生生的姓名名和性別別。SELECTSname,,SsexFROMStudentWHERESdeptNOTIN((''IS'','MA',,'CS'));(4)字符匹配配謂詞:[NOT]LIKE‘‘<匹配配串>’’[[ESCAPE‘<<換碼碼字符>>’]匹配串為為固定字字符串[例14]查查詢詢學(xué)號為為200215121的學(xué)生生的詳細細情況。。SELECT**FROMStudentWHERESnoLIKE‘200215121';等價于::SELECT**FROMStudentWHERESno==''200215121'';字符匹配配(續(xù)))2)匹配串為為含通配配符的字字符串[例15]]查查詢所有有姓劉學(xué)學(xué)生的姓姓名、學(xué)學(xué)號和性性別。SELECTSname,,Sno,SsexFROMStudentWHERESnameLIKE‘劉劉%’;[例16]查查詢姓姓"歐陽陽"且全全名為三三個漢字字的學(xué)生生的姓名名。SELECTSnameFROMStudentWHERESnameLIKE'歐歐陽___';字符匹配配(續(xù)))[例17]查查詢名名字中第第2個字字為"陽陽"字的的學(xué)生的的姓名和和學(xué)號。。SELECTSname,,SnoFROMStudentWHERESnameLIKE‘___陽%%’;[例18]查查詢所所有不姓姓劉的學(xué)學(xué)生姓名名。SELECTSname,,Sno,SsexFROMStudentWHERESnameNOTLIKE'劉%'';字符匹配配(續(xù)))3)使用換碼碼字符將將通配符符轉(zhuǎn)義為為普通字字符,當(dāng)當(dāng)用戶要要查詢的的字符串串本身就就含有%%或或_時時,要要使用ESCAPE''<換換碼字符符>'短短語對對通配符符進行轉(zhuǎn)轉(zhuǎn)義。

[例19]查查詢DB_Design課課程的課課程號和和學(xué)分。。SELECTCno,CcreditFROMCourseWHERECnameLIKE'DB\_Design'ESCAPE''\‘‘;[例20]查查詢以以"DB_"開開頭,且且倒數(shù)第第3個字字符為i的課課程的詳詳細情況況。SELECT**FROMCourseWHERECnameLIKE''DB\_%i___''ESCAPE''\\‘;ESCAPE''\''表示示“\\”為為換碼字字符(5)涉涉及空空值的查查詢謂詞:ISNULL或ISNOTNULL“IS””不能能用““=”代代替[例21]某某些學(xué)學(xué)生選修修課程后后沒有參參加考試試,所以以有選課課記錄,,但沒有有考試成成績。查查詢?nèi)鄙偕俪煽兊牡膶W(xué)生的的學(xué)號和和相應(yīng)的的課程號號。SELECTSno,CnoFROMSCWHEREGradeISNULL[例22]查查所有有有成績績的學(xué)生生學(xué)號和和課程號號。SELECTSno,CnoFROMSCWHEREGradeISNOTNULL;;(6)多多重條條件查詢詢邏輯運算算符:AND和和OR來聯(lián)結(jié)結(jié)多個查查詢條件件AND的的優(yōu)先級級高于OR可以用括括號改變變優(yōu)先級級可用來實實現(xiàn)多種種其他謂謂詞[NOT]IN[NOT]BETWEEN…AND……多重條件件查詢((續(xù))[例23]查查詢計計算機系系年齡在在20歲歲以下的的學(xué)生姓姓名。SELECTSnameFROMStudentWHERESdept=''CS'ANDSage<20;多重條件件查詢((續(xù))改寫[例例12]][例12]查查詢信信息系((IS))、數(shù)學(xué)學(xué)系(MA)和和計算機機科學(xué)系系(CS)學(xué)生生的姓名名和性別別。SELECTSname,,SsexFROMStudentWHERESdeptIN(('IS',,'MA',''CS'')可改寫為為:SELECTSname,,SsexFROMStudentWHERESdept=='IS''ORSdept=''MA'ORSdept=='CS'';3.4..1單單表查查詢查詢僅涉涉及一個個表:一、選選擇表中中的若干干列二、選選擇表中中的若干干元組三、ORDERBY子句句四、聚聚集函數(shù)數(shù)五、GROUPBY子句句三、ORDERBY子句ORDERBY子句句可以按一一個或多多個屬性性列排序序升序:ASC;;降序::DESC;缺缺省值為為升序當(dāng)排序列列含空值值時ASC::排序列列為空值值的元組組最后顯顯示DESC:排序序列為空空值的元元組最先先顯示O

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論