數(shù)據(jù)庫系統(tǒng)三_第1頁
數(shù)據(jù)庫系統(tǒng)三_第2頁
數(shù)據(jù)庫系統(tǒng)三_第3頁
數(shù)據(jù)庫系統(tǒng)三_第4頁
數(shù)據(jù)庫系統(tǒng)三_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第3章關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL本章內(nèi)容提要3.1SQL概述3.2學(xué)生-課程數(shù)據(jù)庫3.3數(shù)據(jù)定義3.4數(shù)據(jù)查詢3.5數(shù)據(jù)更新3.6視圖3.7SQLServer及其交互式環(huán)境簡介12本章內(nèi)容提要3.1SQL概述3.2學(xué)生-課程數(shù)據(jù)庫3.3數(shù)據(jù)定義3.4數(shù)據(jù)查詢3.5數(shù)據(jù)更新3.6視圖3.7SQLServer及其交互式環(huán)境簡介233.1SQL概述SQL(StructuredQueryLanguage):結(jié)構(gòu)化查詢語言,是關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言。SQL是一個通用的、功能極強的關(guān)系數(shù)據(jù)庫語言,被國際上絕大多數(shù)商品化的關(guān)系數(shù)據(jù)庫采用。SQL語言既可以作為交互式數(shù)據(jù)庫語言使用,也可以作為程序設(shè)計語言的子語言使用。33.1SQL概述1974年,由Boyce和Chamber提出1975-1979年,在SystemR上實現(xiàn),由IBM的SanJose研究室研制,稱為Sequel453.1SQL概述SQL標(biāo)準(zhǔn)化有關(guān)組織ANSI(AmericanNaturalStandardInstitute)ISO(InternationalOrganizationforStandardization)有關(guān)標(biāo)準(zhǔn)SQL-86“數(shù)據(jù)庫語言SQL”SQL-89“具有完整性增強的數(shù)據(jù)庫語言SQL”,增加了對完整性約束的支持563.1SQL概述SQL標(biāo)準(zhǔn)化有關(guān)標(biāo)準(zhǔn)SQL-92“數(shù)據(jù)庫語言SQL”,是SQL-89的超集,增加了許多新特性,如新的數(shù)據(jù)類型,更豐富的數(shù)據(jù)操作,更強的完整性、安全性支持等。SQL-1999增加了對象關(guān)系特征673.1SQL概述SQL標(biāo)準(zhǔn)化783.1SQL概述SQL的特點綜合統(tǒng)一集數(shù)據(jù)定義語言(DDL),數(shù)據(jù)操縱語言(DML),數(shù)據(jù)控制語言(DCL)功能于一體可以獨立完成數(shù)據(jù)庫生命周期中的全部活動用戶數(shù)據(jù)庫投入運行后,可根據(jù)需要隨時逐步修改模式,不影響數(shù)據(jù)的運行數(shù)據(jù)操作符統(tǒng)一893.1SQL概述SQL的特點高度非過程化非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操縱語言“面向過程”,必須制定存取路徑SQL只要提出“做什么”,無須了解存取路徑存取路徑的選擇以及SQL的操作過程由系統(tǒng)自動完成9103.1SQL概述SQL的特點面向集合的操作方式非關(guān)系數(shù)據(jù)模型采用面向記錄的操作方式,操作對象是一條記錄SQL采用集合操作方式操作對象、查找結(jié)果可以是元組的集合一次插入、刪除、更新操作的對象可以是元組的集合10113.1SQL概述SQL的特點以同一種語法結(jié)構(gòu)提供多種使用方式SQL是獨立的語言

能夠獨立地用于聯(lián)機交互的使用方式SQL又是嵌入式語言SQL能夠嵌入到高級語言(例如C,C++,Java)程序中,供程序員設(shè)計程序時使用11123.1SQL概述SQL的特點語言簡潔,易學(xué)易用SQL功能極強,完成核心功能只用了9個動詞12133.1SQL概述SQL的基本概念SQL支持關(guān)系數(shù)據(jù)庫三級模式結(jié)構(gòu)SQL視圖2視圖1基本表2基本表1基本表3基本表4存儲文件2存儲文件1外模式模式內(nèi)模式13143.1SQL概述SQL的基本概念基本表本身獨立存在的表SQL中一個關(guān)系就對應(yīng)一個基本表一個(或多個)基本表對應(yīng)一個存儲文件一個表可以帶若干索引存儲文件邏輯結(jié)構(gòu)組成了關(guān)系數(shù)據(jù)庫的內(nèi)模式物理結(jié)構(gòu)是任意的,對用戶透明14153.1SQL概述SQL的基本概念視圖從一個或幾個基本表導(dǎo)出的表數(shù)據(jù)庫中只存放視圖的定義而不存放視圖對應(yīng)的數(shù)據(jù)視圖是一個虛表用戶可以在視圖上再定義視圖1516本章內(nèi)容提要3.1SQL概述3.2學(xué)生-課程數(shù)據(jù)庫3.3數(shù)據(jù)定義3.4數(shù)據(jù)查詢3.5數(shù)據(jù)更新3.6視圖3.7SQLServer及其交互式環(huán)境簡介16173.2學(xué)生-課程數(shù)據(jù)庫學(xué)生-課程模式S-T院系表系別Dno,系名Dname,系主任DeanDept(Dno,Dname,Dean)學(xué)生表學(xué)號Sno,姓名Sname,性別Ssex,年齡Sage,所屬系別DnoStudent(Sno,Sname,Ssex,Sage,Dno)17183.2學(xué)生-課程數(shù)據(jù)庫學(xué)生-課程模式S-T課程表課程號Cno,課程名Cname,先行課Cpno,學(xué)分Ccredit,任課教師編號PnoCourse(Cno,Cname,Cpno,Ccredit,Pno)學(xué)生選課表學(xué)號Sno,課程號Cno,成績GradeSC(Sno,Cno,Grade)18193.2學(xué)生-課程數(shù)據(jù)庫學(xué)生-課程模式S-T教師表教師編號Pno,教師名Pname,所屬院系Dno,工資SalProf(Pno,Pname,Page,Dno,Sal)19203.2學(xué)生-課程數(shù)據(jù)庫系別Dno系名Dname系主任

Dean1234計算機數(shù)學(xué)信息英語04005060030800407003Dept20213.2學(xué)生-課程數(shù)據(jù)庫Student21223.2學(xué)生-課程數(shù)據(jù)庫課程號Cno課程名Cname先行課Cpno教師編號Pno學(xué)分Ccredit1234567數(shù)據(jù)庫數(shù)學(xué)信息系統(tǒng)操作系統(tǒng)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)處理PASCAL語言51676040010600708009040030700303004040014243424Course22233.2學(xué)生-課程數(shù)據(jù)庫學(xué)號Sno課程號

Cno成績

Grade

20020121200202212002022220020322

12323

9285889080SC23243.2學(xué)生-課程數(shù)據(jù)庫教師編號Pno姓名Pname年齡

Page所在系別

Dno工資

Sal04001060070800907003王威李亞東李紅梅張青男男女男12343000100020004000Prof2425本章內(nèi)容提要3.1SQL概述3.2學(xué)生-課程數(shù)據(jù)庫3.3數(shù)據(jù)定義3.4數(shù)據(jù)查詢3.5數(shù)據(jù)更新3.6視圖3.7SQLServer及其交互式環(huán)境簡介25263.3數(shù)據(jù)定義SQL的數(shù)據(jù)定義功能:模式定義、表定義、視圖和索引的定義26273.3數(shù)據(jù)定義模式的定義與刪除基本表的定義、刪除與修改索引的建立與刪除27283.3數(shù)據(jù)定義-模式的定義與刪除模式的定義[例1]定義一個學(xué)生-課程模式S-T

CREATESCHEMA“S-T”AUTHORIZATIONWANG為用戶WANG定義了一個模式S-T[例2]CREATESCHEMAAUTHORIZATIONWANG;<模式名>隱含為用戶名WANG如果沒有指定<模式名>,那么<模式名>隱含為<用戶名>28293.3數(shù)據(jù)定義-模式的定義與刪除模式的定義定義模式實際上定義了一個命名空間在這個空間中可以定義該模式包含的數(shù)據(jù)庫對象,例如基本表、視圖、索引等;在CREATESCHEMA中可以接受CREATETABLE,CREATEVIEW和GRANT子句。CREATESCHEMA<模式名>AUTHORIZATION<用戶名>[<表定義子句>|<視圖定義子句>|<授權(quán)定義子句>]29303.3數(shù)據(jù)定義-模式的定義與刪除模式的定義[例3]CREATESCHEMATESTAUTHORIZATIONZHANGCREATETABLETAB1(COL1SMALLINT,COL2INT,COL3CHAR(20),COL4NUMERIC(10,3),COL5DECIMAL(5,2));為用戶ZHANG創(chuàng)建了一個模式TEST,并在其中定義了一個表TAB1。30313.3數(shù)據(jù)定義-模式的定義與刪除刪除模式DROPSCHEMA<模式名><CASCADE|RESTRICT>CASCADE(級聯(lián)):刪除模式的同時把該模式中所有的數(shù)據(jù)庫對象全部刪除RESTRICT(限制):如果該模式中定義了下屬的數(shù)據(jù)庫對象(如表、視圖等),則拒絕該刪除語句的執(zhí)行。當(dāng)該模式中沒有任何下屬的對象時才能執(zhí)行31323.3數(shù)據(jù)定義-模式的定義與刪除刪除模式[例4]DROPSCHEMAZHANGCASCADE;刪除模式ZHANG同時該模式中定義的表TAB1也被刪除32333.3數(shù)據(jù)定義-基本表的定義、刪除與修改

定義基本表CREATETABLE<表名>

(<列名><數(shù)據(jù)類型>[<列級完整性約束條件>][,<列名><數(shù)據(jù)類型>[<列級完整性約束條件>]]…[,<表級完整性約束條件>]);如果完整性約束條件涉及到該表的多個屬性列,則必須定義在表級上,否則既可以定義在列級也可以定義在表級。

33343.3數(shù)據(jù)定義-基本表的定義、刪除與修改數(shù)據(jù)類型SQL中域的概念用數(shù)據(jù)類型來實現(xiàn)定義表的屬性時需要指明其數(shù)據(jù)類型及長度選用哪種數(shù)據(jù)類型取值范圍要做哪些運算34353.3數(shù)據(jù)定義-基本表的定義、刪除與修改數(shù)據(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:SS35363.3數(shù)據(jù)定義-基本表的定義、刪除與修改數(shù)據(jù)類型現(xiàn)行商用DBMS的數(shù)據(jù)類型有時和上面有些差異,請注意:和高級語言的數(shù)據(jù)類型,總體上是一致的,但也有些差異36373.3數(shù)據(jù)定義-基本表的定義、刪除與修改

SQLServer的數(shù)據(jù)類型37383.3數(shù)據(jù)定義-基本表的定義、刪除與修改

SQLServer的數(shù)據(jù)類型38393.3數(shù)據(jù)定義-基本表的定義、刪除與修改

SQLServer的數(shù)據(jù)類型39403.3數(shù)據(jù)定義-基本表的定義、刪除與修改

SQLServer的數(shù)據(jù)類型40413.3數(shù)據(jù)定義-基本表的定義、刪除與修改

SQLServer的數(shù)據(jù)類型41423.3數(shù)據(jù)定義-基本表的定義、刪除與修改

定義基本表[例5]建立“學(xué)院”表Dept,學(xué)院號是主碼,學(xué)院名不可為空。CREATETABLEDept (DnoCHAR(10), DnameCHAR(20)NOTNULL, DeanCHAR(10),

PRIMARYKEY(Dno) );主碼42433.3數(shù)據(jù)定義-基本表的定義、刪除與修改

定義基本表[例6]建立“學(xué)生”表Student,學(xué)號是主碼,姓名取值唯一。CREATETABLEStudent(SnoCHAR(9)PRIMARYKEY,/*列級完整性約束條件*/SnameCHAR(20)UNIQUE,/*Sname取唯一值*/SsexCHAR(2),SageSMALLINT,DnoCHAR(10),

FOREIGNKEY(Dno)

REFERENCESDept(Dno));主碼表級完整性約束條件,Dno是外碼,被參照表是Dept43443.3數(shù)據(jù)定義-基本表的定義、刪除與修改

定義基本表[例7]建立一個“教師”表ProfCREATETABLEProf (PnoCHAR(10), PnameCHAR(20)

NOTNULL, Sal INT, PageINT, DnoCHAR(10),

PRIMARYKEY(Pno),

FOREIGNKEY(Dno) REFERENCESDept(Dno));

44453.3數(shù)據(jù)定義-基本表的定義、刪除與修改

定義基本表[例8]建立一個“課程”表CourseCREATETABLECourse(CnoCHAR(4)PRIMARYKEY,CnameCHAR(40),CpnoCHAR(4),CcreditSMALLINT,

PnoCHAR(10),

FOREIGNKEY(Cpno)REFERENCESCourse(Cno),FOREIGNKEY(Pno)REFERENCESProf(Pno));先修課

45463.3數(shù)據(jù)定義-基本表的定義、刪除與修改

定義基本表[例9]建立一個“學(xué)生選課”表SCCREATETABLESC(SnoCHAR(9),CnoCHAR(4),GradeSMALLINT,

PRIMARYKEY(Sno,Cno),

FOREIGNKEY(Sno)REFERENCESStudent(Sno),

FOREIGNKEY(Cno)REFERENCESCourse(Cno));主碼由兩個屬性構(gòu)成,必須作為表級完整性進行定義表級完整性約束條件,Sno是外碼,被參照表是Student表級完整性約束條件,Cno是外碼,被參照表是Course46473.3數(shù)據(jù)定義-基本表的定義、刪除與修改模式與表每一個基本表都屬于某一個模式一個模式包含多個基本表定義基本表所屬模式方法一:在表名中明顯地給出模式名Createtable“S-T”.Student();Createtable“S-T”.Cource();Createtable“S-T”.SC();方法二:在創(chuàng)建模式語句中同時創(chuàng)建表方法三:設(shè)置所屬的模式47483.3數(shù)據(jù)定義-基本表的定義、刪除與修改模式與表創(chuàng)建基本表(其他數(shù)據(jù)庫對象也一樣)時,若沒有指定模式,系統(tǒng)根據(jù)搜索路徑來確定該對象所屬的模式RDBMS會使用模式列表中第一個存在的模式作為數(shù)據(jù)庫對象的模式名若搜索路徑中的模式名都不存在,系統(tǒng)將給出錯誤48493.3數(shù)據(jù)定義-基本表的定義、刪除與修改修改基本表ALTERTABLE<表名>[ADD<新列名><數(shù)據(jù)類型>[完整性約束]][DROP<完整性約束名>][ALTERCOLUMN<列名><數(shù)據(jù)類型>];49503.3數(shù)據(jù)定義-基本表的定義、刪除與修改修改基本表[例11]向Student表增加“入學(xué)時間”列,其數(shù)據(jù)類型為日期型。ALTERTABLEStudentADDS_entranceDATE;不論基本表中原來是否已有數(shù)據(jù),新增加的列一律為空值。50513.3數(shù)據(jù)定義-基本表的定義、刪除與修改修改基本表[例12]將年齡的數(shù)據(jù)類型由字符型(假設(shè)原來的數(shù)據(jù)類型是字符型)改為整數(shù)。ALTERTABLEStudentALTERCOLUMNSageINT;[例13]增加課程名稱必須取唯一值的約束條件。ALTERTABLECourseADDUNIQUE(Cname);51523.3數(shù)據(jù)定義-基本表的定義、刪除與修改刪除基本表DROPTABLE<表名>[RESTRICT|CASCADE];RESTRICT:刪除表是有限制的欲刪除的基本表不能被其他表的約束所引用如果存在依賴該表的對象,則此表不能被刪除CASCADE:刪除該表沒有限制在刪除基本表的同時,相關(guān)的依賴對象一起刪除52533.3數(shù)據(jù)定義-基本表的定義、刪除與修改刪除基本表[例14]刪除Student表DROPTABLEStudentCASCADE;基本表定義被刪除,數(shù)據(jù)被刪除表上建立的索引、視圖、觸發(fā)器等一般也將被刪除53543.3數(shù)據(jù)定義-基本表的定義、刪除與修改刪除基本表[例15]若表上建有視圖,選擇RESTRICT時表不能刪除

CREATEVIEWIS_Student AS SELECTSno,Sname,Sage FROMStudentWHERESdept=‘IS’;

DROPTABLEStudentRESTRICT;

--ERROR:cannotdroptableStudentbecauseotherobjectsdependonit54553.3數(shù)據(jù)定義-基本表的定義、刪除與修改刪除基本表[例16]如果選擇CASCADE時可以刪除表,視圖也自動被刪除DROPTABLEStudentCASCADE; --NOTICE:dropcascadestoviewIS_StudentSELECT*FROMIS_Student;--ERROR:relation"IS_Student"doesnotexist55563.3數(shù)據(jù)定義-基本表的定義、刪除與修改DROPTABLE時,SQL99與3個RDBMS的處理策略比較565757583.3數(shù)據(jù)定義-索引的建立與刪除建立索引的目的:加快查詢速度誰可以建立索引DBA或表的屬主(即建立表的人)DBMS一般會自動建立以下列上的索引PRIMARYKEYUNIQUE誰維護索引DBMS自動完成使用索引DBMS自動選擇是否使用索引以及使用哪些索引58593.3數(shù)據(jù)定義-索引的建立與刪除索引RDBMS中索引一般采用B+樹、HASH索引來實現(xiàn)B+樹索引具有動態(tài)平衡的優(yōu)點HASH索引具有查找速度快的特點采用B+樹,還是HASH索引則由具體的RDBMS來決定索引是關(guān)系數(shù)據(jù)庫的內(nèi)部實現(xiàn)技術(shù),屬于內(nèi)模式的范疇CREATEINDEX語句定義索引時,可以定義索引是唯一索引、非唯一索引或聚簇索引59603.3數(shù)據(jù)定義-索引的建立與刪除索引唯一索引:每個索引值只對應(yīng)唯一的數(shù)據(jù)記錄。聚簇索引:索引項的順序與表中記錄的物理順序一致的索引組織。60613.3數(shù)據(jù)定義-索引的建立與刪除建立索引CREATE

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論