資源描述:
《關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL語(yǔ)言》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、第四章關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL4.1SQL概述4.2數(shù)據(jù)定義4.3數(shù)據(jù)查詢4.4數(shù)據(jù)更新4.5視圖第四章關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL4.1SQL概述SQL(StructedQueryLanguage),即結(jié)構(gòu)化查詢語(yǔ)言,是關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言,SQL是一個(gè)通用的、功能極強(qiáng)的關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言。4.1.1SQL的產(chǎn)生與發(fā)展SQL是在1974年由Boycee和Chamberlin提出的,并在IBM公司研制的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)原型SystemR上實(shí)現(xiàn)。由于SQL簡(jiǎn)單易學(xué),功能豐富,深受用戶及計(jì)算機(jī)工業(yè)界歡迎,因此被數(shù)據(jù)庫(kù)廠商所采用。經(jīng)各公司的不斷修改、擴(kuò)充和完善,SQL得到業(yè)界的認(rèn)可。1986年10月美
2、國(guó)國(guó)家標(biāo)準(zhǔn)局的數(shù)據(jù)庫(kù)委員會(huì)X3H2批準(zhǔn)了SQL作為關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言的美國(guó)標(biāo)準(zhǔn)。同年公布了SQL標(biāo)準(zhǔn)文本。1987年國(guó)際標(biāo)準(zhǔn)化組織也通過(guò)了這一標(biāo)準(zhǔn)。SQL標(biāo)準(zhǔn)從1986年公布以來(lái)隨著數(shù)據(jù)庫(kù)技術(shù)的發(fā)展不斷發(fā)展,不斷豐富。4.1.2SQL的特點(diǎn)一、綜合統(tǒng)一SQL集數(shù)據(jù)定義語(yǔ)言DDL、數(shù)據(jù)操縱語(yǔ)言DML、數(shù)據(jù)控制語(yǔ)言DCL的功能于一體,語(yǔ)言風(fēng)格統(tǒng)一,可以獨(dú)立完成數(shù)據(jù)庫(kù)生命周期中的全部活動(dòng)。二、高度非過(guò)程化SQL進(jìn)行數(shù)據(jù)操作,只要提出“做什么”,而無(wú)需指明“怎么做”,因此無(wú)需了解存取路徑。存取路徑的選擇以及SQL的操作過(guò)程由系統(tǒng)自動(dòng)完成。4.1.2SQL的特點(diǎn)三、面向集合的操作方式SQL采用面向集合的
3、操作方式,不僅操作對(duì)象、查找結(jié)果可以是元組的集合,而且一次插入、刪除、更新操作的對(duì)象也可以是元組的集合。四、以同一種語(yǔ)法結(jié)構(gòu)提供多種使用方式作為獨(dú)立語(yǔ)言,它能夠獨(dú)立地用于聯(lián)機(jī)交互的使用方式,用戶可以在終端鍵盤上直接鍵入SQL命令對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作;作為嵌入式語(yǔ)言,SQL語(yǔ)句能夠嵌入到高級(jí)語(yǔ)言(例如C,C++,Java)程序中,供程序員設(shè)計(jì)程序時(shí)使用。4.1.2SQL的特點(diǎn)五、語(yǔ)言簡(jiǎn)潔易學(xué)SQL功能極強(qiáng),但由于設(shè)計(jì)巧妙,語(yǔ)言十分簡(jiǎn)潔,完成核心功能只用了9個(gè)動(dòng)詞。SQL接近英語(yǔ)口語(yǔ),因此容易學(xué)習(xí),容易使用。SQL功能動(dòng)詞數(shù)據(jù)查詢SELECT數(shù)據(jù)定義CREATE,DROP,ALTER數(shù)據(jù)操縱INS
4、ERT,UPDATE,DELETE數(shù)據(jù)控制GRANT,REVOKE4.2數(shù)據(jù)定義4.2.1基本表的定義、刪除、與修改一、定義基本表CREATETABLE<表名>(<列名><數(shù)據(jù)類型>[列級(jí)完整性約束條件][,<列名><數(shù)據(jù)類型>[列級(jí)完整性約束條件]]…[,<表級(jí)完整性約束條件>]);4.2數(shù)據(jù)定義例:建立一個(gè)“學(xué)生”表Student。createtableStudent(snochar(9)primarykey,snamechar(20)unique,ssexchar(2),sagesmallint,sdeptchar(20));4.2數(shù)據(jù)定義例:建立一個(gè)“課程”表Course。crea
5、tetableCourse(cnochar(4)primarykey,cnamechar(40),cpnochar(4),ccreditsmallint,foreignkey(cpno)referencesCourse(cno));4.2數(shù)據(jù)定義例:建立學(xué)生選課表SC。createtableSC(snochar(9),cnochar(4),gradesmallint,foreignkey(sno)referencesstudent(sno),foreignkey(cno)referencescourse(cno))4.2數(shù)據(jù)定義4.2.2修改基本表ALTERTABLE<表名>[ADD<新列
6、名><數(shù)據(jù)類型>[完整性約束]][DROP<完整性約束名>][ALTERCOLUMN<列名><數(shù)據(jù)類型>];4.2數(shù)據(jù)定義例:向Student表增加“入學(xué)時(shí)間”列,其數(shù)據(jù)類型為日期型。altertableStudentadds_entrancedatetime;例:將年齡的數(shù)據(jù)類型由smallint改為int。altertableStudentaltercolumnsageint;4.2數(shù)據(jù)定義例:增加課程名必須取唯一值的約束。altertablecourseaddunique(cname);4.2數(shù)據(jù)定義4.2.3刪除基本表DROPTABLE<表名>[RESTRICT
7、CASCADE]R
8、ESTRICT:該表的刪除是有限制條件的。欲刪除的基本表不能被其他表的約束所引用(如CHECK,FOREIGNKEY等約束),不能有視圖,不能有觸發(fā)器,不能有存儲(chǔ)過(guò)程或函數(shù)等。如果存在這些依賴該表的對(duì)象,則此表不能被刪除。CASCADE:該表的刪除沒有限制條件。在刪除基本表的同時(shí),相關(guān)的依賴對(duì)象,例如視圖,都將被一起刪除。(SQLServer2000中不支持RESTRICT
9、CASCADE)4.2數(shù)據(jù)定義4.2.3索引的