第4章 標(biāo)準(zhǔn)查詢語(yǔ)言SQL_第1頁(yè)
第4章 標(biāo)準(zhǔn)查詢語(yǔ)言SQL_第2頁(yè)
第4章 標(biāo)準(zhǔn)查詢語(yǔ)言SQL_第3頁(yè)
第4章 標(biāo)準(zhǔn)查詢語(yǔ)言SQL_第4頁(yè)
第4章 標(biāo)準(zhǔn)查詢語(yǔ)言SQL_第5頁(yè)
已閱讀5頁(yè),還剩48頁(yè)未讀 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡(jiǎn)介

標(biāo)準(zhǔn)查詢語(yǔ)言SQL

結(jié)構(gòu)化查詢語(yǔ)言SQL(StructuredQueryLanguage)是關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)的國(guó)際標(biāo)準(zhǔn)語(yǔ)言,它在大型或中小型數(shù)據(jù)庫(kù)中都能使用。SQL語(yǔ)言集數(shù)據(jù)定義(DDL)、數(shù)據(jù)操縱(DML)、數(shù)據(jù)控制(DCL)于一身,學(xué)會(huì)了它,等于學(xué)會(huì)了在各種關(guān)系型數(shù)據(jù)庫(kù)中,各種不同的DBMS中都能進(jìn)行DDL、DML、DCL操作。本章主要敘述SQL語(yǔ)言的概念與特點(diǎn)、SQL語(yǔ)言的數(shù)據(jù)定義、SQL語(yǔ)言的數(shù)據(jù)查詢、SQL語(yǔ)言的數(shù)據(jù)更新、SQL語(yǔ)言處理視圖等方面知識(shí),最后介紹了嵌入式SQL語(yǔ)言概念以及在VisualBasic、C#和Java中SQL語(yǔ)言的具體使用方法

本章目錄

4.1SQL語(yǔ)言概述及其數(shù)據(jù)定義4.2SQL語(yǔ)言的數(shù)據(jù)查詢4.3SQL語(yǔ)言的數(shù)據(jù)更新與視圖4.4嵌入式SQL4.5本章小結(jié)習(xí)題4.1SQL語(yǔ)言概述及其數(shù)據(jù)定義

SQL語(yǔ)言無(wú)論是在Oracle、Sybase、Informix、SQLServer這樣的大型數(shù)據(jù)庫(kù)管理系統(tǒng)中,還是在VisualFoxpro、Access這樣的中小型數(shù)據(jù)庫(kù)管理系統(tǒng)中都能獲得支持。本節(jié)首先說(shuō)明SQL語(yǔ)言的發(fā)展過(guò)程和它的特點(diǎn),然后就詳細(xì)介紹SQL語(yǔ)言對(duì)數(shù)據(jù)庫(kù)表、索引文件的定義方法。SQL語(yǔ)言概述及其數(shù)據(jù)定義目錄4.1.1SQL語(yǔ)言的基本概念及其特點(diǎn)4.1.2SQL語(yǔ)言的數(shù)據(jù)定義4.1.3SQL對(duì)索引的創(chuàng)建與刪除SQL語(yǔ)言的基本概念及其特點(diǎn)SQL語(yǔ)言的發(fā)展過(guò)程:1989年,美國(guó)國(guó)家標(biāo)準(zhǔn)局(ANSI)定義了關(guān)系型數(shù)據(jù)庫(kù)的SQL標(biāo)準(zhǔn)語(yǔ)言,稱為ANSISQL89,隨后,國(guó)際標(biāo)準(zhǔn)化組織采用這一標(biāo)準(zhǔn),推出SQL89。1992年,國(guó)際標(biāo)準(zhǔn)化組織推出SQL92,也稱為SQL2。目前,SQL99正在起草中,其中增加了面向?qū)ο蠊δ?,也稱為:SQL3。我國(guó)在1990年頌布“信息處理系統(tǒng)數(shù)據(jù)庫(kù)語(yǔ)言SQL”,把其定為國(guó)家標(biāo)準(zhǔn)。SQL語(yǔ)言是一種介于關(guān)系代數(shù)和關(guān)系演算之間的語(yǔ)言,其功能包括查詢、操縱、定義和控制4個(gè)方面,是一個(gè)通用的、功能極強(qiáng)的關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言,它完全適合關(guān)系數(shù)據(jù)庫(kù)的三級(jí)模式結(jié)構(gòu)(外模式、模式、內(nèi)模式),遵循關(guān)系模型中3類完整性約束:實(shí)體完整性、參照完整性和自定義完整性。目前已成為關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言,廣泛應(yīng)用于各種數(shù)據(jù)庫(kù)。SQL語(yǔ)言的主要特點(diǎn)

(1)綜合統(tǒng)一。SQL語(yǔ)言集數(shù)據(jù)定義(DDL)、數(shù)據(jù)操縱(DML)、數(shù)據(jù)控制(DCL)于一體,語(yǔ)言風(fēng)格統(tǒng)一,可以獨(dú)立完成數(shù)據(jù)庫(kù)中模式定義、建立數(shù)據(jù)庫(kù)表、錄入、查詢、更新、維護(hù)數(shù)據(jù)、數(shù)據(jù)庫(kù)重構(gòu)、數(shù)據(jù)庫(kù)安全控制等一系列操作。便得用戶的數(shù)據(jù)庫(kù)投入運(yùn)行后,還可以根據(jù)實(shí)際需要,在不影響數(shù)據(jù)庫(kù)整體運(yùn)行的情況下,修改數(shù)據(jù)庫(kù)模式,具有良好的擴(kuò)充性。SQL語(yǔ)言的主要特點(diǎn)(2)高度非過(guò)程化。SQL語(yǔ)言與各種關(guān)系數(shù)據(jù)庫(kù)DBMS中的語(yǔ)言一樣是一種高度非過(guò)程化語(yǔ)言。使用時(shí),只要指明“做什么?”不必像高級(jí)語(yǔ)言那樣指明“怎樣做?”,因此用戶無(wú)需了解文件與數(shù)據(jù)的存取路徑,這種存取路徑的SQL語(yǔ)句的操作過(guò)程是由系統(tǒng)自動(dòng)來(lái)完成。這不僅大大減輕了編程人員的負(fù)擔(dān),還有利于提高數(shù)據(jù)的獨(dú)立性。SQL語(yǔ)言的主要特點(diǎn)(3)面向集合的操作方式。SQL語(yǔ)言操作與各種關(guān)系數(shù)據(jù)庫(kù)DBMS中的語(yǔ)言一樣是面向集合的操作方式。這就是說(shuō),它的操作方式不是針對(duì)某一個(gè)數(shù)據(jù),而是針對(duì)一條記錄和符合條件的多條記錄進(jìn)行的。例如,有一個(gè)班的學(xué)生關(guān)系(設(shè)為R)表,共有10多列內(nèi)容,任意條(有限)記錄,其中有1列是平均成績(jī),當(dāng)要顯示平均成績(jī)?cè)?0分以上同學(xué)的情況(10多列內(nèi)容一起顯示)時(shí),只要使用下列一條簡(jiǎn)單選擇語(yǔ)句,就或把符合條件的所有學(xué)生情況顯示出來(lái):

Select*FromRWhere平均成績(jī)>=80SQL語(yǔ)言的主要特點(diǎn)(4)提供兩種不同格式的使用方式。SQL語(yǔ)言提供的兩種不同格式的使用方法是:自含式和嵌入式。所謂SQL的自含式語(yǔ)言,是和各種關(guān)系數(shù)據(jù)庫(kù)DBMS中的語(yǔ)言一樣,能夠獨(dú)立地用于聯(lián)機(jī)交互的使用方式,用戶可以在鍵盤上直接鍵入SQL命令對(duì)數(shù)據(jù)進(jìn)行操作,當(dāng)然也可以寫(xiě)成代碼程序,在DBMS環(huán)境下運(yùn)行;所謂SQL嵌入式語(yǔ)言,是把SQL語(yǔ)言的各種命令嵌入到高級(jí)語(yǔ)言程序中使用。這種方式可使高級(jí)語(yǔ)言與數(shù)據(jù)庫(kù)結(jié)合起來(lái),克服高級(jí)語(yǔ)言處理大量數(shù)據(jù)效率不高的缺點(diǎn),這在當(dāng)今各種應(yīng)用系統(tǒng)開(kāi)發(fā)中發(fā)揮很大的作用。目前應(yīng)用較多的高級(jí)語(yǔ)言是VisualBasic、C語(yǔ)言一簇(VC、C++、C#)、Java等。SQL語(yǔ)言的主要特點(diǎn)(5)語(yǔ)言簡(jiǎn)捷,易學(xué)易用。SQL語(yǔ)言功能強(qiáng)大,但語(yǔ)言本身卻很簡(jiǎn)單。一套語(yǔ)言完成所有功能只使用9個(gè)動(dòng)詞,它們是:查詢命令(Select)、數(shù)據(jù)定義中的創(chuàng)建(Create)、刪除(Drop)、修改(Alter)、數(shù)據(jù)操縱中插入(Insert)、修改(Update)、刪除(Delete)、數(shù)據(jù)控制中的權(quán)力授于(Grant)、權(quán)力回收(Revoke)。SQL語(yǔ)法簡(jiǎn)單,接近口語(yǔ),易學(xué)易用。SQL語(yǔ)言的數(shù)據(jù)定義1.定義數(shù)據(jù)庫(kù)(應(yīng)在實(shí)際環(huán)境中演示)

一般格式為:CREATEDATABASE<數(shù)據(jù)庫(kù)名>例如要建立一個(gè)教師(teacher)的數(shù)據(jù)庫(kù),在查詢分析器中輸入命令:CREATEDATABASEteacher在SQLServer2005中,打開(kāi)數(shù)據(jù)庫(kù),就會(huì)見(jiàn)到teacher的名稱。SQL語(yǔ)言的數(shù)據(jù)定義2.定義基本表(應(yīng)在實(shí)際環(huán)境中演示)

選擇teacher數(shù)據(jù)庫(kù)后,在查詢分析器中輸入建立基本表的命令就可以建立基本表,定義基本表的結(jié)構(gòu),格式形式為:

CREATETABLE<基本表名>(<列名><數(shù)據(jù)類型>,……完整性約束,……)SQL語(yǔ)言的數(shù)據(jù)定義定義數(shù)據(jù)表命令的說(shuō)明:(1)<表名>:規(guī)定所創(chuàng)建的基本表的名稱。在一個(gè)數(shù)據(jù)庫(kù)中,不允許有兩個(gè)基本表同名。

(2)<列名>:規(guī)定了該列(屬性)的名稱。一個(gè)表中不能有兩列同名。(3)<數(shù)據(jù)類型>:規(guī)定了該列的數(shù)據(jù)類型。各具體DBMS所提供的數(shù)據(jù)類型是不同的;本書(shū)使用的是SQLServer2005中規(guī)定的數(shù)據(jù)類型。(4)完整性約束:完整性約束規(guī)則在該命令中較為復(fù)雜,為了學(xué)習(xí)方便,沒(méi)有把命令的全部?jī)?nèi)容一次寫(xiě)出來(lái),這里主要用到下列三類子句:定義主鍵子句:Primarykey<屬性名1,…>檢查子句:Check(<條件>)外鍵子句:Constraint<約束名>ForeignKey<副表屬性名1…>References<主表屬性名1…>這里定義的主鍵一定要遵守實(shí)體完整性規(guī)則;外鍵一定要遵守參照完整性規(guī)則;檢查子句是遵守用戶自定義完整性規(guī)則。定義數(shù)據(jù)庫(kù)內(nèi)基本表實(shí)例說(shuō)明:(1)“教師”表:T,由教師編號(hào)(TNO)、姓名(TN)、性別(SEX)、年齡(AGE)、職稱(ZC)和所在專業(yè)(DEPT)6個(gè)屬性組成??捎洖椋篢(TNO,TN,SEX,AGE,ZC,DEPT)(2)“課程”表:C,由課程號(hào)(CNO)、課程名(CN)、課程性質(zhì)(CX)和學(xué)分(CT)4個(gè)屬性組成。可記為:C(CNO,CN,CX,CT)(3)“教師授課”表:TC,由教師編號(hào)(TNO)、課程號(hào)(CNO)、教齡(YEAR)3個(gè)屬性組成,這里的教齡是指教授這門課的教齡??捎洖椋篢C(TNO,CNO,YEAR)“教師”表教師編號(hào)TNO姓名TN性別SEX年齡AGE職稱ZC專業(yè)DEPTS1王一民男46教授

計(jì)算機(jī)S5鄒敏女35講師軟件工程S3趙忠秀女40副教授信息技術(shù)S4周彬男24助教計(jì)算機(jī)S6錢良男22助教軟件工程S2劉英女30講師信息技術(shù)“課程”表課程號(hào)CNO課程名CN課程性質(zhì)CX學(xué)分CT

C1數(shù)學(xué)基礎(chǔ)4C6工程訓(xùn)練專業(yè)2C3匯編程序?qū)I(yè)基礎(chǔ)3C4網(wǎng)絡(luò)基礎(chǔ)專業(yè)基礎(chǔ)2C5數(shù)據(jù)結(jié)構(gòu)專業(yè)基礎(chǔ)3C7DB_Design專業(yè)4C2英語(yǔ)基礎(chǔ)6“教師授課”表教師編號(hào)TNO課程號(hào)CNO教齡YEARS1C18S1C26S1C33S4C22S2C24S3C16S3C75S3C44S3C55S2C73S4C52S4C62S2C18S5C22定義“教師”表【例4.1】創(chuàng)建“教師”表T,其中教師編號(hào)是主鍵,姓名、性別和年齡不能為空,性別只能選“男”或“女”,年齡大于18歲。CREATETABLET(TNOCHAR(4)NOTNULL,TNCHAR(8)NOTNULL,SEXCHAR(2)NOTNULLCHECK(SEXIN('男','女')),AGEINTNOTNULLCHECK(AGE>18),ZCCHAR(10),DEPTVARCHAR(12),PRIMARYKEY(TNO))(應(yīng)在實(shí)際環(huán)境中演示)定義“課程”表

【例4.2】建立“課程”表C,課程號(hào)CNO是主鍵,課程名CN和CT不能為空,CT大于1。CREATETABLEC(CNOCHAR(4)NOTNULL,CNVARCHAR(10)NOTNULL,CXCHAR(8),CTINTNOTNULLCHECK(CT>1),PRIMARYKEY(CNO))(應(yīng)在實(shí)際環(huán)境中演示)定義“教師授課”表【例4.3】建立“教師授課”表TC,定義TNO和CNO是外鍵盤同時(shí)又是該表的主鍵,教齡不為空,并且YEAR大于1。

CREATETABLETC(TNOCHAR(4)NOTNULL,CNOCHAR(4)NOTNULL,YEARINTNOTNULLCHECK(YEAR>1),PRIMARYKEY(TNO,CNO),CONSTRAINTTC_TFOREIGNKEY(TNO)REFERENCEST(TNO),CONSTRAINTTC_CFOREIGNKEY(CNO)REFERENCESC(CNO))(應(yīng)在實(shí)際環(huán)境中演示)

修改基本表結(jié)構(gòu)

(1)增加屬性。格式:ALTERTABLE<基本表名>ADD<新屬性名><新屬性類型>【例4.4】在基本表T中增加一個(gè)聯(lián)系電話(TELE)屬性,可用下列語(yǔ)句:

ALTERTABLETADDTELECHAR(13)注意:新增加的屬性不能定義為:NOTNULL,因?yàn)榛颈碓谠黾右粋€(gè)屬性后,原來(lái)所有記錄在新增加的屬性列上的值都被定義為空值(NULL)。(應(yīng)在實(shí)際環(huán)境中演示)修改基本表結(jié)構(gòu)

(2)修正原屬性數(shù)據(jù)類型。格式為:ALTERTABLE<基本表名>ALTERCOLUMN<新屬性名><新屬性類型>【例4.5】將T表中年齡的數(shù)據(jù)類型改為SMALLINT,可用下列語(yǔ)句:

ALTERTABLETALTERCOLUMNAGESMALLINT

修改原有的列定義,會(huì)使列中數(shù)據(jù)類型作新舊自動(dòng)變化,有可能會(huì)破壞已有數(shù)據(jù)。(應(yīng)在實(shí)際環(huán)境中演示)修改基本表結(jié)構(gòu)(3)刪除原有屬性。格式為:ALTERTABLE<基本表名>DROPCOLUMN<屬性名>在基本表中刪除某一屬性時(shí)要注意,引用到該屬性的視圖和約束也會(huì)一起自動(dòng)地被刪除?!纠?.6】在基本表T中刪除TELE屬性,可用下列語(yǔ)句:ALTERTABLETDROPCOLUMNTELE(應(yīng)在實(shí)際環(huán)境中演示)修改基本表結(jié)構(gòu)(4)禁止參照完整性約束。格式為:ALTERTABLE<基本表名>NOCHECKCONSTRAINT<約束名>【例4.7】禁止TC中參照完整性約束TC_T。ALTERTABLETCNOCHECKCONSTRAINTTC_T(應(yīng)在實(shí)際環(huán)境中演示)刪除基本表

刪除基本表命令的一般格式為:DROPTABLE<表名>【例4.8】刪除表T。

DROPTABLET注意:刪除表需要相應(yīng)的操作權(quán)限,一般只刪除自己建立的無(wú)用表,如有用表一定要備份或保存好建立該表的程序。(應(yīng)在實(shí)際環(huán)境中演示)SQL對(duì)索引的創(chuàng)建與刪除

1.索引的概念數(shù)據(jù)庫(kù)中的索引是為了加速對(duì)表中記錄的檢索而創(chuàng)建的一種分散存儲(chǔ)結(jié)構(gòu),是對(duì)表或視圖而建立的。索引建立后,如果改變了表或視圖中數(shù)據(jù),增加或減少記錄,系統(tǒng)會(huì)自動(dòng)更新索引。當(dāng)查詢到索引字段時(shí),系統(tǒng)會(huì)自動(dòng)使用索引進(jìn)行查詢,查詢時(shí)的速度會(huì)比沒(méi)建索引快得多。按照索引記錄存放的位置可以分為聚集索引(ClusteredIndex)與非聚集索引(NonClusteredIndex)兩類。聚集索引是指索引項(xiàng)的順序與表中記錄的物理順序一致的索引組織,檢索記錄的速度快。規(guī)定一個(gè)表中只能有一個(gè)屬性或?qū)傩越M,設(shè)定為聚集索引的字段,這一字段一定是查詢時(shí)用得最頻繁的。非聚集索引也按照索引的字段排列記錄,但是排列的結(jié)果不會(huì)存儲(chǔ)在表中,而是另外存儲(chǔ),因此檢索記錄速度沒(méi)有聚集索引快。SQL對(duì)索引的創(chuàng)建與刪除

2.創(chuàng)建索引創(chuàng)建索引的語(yǔ)句其一般格式可以寫(xiě)成:CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]INDEX<索引名>ON{<表名>|<視圖名>}(<列名>[ASC|DESC][,...n])其中,UNIQUE表明建立唯一索引,CLUSTERED表示建立聚集索引,NONCLUSTERED表示建立非聚集索引。索引可以建在該表或視圖的一列或多列上,各列名之間用逗號(hào)分隔,每個(gè)<列名>后面還可以用<次序>指定索引值的排列次序,包括ASC(升序)和DESC(降序)兩種,缺省值為ASC。SQL對(duì)索引的創(chuàng)建與刪除創(chuàng)建索引舉例:【例4.9】

為teacher中的T、C、TC三個(gè)表建立索引。其中T表按教師編號(hào)升序建唯一索引,C表按課程號(hào)降序建立聚集索引,SNO、CNO表按學(xué)號(hào)升序和課程號(hào)降序建非聚集索引。

CREATEUNIQUEINDEXT_TNOONT(TNO)CREATECLUSTEREDINDEXC_CNOONC(CNODESC)CREATENONCLUSTEREDINDEXTC_TNO_CNOONTC(TNOASC,CNODESC)(應(yīng)在實(shí)際環(huán)境中演示)SQL對(duì)索引的創(chuàng)建與刪除刪除索引刪除索引的一般格式為:DROPINDEX表名.<索引名>∣視圖名.<索引名>[,...n]【例4.10】刪除TC表中TC_TNO_CNO索引。DROPINDEXTC.TC_TNO_CNO值得用戶注意的是索引一旦建立,所在的DBMS系統(tǒng)會(huì)自動(dòng)維護(hù)它,不需用戶關(guān)心,建立索引文件的目的是提高查詢速度,如果所建索引表的數(shù)據(jù)或記錄增減太頻繁,索引數(shù)目又多,每次打開(kāi)表操作,系統(tǒng)會(huì)花費(fèi)大量時(shí)間來(lái)維護(hù)這些索引,反而對(duì)加快查詢操作不利。因此用戶應(yīng)根據(jù)具體情況,對(duì)數(shù)據(jù)庫(kù)表做索引。(應(yīng)在實(shí)際環(huán)境中演示)4.2SQL語(yǔ)言的數(shù)據(jù)查詢查詢是數(shù)據(jù)庫(kù)應(yīng)用的核心內(nèi)容,用戶一定要深刻領(lǐng)會(huì)和熟練掌握它。SQL只提供一條查詢語(yǔ)句——SELECT,但該語(yǔ)句功能豐富,使用方法靈活,可以滿足用戶合理查詢的任何要求。本節(jié)詳細(xì)介紹了利用SELECT語(yǔ)句在各種情況下如何應(yīng)用,并配合大量實(shí)例,初學(xué)者必須上機(jī)練習(xí),并能舉一反三。使用SELECT語(yǔ)句時(shí),用戶不需指明被查詢關(guān)系的路徑,只需要指出關(guān)系名,查詢什么,有何附加條件即可。SELECT既可以在基本表關(guān)系上查詢,也可以在視圖關(guān)系上查詢。SELECT命令的格式SELECT語(yǔ)句的一般格式為:SELECT[ALL|DISTINCT]<目標(biāo)列表達(dá)式>[,<目標(biāo)列表達(dá)式>]...[INTO<新表名>]FROM<表名或視圖名>[,<表名或視圖名>]...[WHERE<條件表達(dá)式>][GROUPBY<列名1>...[HAVING<條件表達(dá)式>]][ORDERBY<列名2>[ASC|DESC]]...SELECT命令的含義查詢語(yǔ)句從功能上分可分為4部分:(1)無(wú)條件的簡(jiǎn)單查詢。使用SELECT和FROM格式(上述命令的前3行或1,3行)。(2)有條件的查詢,使用SELECT、FROM加上WHERE格式(上述命令的前4行或1,3,4行)。(3)如果要按各表中屬性分組查詢,可能要用到上述命令的前5行(或者1,3,4,5行)。(4)如果查詢結(jié)果的記錄要排序,一般情況下,可能要用到上述命令的1,3,4,6行。SELECT語(yǔ)句既可以完成簡(jiǎn)單的單表查詢,也可以完成復(fù)雜的連接查詢或嵌套查詢。單表查詢

1.指定列或列表達(dá)式的查詢2.消除重復(fù)行的查詢3.條件子句的使用4.分組查詢

5.排序查詢注意:所的實(shí)例都應(yīng)在實(shí)際環(huán)境中演示,這方面課件略多表間聯(lián)接和合并查詢

1.等值與非等值聯(lián)接查詢

2.自身聯(lián)接3.外聯(lián)接

4.合并查詢注意:所的實(shí)例都應(yīng)在實(shí)際環(huán)境中演示,這方面課件略嵌套查詢

1.帶有IN謂詞和比較運(yùn)算符的子查詢2.帶有ANY或ALL謂詞的子查詢3.帶有EXISTS謂詞的子查詢對(duì)于EXISTS謂詞的說(shuō)明使用存在量詞EXISTS后,若內(nèi)層檢查非空,則外層的WHERE子句返回真值,否則返回假值。用EXISTS謂詞相反意義的是NOTESISTS。使用謂詞NOTEXISTS后,若內(nèi)層查詢結(jié)果為空,則外層的WHERE子句返回真值,否則返回假值。保存查詢結(jié)果及分步查詢

1.保存查詢的結(jié)果

2.分步查詢4.3SQL語(yǔ)言的數(shù)據(jù)更新與視圖

SQL語(yǔ)言中的數(shù)據(jù)更新命令(包括數(shù)據(jù)插入、修改、刪除、視圖處理等)是數(shù)據(jù)操縱功能中的重要組成部分,是維護(hù)數(shù)據(jù)表中數(shù)據(jù)正確的重要要操作方法,大家應(yīng)該熟練掌握它們。SQL語(yǔ)言的數(shù)據(jù)更新與視圖目錄4.3.1插入數(shù)據(jù)1.插入記錄2.插入子查詢結(jié)果4.3.2修改數(shù)據(jù)

1.修改某一個(gè)記錄的值2.帶子查詢的修改語(yǔ)句4.3.3刪除數(shù)據(jù)

1.刪除表中記錄2.帶子查詢的刪除語(yǔ)句視圖創(chuàng)建、刪除與更新

1.視圖的概念視圖是數(shù)據(jù)庫(kù)系統(tǒng)三級(jí)模式中外模式的主要形式之一,開(kāi)發(fā)數(shù)據(jù)庫(kù)系統(tǒng)程序編寫(xiě)相當(dāng)部分也是根據(jù)視圖來(lái)編寫(xiě)的,因此用戶必須要掌握視圖知識(shí)。視圖是根據(jù)基本表(一至多個(gè)基本表或已有的視圖)導(dǎo)出的關(guān)系。當(dāng)基本表中數(shù)據(jù)變化時(shí),可以從視圖中反映出來(lái),在一定條件下,也可以通過(guò)視圖中數(shù)據(jù)更新來(lái)改變基本表中的數(shù)據(jù)。在創(chuàng)建視圖時(shí),并不存儲(chǔ)視圖中的數(shù)據(jù),而是在用戶使用視圖時(shí)才去顯示對(duì)應(yīng)的數(shù)據(jù),因此視圖被稱為“虛表”。視圖在很多方面與基本表相同,當(dāng)視圖一經(jīng)定義,可以與基本表一樣被查詢、刪除,也可以再定義新的視圖,但對(duì)視圖的更新操作有一定的限制。視圖創(chuàng)建、刪除與更新2.創(chuàng)建視圖SQL語(yǔ)言用CREATEVIEW命令建立視圖,其一般格式為:

CREATEVIEW<視圖名>[(<列名>[,<列名>]...)]AS<子查詢>其中子查詢可以是任意復(fù)雜的SELECT語(yǔ)句,但通常不允許含有ORDERBY子句和DISTINCT短語(yǔ)。創(chuàng)建視圖的注意點(diǎn)如果CREATEVIEW語(yǔ)句僅指定了視圖名,省略了組成視圖的各個(gè)屬性列名,則隱含該視圖由子查詢中SELECT子句目標(biāo)列中的諸字段組成。在以下情況下必須明確指定組成視圖的所有列名。(1)其中某個(gè)目標(biāo)列不是單純的屬性名,而是集函數(shù)或列表達(dá)式。(2)多表連接時(shí)選出了幾個(gè)同名列作為視圖的字段。(3)需要在視圖中為某個(gè)列啟用新的更合適的名字。視圖的刪除和更新3.刪除視圖語(yǔ)句的格式為:DROPVIEW<視圖名>一個(gè)視圖被刪除后,由此視圖導(dǎo)出的其他視圖也將失效,用戶應(yīng)該使用DROPVIEW語(yǔ)句將他們一起刪除。4.更新視圖更新視圖包括插入(INSERT)、刪除(DELETE)和修改(UPDATE)三類操作。更新視圖數(shù)據(jù)的一般要求(1)如果一個(gè)視圖是從多個(gè)基本表使用聯(lián)接操作導(dǎo)出的,則此視圖不允許更新。(2)如果在導(dǎo)出視圖的過(guò)程中,使用了分組和聚合操作,也不允許該視圖更新。(3)若視圖的字段來(lái)自字段表達(dá)式或常量,則不允許對(duì)此視圖執(zhí)行INSERT和UPDATE操作,但可以進(jìn)行DELETE操作。

(4)若視圖定義中含有GROUPBY、DISTINCT短語(yǔ)或嵌套查詢,且內(nèi)層查詢的FROM子句中涉及的表也是導(dǎo)出該視圖的基本表,則此視圖不允許更新。SQL數(shù)據(jù)控制

數(shù)據(jù)庫(kù)中的數(shù)據(jù)由多個(gè)用戶共享,為保證數(shù)據(jù)庫(kù)的安全,SQL語(yǔ)言提供數(shù)據(jù)控制語(yǔ)句(DataControlLanguage,DCL)對(duì)數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一的控制管理。SQL數(shù)據(jù)控制語(yǔ)句有2個(gè)命令動(dòng)詞,一個(gè)是GRANT語(yǔ)句,是系統(tǒng)對(duì)下級(jí)用戶授予權(quán)限;另一個(gè)是REVOKE語(yǔ)句,是系統(tǒng)對(duì)下級(jí)用戶授予權(quán)限后的回收。這些內(nèi)容均在本課程的下續(xù)課程“大型數(shù)據(jù)庫(kù)系統(tǒng)”一書(shū)中詳細(xì)講解,本課程只講解單機(jī)系統(tǒng),在此不作介紹,有興趣的用戶可參考相關(guān)書(shū)籍。本章小結(jié)

1.由于SQL語(yǔ)言具有高度綜合統(tǒng)一、高度非過(guò)程化、面向集合操作模式、包括自含式和嵌入式兩種使用方式、語(yǔ)言易學(xué)易用等5大特點(diǎn),注定要成為標(biāo)準(zhǔn)的、使用廣泛的最重要語(yǔ)言。SQL定義語(yǔ)言包括創(chuàng)建、修改、刪除數(shù)據(jù)庫(kù)表及其數(shù)據(jù)庫(kù)表之間的完整性約束方法,也包括對(duì)數(shù)據(jù)庫(kù)表創(chuàng)建、修改、刪除索引的基本方法。這些內(nèi)容都是重要的實(shí)踐知識(shí),必須牢固掌握。2.Select查詢語(yǔ)句是SQL操縱語(yǔ)言中應(yīng)用最多的語(yǔ)句,應(yīng)該熟練掌握各種查詢數(shù)據(jù)方法,包括利用比較運(yùn)算符、確定范圍、確定集合、字符匹配、空值和多重條件的查詢;分組查詢和排序查詢;多表間的各種聯(lián)接查詢;各種嵌套查詢等內(nèi)容。3.SQL操縱語(yǔ)言另一重要內(nèi)容是對(duì)數(shù)據(jù)庫(kù)表中的數(shù)據(jù)進(jìn)行插入、修改和刪除操作。這些操作方法與視圖的建立、修改、查詢、刪除等知識(shí),都是需要掌握的重要內(nèi)容。習(xí)題一、選擇題1.在SQL語(yǔ)言中,增加或刪除數(shù)據(jù)庫(kù)表中的字段名所使用的命令動(dòng)詞是()。A.a(chǎn)lter和updateB.drop和deleteC.alter和dropD.update和delete2.SQL語(yǔ)言的綜合統(tǒng)一特點(diǎn)是指()。A.能創(chuàng)建、修改和刪除數(shù)據(jù)庫(kù)表,能遵守完整性約束規(guī)則B.能對(duì)數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)表中數(shù)據(jù)進(jìn)行插入、修改和刪除操作,并能創(chuàng)建、修改、查詢和刪除操作C.能對(duì)它的用戶授予或回收各種操作權(quán)限D(zhuǎn).集有DDL、DML和DCL語(yǔ)言于一體3.在嵌入式SQL語(yǔ)言中,使用的某種高級(jí)語(yǔ)言稱為()。A.主體語(yǔ)言B.配合語(yǔ)言C.宿主語(yǔ)言D.不完整4.設(shè)有關(guān)系R=(A1,A2,A3)。與SQL語(yǔ)句SELECTDISTINCTA3FROMRWHEREA2=’S3’等價(jià)的關(guān)系代數(shù)表達(dá)式是________。A.πA3(R)B.σA2=’S3’(R)C.πA3(σA2=’S3’(R))D.σA2=’S3’(πA3(R))5.兩個(gè)子查詢的結(jié)果()時(shí),可以執(zhí)行并、交、差操作。A.結(jié)構(gòu)完全一致B.結(jié)構(gòu)完全不一致C.結(jié)構(gòu)部分一致C.主鍵一致習(xí)題6.在SQL查詢語(yǔ)句中,用于合并查詢的謂詞是()。A.Exists

B.Unique

C.Some

D.All7.使用SQL語(yǔ)句進(jìn)行查詢操作時(shí),若希望查詢出全部存在的元組,一般使用()保留字。A.Unique

B.All

C.Except

D.Distinct8.操作視圖不可能完成的功能是()。A.更新視圖中的數(shù)據(jù)B.查詢視圖中的內(nèi)容C.定義新的基本表D.定義新視圖9.SQL中涉及屬性所學(xué)專業(yè)Dept是否是空值的比較操作,寫(xiě)法()是錯(cuò)誤的。A.Dept=NullB.Not(DeptIsNull)C.DeptIsNullD.DeptIsNotNull10.假定學(xué)生關(guān)系是S(S#,Sname,Sex,Age),課程關(guān)系是C(C#,CName,TEACHER),學(xué)生選課關(guān)系是SC(S#,C#,Grade)。要查找選修“數(shù)據(jù)結(jié)構(gòu)”課程(指Cname字段)“男”學(xué)生學(xué)號(hào),將涉及到關(guān)系()。A.S,CB.SC,CC.S,SCD.S,SC,C習(xí)題二、填空題1.SQL語(yǔ)言集DDL、DML、DCL語(yǔ)言于一體,操作命令CREATE、DROP、ALTER是屬于_________語(yǔ)言。2.SQL語(yǔ)言提供兩種使用方法,它們是________語(yǔ)言和________語(yǔ)言。3.SQL語(yǔ)言中刪除數(shù)據(jù)庫(kù)表使用_____________命令,刪除數(shù)據(jù)庫(kù)表中數(shù)據(jù)使用_____________命令。4.視圖是數(shù)據(jù)庫(kù)系統(tǒng)三級(jí)結(jié)構(gòu)中的外模式的主要形式,它是從______________________導(dǎo)出的表。5.視圖是虛表,它建成后就可以和基本表一樣使用,但________操作將有一定限制。習(xí)題6.SQL的數(shù)據(jù)庫(kù)表創(chuàng)建、修改和刪除命令是指___________、_____________和_____________三個(gè)語(yǔ)句。7.在字符匹配查詢中,是否符合多個(gè)條件常使用的3個(gè)字符是__________、_

、和__________________。8.SQL語(yǔ)句中的數(shù)據(jù)更新語(yǔ)句的命令動(dòng)詞是指__________

__、_______________和_

3個(gè)。9、SQL語(yǔ)言中,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論