關(guān)系數(shù)據(jù)庫語言SQL.ppt_第1頁
關(guān)系數(shù)據(jù)庫語言SQL.ppt_第2頁
關(guān)系數(shù)據(jù)庫語言SQL.ppt_第3頁
關(guān)系數(shù)據(jù)庫語言SQL.ppt_第4頁
關(guān)系數(shù)據(jù)庫語言SQL.ppt_第5頁
已閱讀5頁,還剩62頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第三章關(guān)系數(shù)據(jù)庫語言SQL,本章提綱:一.SQL概述(3.1)二.SQL的功能數(shù)據(jù)定義功能(3.2)數(shù)據(jù)查詢功能(3.3)數(shù)據(jù)修改功能(3.4)數(shù)據(jù)控制功能(第6,7章)三.視圖(3.5),目錄*,3.1SQL概述3.1.1SQL產(chǎn)生與標(biāo)準(zhǔn)3.1.2SQL功能與組成3.1.3語句類型與數(shù)據(jù)類型3.2數(shù)據(jù)定義3.3數(shù)據(jù)查詢3.4數(shù)據(jù)修改3.5視圖管理,SQL的產(chǎn)生與標(biāo)準(zhǔn),什么是SQL?StructuredQueryLanguage(結(jié)構(gòu)化查詢語言)的縮寫SQL是一種數(shù)據(jù)庫語言提供了對(duì)關(guān)系數(shù)據(jù)庫的定義、操縱(查詢和修改)、控制等功能SQL是關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言主流的關(guān)系數(shù)據(jù)庫管理系統(tǒng)軟件,雖然提供的(用戶與數(shù)據(jù)庫交互用的)數(shù)據(jù)庫語言各有不同,但都要遵循這一標(biāo)準(zhǔn)。不管是Oracle的PL/SQL,還是SQLServer的Transact-SQL,它們與標(biāo)準(zhǔn)SQL都是大同小異的。SQL的歷史1974年,由Boyce和Chamber提出1975-1979年,在SystemR上實(shí)現(xiàn),由IBM的SanJose研究室研制,稱為Sequel,SQL的產(chǎn)生與標(biāo)準(zhǔn),SQL的標(biāo)準(zhǔn)化相關(guān)組織ANSI(AmericanNationalStandardInstitute)美國國家標(biāo)準(zhǔn)協(xié)會(huì)ISO(InternationalOrganizationforStandardization)國際標(biāo)準(zhǔn)化組織相關(guān)版本SQL-86:“數(shù)據(jù)庫語言SQL”,確立了SQL(擊敗其它競(jìng)爭(zhēng)對(duì)手)成為關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言。SQL-89:“具有完整性增強(qiáng)的數(shù)據(jù)庫語言SQL”,增加了對(duì)完整性約束的支持,SQL的產(chǎn)生與標(biāo)準(zhǔn),SQL-92(SQL-2)是SQL-89的超集,增加了許多新特性,如新的數(shù)據(jù)類型,更豐富的數(shù)據(jù)操作,更強(qiáng)的完整性、安全性支持等。SQL-99(SQL-3)增加了對(duì)對(duì)象模型的支持SQL-2003標(biāo)志著傳統(tǒng)關(guān)系模型到非關(guān)系模型(對(duì)象模型和XML模型)的第二次重要擴(kuò)充,即本章學(xué)習(xí)的SQL,SQL的特點(diǎn),SQL的特點(diǎn)1.綜合統(tǒng)一性功能的統(tǒng)一:提供數(shù)據(jù)定義、操縱和控制功能,集DDL、DML和DCL等語言于一體。操作過程的統(tǒng)一:都是對(duì)關(guān)系進(jìn)行操作,包括操作對(duì)象和結(jié)果2.高度非過程化用戶只需提出“做什么”,而無須說明“怎么做”,不必介入具體的操作實(shí)現(xiàn)過程(由系統(tǒng)自動(dòng)處理)3.面向集合的操作方式一次一集合:每次操作的對(duì)象和結(jié)果都是關(guān)系(記錄集合)與之相反的是“一次一記錄”:每次操作只能處理一條記錄,要通過循環(huán)等手段才能處理一個(gè)記錄集合,SQL的特點(diǎn),4.兩種使用方式,統(tǒng)一的語法結(jié)構(gòu)自含式SQL:數(shù)據(jù)庫管理系統(tǒng)自帶,供用戶與數(shù)據(jù)庫聯(lián)機(jī)交互使用,所以又稱為聯(lián)機(jī)式SQL。嵌入式SQL:嵌入到高級(jí)語言里面,供程序員用這些高級(jí)語言開發(fā)數(shù)據(jù)庫應(yīng)用程序時(shí)使用。5.語言簡(jiǎn)潔,易學(xué)易用,SQL規(guī)定的三級(jí)模式結(jié)構(gòu),數(shù)據(jù)庫的三級(jí)模式物理模式整體數(shù)據(jù)庫的物理結(jié)構(gòu)描述所有數(shù)據(jù)是如何在硬盤等介質(zhì)上存儲(chǔ)的邏輯模式整體數(shù)據(jù)庫的邏輯結(jié)構(gòu)描述所有數(shù)據(jù)的結(jié)構(gòu)及所有數(shù)據(jù)間的聯(lián)系子模式部分?jǐn)?shù)據(jù)庫的邏輯結(jié)構(gòu)描述某個(gè)特定用戶能看到的那一部分?jǐn)?shù)據(jù)的結(jié)構(gòu)及它們之間的聯(lián)系,SQL規(guī)定的三級(jí)模式結(jié)構(gòu),SQL中所規(guī)定的數(shù)據(jù)庫結(jié)構(gòu)(三級(jí)模式結(jié)構(gòu)),SQL的數(shù)據(jù)類型,SQL-92標(biāo)準(zhǔn)中規(guī)定的數(shù)據(jù)類型char(n):長(zhǎng)度固定為n的字符串varchar(n):可變長(zhǎng)度的字符串,最大長(zhǎng)度為nint:整數(shù)smallint:小整數(shù)numeric(p,q):總共不多于p位,小數(shù)點(diǎn)右邊不多于q位的定點(diǎn)數(shù)real:浮點(diǎn)數(shù)doubleprecision:雙精度浮點(diǎn)數(shù)float(n):精度至少為n位的浮點(diǎn)數(shù)date:日期(年,月,日)time:時(shí)間(小時(shí),分,秒)interval:兩個(gè)date或time類型數(shù)據(jù)之間的差,SQL的功能,SQL的功能和相應(yīng)的操作語句,SQL的功能,SQL的功能和相應(yīng)的操作語句,SQL的功能,SQL的功能和相應(yīng)的操作語句,目錄*,3.1SQL概述3.2數(shù)據(jù)定義3.2.1SQL模式定義3.2.2基本表定義3.2.3索引定義3.3數(shù)據(jù)查詢3.4數(shù)據(jù)修改3.5視圖管理,SQL的數(shù)據(jù)定義功能,SQL提供各種對(duì)象的定義數(shù)據(jù)庫/模式SQL中,一個(gè)關(guān)系數(shù)據(jù)庫(的模式)可以稱為SQL模式或模式。包含為滿足應(yīng)用需要而建立的多個(gè)基本表、視圖、索引等。關(guān)系視圖索引用戶域(數(shù)據(jù)類型),SQL的數(shù)據(jù)定義功能,模式的定義,新建模式格式createschema模式名authorization所有者用戶名示例createschemaClass_schemaauthorizationDBA撤銷模式格式dropschema模式名cascade|restrict示例dropschemaClass_dbcascade,數(shù)據(jù)庫的定義,新建數(shù)據(jù)庫格式createdatabase數(shù)據(jù)庫名示例createdatabaseClass_db撤銷數(shù)據(jù)庫格式dropdatabase數(shù)據(jù)庫名示例dropdatabaseClass_db,(基本表)關(guān)系的定義,新建(基本表)關(guān)系命令格式createtable關(guān)系名(屬性名域default缺省值null|notnull,屬性名域default缺省值null|notnull,primarykey(屬性名,屬性名),foreignkey(屬性名,屬性名)references被參照關(guān)系名(屬性名,屬性名),check(條件)格式:A表示A出現(xiàn)0或1次;A表示A出現(xiàn)0或1或多次,關(guān)系的屬性,1或多個(gè),關(guān)系的主碼,0或1個(gè),關(guān)系的外部碼,0或多個(gè),每一個(gè)元組(內(nèi)部屬性值)都必須滿足的約束條件(插入或更新元組時(shí)檢查),(基本表)關(guān)系的定義,例:createtableS(SNOVARCHAR(4),SNAMEPERSON-NAMEnotnull,AGESMALLINTdefault22,SEXVARCHAR(1),primarykey(SNO),check(AGE0),S,(基本表)關(guān)系的定義,例:createtableC(CNOVARCHAR(4),CNAMEVARCHAR(10)notnull,TEACHERVARCHAR(8),primarykey(CNO),),S,C,(基本表)關(guān)系的定義,例:createtableSC(SNOVARCHAR(4),CNOVARCHAR(4),SCOREINT,primarykey(SNO,CNO),foreignkey(SNO)referencesS(SNO),foreignkey(CNO)referencesC(CNO),check(SCOREISNULL)OR(SCOREBETWEEN0AND100),S,C,SC,(基本表)關(guān)系的定義,修改關(guān)系(的結(jié)構(gòu)如屬性等,而非內(nèi)容如元組等)命令格式altertable關(guān)系名add屬性名域default缺省值notnulldrop屬性名modify屬性名新域default新缺省值notnull例altertableSaddDEPTVARCHAR(20)notnullaltertableSCmodifyRESULTSMALLINT,(基本表)關(guān)系的定義,撤銷關(guān)系命令格式droptable關(guān)系名示例droptableSCWarning!:撤銷關(guān)系的定義后,關(guān)系的結(jié)構(gòu)(字段)和內(nèi)容(數(shù)據(jù)記錄)都不再存在。相關(guān)索引,由它導(dǎo)出的視圖也都可能被連帶撤銷。,索引的定義,新建索引格式createuniqueclusterindex索引名on表名(屬性名,屬性名,)unique表示唯一索引;cluster表示聚簇索引示例createuniqueindexindex_on_s_s#onS(S#)撤銷索引格式dropindex索引名示例dropindexindex_on_s_s#,目錄*,3.1SQL概述3.2數(shù)據(jù)定義3.3數(shù)據(jù)查詢3.4數(shù)據(jù)修改3.5視圖管理,SQL的數(shù)據(jù)查詢功能,統(tǒng)一的查詢語句:Select語句基本結(jié)構(gòu)Select子句(投影)From子句(笛卡兒積)Where子句(選擇)匯合基本結(jié)構(gòu)匯合多個(gè)基本結(jié)構(gòu)查詢出的結(jié)果(集合運(yùn)算)擴(kuò)展基本結(jié)構(gòu)增加GroupBy子句(聚集運(yùn)算)增加OrderBy子句(對(duì)結(jié)果排序)嵌套子查詢連接關(guān)系,Select查詢的基本結(jié)構(gòu),基本結(jié)構(gòu):SelectA1,A2,AnFromR1,R2,RmWherePA1,A2,An:屬性R1,R2,Rm:關(guān)系P:條件(布爾表達(dá)式)近似等價(jià)關(guān)系運(yùn)算A1,A2,An(p(R1R2Rm)運(yùn)算和次序From(笛卡兒積)Where(選擇)Select(投影),Select子句,作用:從(From子句列出的)關(guān)系中選出指定屬性近似于投影運(yùn)算應(yīng)用示例:S:學(xué)生關(guān)系問:所有學(xué)生的姓名和年齡?,Select姓名,年齡FromS,S,保留指定的屬性,Select子句,要點(diǎn)屬性列表中,可以用表達(dá)式來構(gòu)造的新屬性相當(dāng)于廣義投影運(yùn)算例S:學(xué)生關(guān)系問:每個(gè)學(xué)生的出生年份,S,Select姓名,2013年齡FromS,Select子句,用表達(dá)式構(gòu)造的新屬性無屬性名,但可采用以下方式命名表達(dá)式as屬性名原有屬性也可用如下方式重新命名舊屬性名as新屬性名,S,Select姓名as學(xué)生姓名,2013年齡as出生年份FromS,Select子句,要點(diǎn)如果列出的關(guān)系有多個(gè),且有同名屬性。則指定這些同名屬性時(shí),必須加關(guān)系名前綴:關(guān)系名.屬性名。其它屬性可加可不加以下SQL正確么?如正確,結(jié)果關(guān)系的屬性名是什么?Select姓名,性別,成績(jī)FromR,SSelectR.姓名,S.姓名,S.性別FromR,S,S,R,Select子句,要點(diǎn)在屬性列表中,*號(hào)表示所有關(guān)系的所有屬性,關(guān)系名.*表示某個(gè)關(guān)系的所有屬性思考,下列SQL的結(jié)果包含哪些屬性?,Select*FromS,R,S,R,SelectS.*,R.成績(jī)FromS,R,思考,select子句等價(jià)于投影運(yùn)算么?,Select子句,要點(diǎn)Select后面,屬性列表前,可加上關(guān)鍵字all或者distinctall關(guān)鍵字表明結(jié)果中不消去重復(fù)元組distinct關(guān)鍵字表明結(jié)果中消去重復(fù)元組沒說明all或distinct的情況下,默認(rèn)是all,即不消去重復(fù)行,Selectall課程FromR,R,Selectdistinct課程FromR,思考,select子句等價(jià)于投影運(yùn)算么?selectdistinct等價(jià)于投影。select或者selectall都未消去重復(fù),Where子句,作用:選出滿足條件的行等價(jià)于選擇運(yùn)算例:S:學(xué)生關(guān)系問:所有男學(xué)生的信息?,S,篩選滿足條件的行,SelectFromSWhere性別=男,Where子句,在Where子句的條件中可能出現(xiàn)的運(yùn)算符號(hào)比較運(yùn)算符、=、邏輯運(yùn)算符and,or,not范圍運(yùn)算格式1:between下界and上界(下界上界)格式2:notbetween下界and上界例1:年齡between20and23例2:年齡between23and20,Where子句,集合運(yùn)算:格式1:in集合;格式2:notin集合例:姓名in小陳,小李例:姓名notin小陳,小李匹配運(yùn)算格式:like匹配串;notlike匹配串是轉(zhuǎn)義字符例1:姓名like陳%例2:姓名like陳_例3:內(nèi)容like%100%正確%,Where子句,例:S:學(xué)生關(guān)系問:所有學(xué)生的姓名和出生年份?,S,Select姓名,2013年齡as出生年份FromS,Where子句,例:S:學(xué)生關(guān)系問:所有91年之前(不含91年)出生的學(xué)生姓名和出生年份?,S,Select姓名,2013年齡as出生年份FromSWhere出生年份1991,Select姓名,2013年齡as出生年份FromSWhere2013年齡85,OrderBy子句,格式(出現(xiàn)在最最后面)SelectA1,A2,AnFromR1,R2,RmWherePGroupBy屬性1,屬性2,Having分組限定條件QOrderBy屬性1ascdesc,屬性2ascdesc,OrderBy子句的作用:在Select子句得出結(jié)果后,對(duì)結(jié)果進(jìn)行排序先按屬性1的值,升序(asc)或降序(desc)排列,缺省是升序;屬性1的值相同時(shí),再按屬性2值升序或降序排列,OrderBy子句,例R:選修關(guān)系問:從高到低列出物理課程的成績(jī),R,Select姓名,成績(jī)FromSWhere課程=物理OrderBy成績(jī)desc,總結(jié),Select語句的運(yùn)算“

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論