第3章關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言SQL課件_第1頁(yè)
第3章關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言SQL課件_第2頁(yè)
第3章關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言SQL課件_第3頁(yè)
第3章關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言SQL課件_第4頁(yè)
第3章關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言SQL課件_第5頁(yè)
已閱讀5頁(yè),還剩47頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第3章關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言SQL

第3章關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言SQL

本章重要概念

(1)SQL數(shù)據(jù)庫(kù)的體系結(jié)構(gòu),SQL的組成。(2)SQL的數(shù)據(jù)定義:SQL模式、基本表和索引的創(chuàng)建和撤銷。(3)SQL的數(shù)據(jù)查詢;SELECT語(yǔ)句的句法,SELECT語(yǔ)句的三種形式及各種限定,基本表的聯(lián)接操作,SQL3中的遞歸查詢。(4)SQL的數(shù)據(jù)更新:插入、刪除和修改語(yǔ)句。(5)視圖的創(chuàng)建和撤銷,對(duì)視圖更新操作的限制。本章重要概念(1)SQL數(shù)據(jù)庫(kù)的體系結(jié)構(gòu),SQL的組成本章概述SQL是關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言,對(duì)關(guān)系模型的發(fā)展和商用DBMS的研制起著重要的作用。SQL語(yǔ)言是介乎于關(guān)系代數(shù)和元組演算之間的一種語(yǔ)言。本章詳細(xì)介紹SQL的核心部分內(nèi)容:數(shù)據(jù)定義、數(shù)據(jù)查詢、數(shù)據(jù)更新和嵌入式SQL。

本章概述SQL是關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言,對(duì)關(guān)系模型的發(fā)展和商用關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言SQL3.1SQL的體系結(jié)構(gòu)

3.2SQL的數(shù)據(jù)定義

3.3SQL的數(shù)據(jù)查詢3.4數(shù)據(jù)更新3.5視圖的定義和對(duì)視圖的操作3.6嵌入式SQL

關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言SQL3.1SQL的體系結(jié)構(gòu)3.1SQL的體系結(jié)構(gòu)

3.1.1SQL的產(chǎn)生與發(fā)展

3.1.2SQL數(shù)據(jù)庫(kù)的體系結(jié)構(gòu)

3.1.3SQL的組成

返回3.1SQL的體系結(jié)構(gòu)3.1.1SQL的產(chǎn)生與發(fā)展SQL的產(chǎn)生與發(fā)展

1970年,美國(guó)IBM研究中心的E.F.Codd連續(xù)發(fā)表多篇論文,提出關(guān)系模型。1972年,IBM公司開始研制實(shí)驗(yàn)型關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)SYSTEMR,配制的查詢語(yǔ)言稱為SQUARE(SpecifyingQueriesAsRelationalExpression)語(yǔ)言,在語(yǔ)言中使用了較多的數(shù)學(xué)符號(hào)。1974年,Boyce和Chamberlin把SQUARE修改為SEQUEL(StructuredEnglishQUEryLanguage)語(yǔ)言。后來(lái)SEQUEL簡(jiǎn)稱為SQL(StructuredQueryLanguage),即“結(jié)構(gòu)式查詢語(yǔ)言”,SQL的發(fā)音仍為“sequel”?,F(xiàn)在SQL已經(jīng)成為一個(gè)標(biāo)準(zhǔn)。SQL的產(chǎn)生與發(fā)展1970年,美國(guó)IBM研究中心的E.F.SQL數(shù)據(jù)庫(kù)的體系結(jié)構(gòu)

用戶1用戶2用戶3用戶4視圖1視圖1基本表1基本表2基本表3基本表4存儲(chǔ)文件1存儲(chǔ)文件2存儲(chǔ)文件3存儲(chǔ)文件4圖3.1SQL數(shù)據(jù)庫(kù)的體系結(jié)構(gòu)SQL用戶ViewBasetableStoredfileSQL數(shù)據(jù)庫(kù)的體系結(jié)構(gòu)用戶1用戶2用戶3用戶4視圖1視圖1SQL的組成

核心SQL主要有四個(gè)部分: (1)數(shù)據(jù)定義語(yǔ)言,即SQLDDL,用于定義SQL模式、基本表、視圖、索引等結(jié)構(gòu)。

(2)數(shù)據(jù)操縱語(yǔ)言,即SQLDML。數(shù)據(jù)操縱分成數(shù)據(jù)查詢和數(shù)據(jù)更新兩類。其中數(shù)據(jù)更新又分成插入、刪除和修改三種操作。

(3)嵌入式SQL語(yǔ)言的使用規(guī)定。這一部分內(nèi)容涉及到SQL語(yǔ)句嵌入在宿主語(yǔ)言程序中的規(guī)則。

(4)數(shù)據(jù)控制語(yǔ)言,即SQLDCL,這一部分包括對(duì)基本表和視圖的授權(quán)、完整性規(guī)則的描述、事務(wù)控制等內(nèi)容。返回SQL的組成核心SQL主要有四個(gè)部分:返回3.2SQL的數(shù)據(jù)定義

3.2.1SQL模式的創(chuàng)建和撤銷

3.2.2基本數(shù)據(jù)類型

3.2.3基本表的創(chuàng)建、修改和撤銷

3.2.4索引的創(chuàng)建和撤銷

返回3.2SQL的數(shù)據(jù)定義3.2.1SQL模式的創(chuàng)建和撤SQL模式的創(chuàng)建和撤銷

SQL模式的創(chuàng)建可用CREATESCHEMA語(yǔ)句定義,其基本句法如下:

CREATESCHEMA〈模式名〉A(chǔ)UTHORIZATION〈用戶名〉DROP語(yǔ)句的句法如下:

DROPSCHEMA〈模式名〉[CASCADE│RESTRICT]其方式有兩種:

CASCADE(級(jí)聯(lián)式)方式。

RESTRICT(約束式)方式。

SQL模式的創(chuàng)建和撤銷SQL模式的創(chuàng)建可用CREATESQLServer2008的schemaSchma也稱為架構(gòu),是形成單個(gè)命名空間的數(shù)據(jù)庫(kù)實(shí)體的集合。命名空間是一個(gè)集合,其中每個(gè)元素的名稱都是唯一的。以往SQLServer內(nèi)的對(duì)象命名是“服務(wù)器.數(shù)據(jù)庫(kù).用戶名.對(duì)象”,但新版的對(duì)象命名改為“服務(wù)器.數(shù)據(jù)庫(kù).Schema.對(duì)象”。完全限定的對(duì)象名稱現(xiàn)在包含四部分:server.database.schema.objectSQLServer2005以后,架構(gòu)獨(dú)立于創(chuàng)建它們的數(shù)據(jù)庫(kù)用戶而存在??梢栽诓桓募軜?gòu)名稱的情況下轉(zhuǎn)讓架構(gòu)的所有權(quán)SQLServer2008的schemaSchma也稱為基本數(shù)據(jù)類型

SQL提供的主要數(shù)據(jù)類型(也稱為“域類型”)有:(1)數(shù)值型(2)字符串型(3)位串型(4)時(shí)間型返回基本數(shù)據(jù)類型SQL提供的主要數(shù)據(jù)類型(也稱為“域類型”)有AnIntroductiontoDatabaseSystemSQLServer支持的數(shù)據(jù)類型數(shù)據(jù)類型含義CHAR(n)長(zhǎng)度為n的定長(zhǎng)字符串VARCHAR(n)最大長(zhǎng)度為n的變長(zhǎng)字符串INT整數(shù)型。精度為10,長(zhǎng)度為4字節(jié)。SMALLINT短整數(shù)。精度為5,長(zhǎng)度為2字節(jié)。NUMERIC(p[,s])精確整數(shù)型,由p位數(shù)字(不包括符號(hào)、小數(shù)點(diǎn))組成,小數(shù)后面有s位數(shù)字,長(zhǎng)度為5-17。REAL,F(xiàn)LOAT(n)浮點(diǎn)型。使用科學(xué)計(jì)數(shù)法表示數(shù)據(jù)。如:5.6432E20DATETIME,SMALLDATETIME日期型,包含年、月、日,長(zhǎng)度分別為8字節(jié),4字節(jié),分別精確到毫秒和分鐘。bit位型。存儲(chǔ)0和1,長(zhǎng)度為1字節(jié)。Binary,varbinary二進(jìn)制型。存儲(chǔ)二進(jìn)制位數(shù)據(jù)流。存儲(chǔ)字節(jié)個(gè)數(shù)0~8000text文本型,存儲(chǔ)大量的字符數(shù)據(jù)。請(qǐng)參見SQLServer實(shí)用教程表2.3(P38),或參見聯(lián)機(jī)幫助。AnIntroductiontoDatabaseSy基本表的創(chuàng)建、修改和撤銷

(1)

基本表的創(chuàng)建

例3.1

基本表SS(S#,SNAME,AGE,SEX)可用下列語(yǔ)句創(chuàng)建:

CREATETABLES (S# CHAR(4)NOTNULL,

SNAMECHAR(8)NOTNULL,

AGE CHAR(1),

SEX CHAR(1), PRIMARYKEY(S#));

基本表的創(chuàng)建、修改和撤銷(1)基本表的創(chuàng)建基本表的創(chuàng)建、修改和撤銷(2)基本表結(jié)構(gòu)的修改增加新的列用“ALTER…ADD…”語(yǔ)句,其句法如下:

ALTERTABLE<基本表名>ADD<列名><類型>刪除原有的列用“ALTER…DROP…”語(yǔ)句,句法如下:

ALTERTABLE<基本表名>DROP<列名>[CASCADE│RESTRICT]此處CASCADE方式表示:在基本表中刪除某列時(shí),所有引用到該列的視圖和約束也要一起自動(dòng)地被刪除。而RESTRICT方式表示在沒有視圖或約束引用該屬性時(shí),才能在基本表中刪除該列,否則拒絕刪除操作。

基本表的創(chuàng)建、修改和撤銷(2)基本表結(jié)構(gòu)的修改基本表的創(chuàng)建、修改和撤銷(3)例3.2在基本表S中增加一個(gè)地址(ADDRESS)列,可用下列語(yǔ)句:

ALTERTABLESADDADDRESSVARCHAR(30); 應(yīng)注意,新增加的列不能定義為“NOTNULL”?;颈碓谠黾右涣泻?,原有元組在新增加的列上的值都被定義為空值(NULL)。例3.3在基本表S中刪除年齡(AGE)列,并且把引用該列的所有視圖和約束也一起刪除,可用下列語(yǔ)句:

ALTERTABLESDROPAGECASCADE;例3.4在基本表S中S#的長(zhǎng)度修改為6,可用下列語(yǔ)句:

ALTERTABLESMODIFYS#CHAR(6);

基本表的創(chuàng)建、修改和撤銷(3)例3.2在基本表S中增加一基本表的創(chuàng)建、修改和撤銷(4)基本表的撤銷撤銷語(yǔ)句的句法如下:

DROPTABLE<基本表名>[CASCADE│RESTRICT]此處的CASCADE、RESTRICT的語(yǔ)義同前面句法中的語(yǔ)義一樣。

返回基本表的創(chuàng)建、修改和撤銷(4)基本表的撤銷返回索引的創(chuàng)建和撤銷

索引的創(chuàng)建 創(chuàng)建索引可用“CREATEINDEX”語(yǔ)句實(shí)現(xiàn)。句法如下:

CREATE[UNIQUE]INDEX<索引名>ON<基本表名>(列名表)索引的撤銷 當(dāng)索引不需要時(shí),可以用“DROPINDEX”語(yǔ)句撤銷,其句法如下:

DROPINDEX<索引名>返回索引的創(chuàng)建和撤銷索引的創(chuàng)建返回3.3SQL的數(shù)據(jù)查詢

3.3.1

SELECT查詢語(yǔ)句

3.3.2

SELECT語(yǔ)句完整的句法

3.3.3

SELECT語(yǔ)句中的限定

3.3.4

基本表的聯(lián)接操作

3.3.5

SQL3中的遞歸查詢

返回3.3SQL的數(shù)據(jù)查詢3.3.1SELECT查詢語(yǔ)句SELECT查詢語(yǔ)句

(1)SELECT—FROM—WHERE句型 在關(guān)系代數(shù)中最常用的式子是下列表達(dá)式:

πA1,…,An(σF(R1×…×Rm))

這里R1、…、Rm為關(guān)系,F(xiàn)是公式,A1、…、An為屬性。 針對(duì)上述表達(dá)式,SQL為此設(shè)計(jì)了SELECT—FROM—WHERE句型:

SELECTA1,…,An FROMR1,…,Rm WHEREF

這個(gè)句型是從關(guān)系代數(shù)表達(dá)式演變來(lái)的,但WHERE子句中的條件表達(dá)式F要比關(guān)系代數(shù)中公式更靈活。SELECT查詢語(yǔ)句(1)SELECT—FROM—WHESELECT語(yǔ)句完整的句法

(1)SELECT語(yǔ)句完整的句法如下:

SELECT目標(biāo)表的列名或列表達(dá)式序列

FROM基本表名和(或)視圖序列

[WHERE行條件表達(dá)式][GROUPBY列名序列

[HAVING組條件表達(dá)式]][ORDERBY列名[ASC|DESC],…]SELECT語(yǔ)句完整的句法(1)SELECT語(yǔ)句完整的句法SELECT語(yǔ)句完整的句法(2)整個(gè)語(yǔ)句的執(zhí)行過程如下:(1)讀取FROM子句中基本表、視圖的數(shù)據(jù),執(zhí)行笛卡爾積操作。(2)選取滿足WHERE子句中給出的條件表達(dá)式的元組。(3)按GROUP子句中指定列的值分組,同時(shí)提取滿足HAVING子句中組條件表達(dá)式的那些組。(4)按SELECT子句中給出的列名或列表達(dá)式求值輸出。(5)ORDER子句對(duì)輸出的目標(biāo)表進(jìn)行排序,按附加說明ASC升序排列,或按DESC降序排列。SELECT語(yǔ)句完整的句法(2)整個(gè)語(yǔ)句的執(zhí)行過程如下:SELECT查詢語(yǔ)句

(2)SELECT句型使用實(shí)例 例3.8教學(xué)數(shù)據(jù)中有三個(gè)基本表(關(guān)系):

S(S#,SNAME,AGE,SEX)

SC(S#,C#,GRADE)

C(C#,CNAME,TEACHER) 下面用SELECT查詢語(yǔ)句表達(dá)每個(gè)查詢。 ①檢索學(xué)習(xí)課程號(hào)為C2的學(xué)生學(xué)號(hào)與成績(jī)。 ②檢索學(xué)習(xí)課程號(hào)為C2的學(xué)生學(xué)號(hào)與姓名。 ③檢索選修課程名為MATHS的學(xué)生學(xué)號(hào)與姓名。④檢索選修課程號(hào)為C2或C4的學(xué)生學(xué)號(hào)。⑤檢索不學(xué)C2課程的學(xué)生學(xué)號(hào)。(6)檢索至少選修課程號(hào)為C2和C4的學(xué)生學(xué)號(hào)。(7)檢索學(xué)習(xí)了全部課程的學(xué)生姓名。SELECT查詢語(yǔ)句(2)SELECT句型使用實(shí)例SELECT查詢語(yǔ)句

(4)

聚合函數(shù)

COUNT(*)計(jì)算元組的個(gè)數(shù)COUNT(列名)對(duì)一列中的值計(jì)算個(gè)數(shù)SUM(列名)求某一列值的總和(此列的值必須是數(shù)值型)AVG(列名)求某一列值的平均值(此列的值必須是數(shù)值型)MAX(列名)求某一列值的最大值MIN(列名)求某一列值的最小值返回SELECT查詢語(yǔ)句(4)

聚合函數(shù)返回SELECT語(yǔ)句完整的句法

(3)例3.11對(duì)教學(xué)數(shù)據(jù)庫(kù)的基本表S、SC、C中數(shù)據(jù)進(jìn)行查詢和計(jì)算。①統(tǒng)計(jì)每一年齡選修課程的學(xué)生人數(shù)

SELECTAGE,COUNT(DISTINCTS.S#)

FROMS,SCWHERES.S#=SC.S#GROUPBYAGE;由于要統(tǒng)計(jì)每一個(gè)年齡的學(xué)生人數(shù),因此要把滿足WHERE子句中條件的查詢結(jié)果按年齡分組,在每一組中的學(xué)生年齡相同。此時(shí)的SELECT子句應(yīng)對(duì)每一組分開進(jìn)行操作,在每一組中,年齡只有一個(gè)值,統(tǒng)計(jì)的人數(shù)是這一組中的學(xué)生人數(shù)。SELECT語(yǔ)句完整的句法(3)例3.11對(duì)教學(xué)數(shù)據(jù)庫(kù)SELECT語(yǔ)句完整的句法

(4)②求基本表S中男同學(xué)的每一年齡組(超過50人)有多少人?要求查詢結(jié)果按人數(shù)升序排列,人數(shù)相同按年齡降序排列。

SELECTAGE,COUNT(S#)

FROMS WHERESEX='M' GROUPBYAGE HAVINGCOUNT(*)>50 ORDERBY2,AGEDESC;返回SELECT語(yǔ)句完整的句法(4)②求基本表S中男同學(xué)的每一SELECT語(yǔ)句中的限定

(1)

SELECT子句中的規(guī)定

SELECT子句描述查詢輸出的表格結(jié)構(gòu),即輸出值的列名或表達(dá)式。其形式如下:

SELECT[ALL|DISTINCT]<列名或列表達(dá)式序列>|*

條件表達(dá)式中的算術(shù)比較操作條件表達(dá)式中可出現(xiàn)算術(shù)比較運(yùn)算符(<,<=,>,>=,=,!=),也可以用“BETWEEN…AND…”比較運(yùn)算符限定一個(gè)值的范圍。列和基本表的改名操作SELECT語(yǔ)句中的限定(1)SELECT子句中的規(guī)定SELECT語(yǔ)句中的限定

(2)字符串的匹配操作 條件表達(dá)式中字符串匹配操作符是“LIKE”。在表達(dá)式中可使用兩個(gè)通配符: 百分號(hào)(%):與零個(gè)或多個(gè)字符組成的字符串匹配。 下劃線(_):與單個(gè)字符匹配。集合的并、交、差操作當(dāng)兩個(gè)子查詢結(jié)果的結(jié)構(gòu)完全一致時(shí),可以讓這兩個(gè)子查詢執(zhí)行并、交、差操作。并、交、差的運(yùn)算符為UNION、INTERSECT和EXCEPT??罩档谋容^操作

SQL中允許列值為空,空值用保留字NULL表示。

SELECT語(yǔ)句中的限定(2)字符串的匹配操作SELECT語(yǔ)句中的限定

(3)集合的比較操作

SQL提供SELECT語(yǔ)句的嵌套子查詢機(jī)制。子查詢是嵌套在另一個(gè)查詢中的SELECT語(yǔ)句。(1)集合成員資格的比較(2)集合成員的算術(shù)比較(3)空關(guān)系的測(cè)試(4)重復(fù)元組的測(cè)試導(dǎo)出表的使用

SQL2允許在FROM子句中使用子查詢。如果在FROM子句中使用了子查詢,那么要給子查詢的結(jié)果起個(gè)表名和相應(yīng)的列名。

返回SELECT語(yǔ)句中的限定(3)集合的比較操作返回基本表的聯(lián)接操作

基本表的聯(lián)接操作基本表的聯(lián)接操作

(例)基本表的聯(lián)接操作(例)3.4數(shù)據(jù)更新

3.4.1數(shù)據(jù)插入

3.4.2

數(shù)據(jù)刪除

3.4.3數(shù)據(jù)修改

返回3.4數(shù)據(jù)更新3.4.1數(shù)據(jù)插入返回?cái)?shù)據(jù)插入

(1)單元組的插入

INSERTINTO基本表名[(列名表)]VALUES(元組值)(2)多元組的插入

INSERTINTO基本表名[(列名表)] VALUES(元組值),(元組值),……,(元組值)(3)查詢結(jié)果的插入

INSERTINTO基本表名[(列名表)]<SELECT查詢語(yǔ)句>這個(gè)語(yǔ)句可把一個(gè)SELECT語(yǔ)句的查詢結(jié)果插到某個(gè)基本表中。(4)表的插入

INSERTINTO基本表名1[(列名表)]TABLE基本表名2

這個(gè)語(yǔ)句可把基本表2的值插入到基本表1中。數(shù)據(jù)插入(1)單元組的插入數(shù)據(jù)刪除

SQL的刪除操作是指從基本表中刪除元組,其句法如下:

DELETEFROM基本表名

[WHERE條件表達(dá)式]

其語(yǔ)義是從基本表中刪除滿足條件表達(dá)式的元組。刪除語(yǔ)句實(shí)際上是“SELECT*FROM基本表名[WHERE條件表達(dá)式]”和DELETE操作的結(jié)合,每找到一個(gè)元組,就把它刪去。應(yīng)該注意,DELETE語(yǔ)句只能從一個(gè)基本表中刪除元組。WHERE子句中條件可以嵌套,也可以是來(lái)自幾個(gè)基本表的復(fù)合條件。數(shù)據(jù)刪除SQL的刪除操作是指從基本表中刪除元組,其句法如下數(shù)據(jù)修改

當(dāng)需要修改基本表中元組的某些列值時(shí),可以用UPDATE語(yǔ)句實(shí)現(xiàn),其句法如下:

UPDATE基本表名

SET列名=值表達(dá)式[,列名=值表達(dá)式…]│ROW=(元組)

[WHERE條件表達(dá)式]

其語(yǔ)義是:修改基本表中滿足條件表達(dá)式的那些元組中的列值,需修改的列值在SET子句中指出。返回?cái)?shù)據(jù)修改當(dāng)需要修改基本表中元組的某些列值時(shí),可以用UPDA3.5視圖的定義和對(duì)視圖的操作

3.5.1視圖的創(chuàng)建和撤銷

3.5.2

對(duì)視圖的更新操作

3.5.3視圖的優(yōu)點(diǎn)

返回3.5視圖的定義和對(duì)視圖的操作3.5.1視圖的創(chuàng)建和視圖的創(chuàng)建和撤銷

(1)視圖的創(chuàng)建創(chuàng)建視圖可用“CREATEVIEW”語(yǔ)句實(shí)現(xiàn)。其句法如下:

CREATEVIEW<視圖名>(列表名)

AS<SELECT查詢語(yǔ)句>

例3.27對(duì)于教學(xué)數(shù)據(jù)庫(kù)中基本表S、SC、C,用戶經(jīng)常要用到S#、SNAME、CNAME和GRADE等列的數(shù)據(jù),那么可用下列語(yǔ)句建立視圖:

CREATEVIEWSTUDENT_GRADE(S#,SNAME,CNAME,GRADE) ASSELECTS.S#,SNAME,CNAME,GRADE FROMS,SC,C WHERES.S#=SC.S#ANDSC.C#=C.C#;視圖的創(chuàng)建和撤銷(1)視圖的創(chuàng)建視圖的創(chuàng)建和撤銷

(2)視圖的撤銷在視圖不需要時(shí),可以用“DROPVIEW”語(yǔ)句把其從系統(tǒng)中撤銷。其句法如下:

DROPVIEW視圖名例3.28撤銷STUDENT_GRADE視圖,可用下列語(yǔ)句實(shí)現(xiàn):

DROPVIEWSTUDENT_GRADE;

視圖的創(chuàng)建和撤銷(2)視圖的撤銷對(duì)視圖的更新操作

(1)定義3.1如果視圖是從單個(gè)基本表只使用選擇、投影操作導(dǎo)出的,并且包含了基本表的主鍵,那么這樣的視圖稱為“行列子集視圖”,并且可以被執(zhí)行更新操作。對(duì)視圖的更新操作(1)定義3.1如果視圖是從單個(gè)基本表對(duì)視圖的更新操作(2)例3.29下面討論對(duì)視圖更新的幾個(gè)例子。①設(shè)有一個(gè)視圖定義

CREATEVIEWSUDENT_GRADE ASSELECTS.S#,SNAME,CNAME,GRADE FROMS,SC,C WHERES.S#=SC.S#ANDSC.C#=C.C#;這個(gè)視圖定義了學(xué)生選修的課程名和成績(jī),是由三個(gè)基本表聯(lián)接而成的。 如果用戶要在視圖中執(zhí)行插入操作: INSERTINTOSTUDENT_GRADE VALUES('S24','WANG','MATHS',80);若在基本表C中,課程名為MATHS的課程號(hào)有多個(gè),則往基本表SC插入元組時(shí),課程號(hào)C#就不定了。因此,對(duì)這個(gè)視圖的更新是不允許的。

對(duì)視圖的更新操作(2)例3.29下面討論對(duì)視圖更新的幾個(gè)例對(duì)視圖的更新操作(3)②設(shè)有一個(gè)視圖定義,包含每個(gè)學(xué)生選修課程(成績(jī)?yōu)榉强眨┑拈T數(shù)和平均成績(jī):

CREATEVIEWS_GRADE(S#,C_NUM,AVG_GRADE)

ASSELECTS#,COUNT(C#),AVG(GRADE)

FROMSC WHEREGRADEISNOTNULL

視圖S_GRADE雖然是從單個(gè)基本表導(dǎo)出,但導(dǎo)出時(shí)使用了分組和聚集操作,因此也是不能更新的。譬如,在未更改基本表SC中值時(shí),要在視圖S_GRADE中更改學(xué)生的平均成績(jī),顯然是不切實(shí)際的。對(duì)視圖的更新操作(3)②設(shè)有一個(gè)視圖定義,包含每個(gè)學(xué)生選修對(duì)視圖的更新操作(4) ③如果定義了一個(gè)有關(guān)男學(xué)生的視圖:

CREATEVIEWS_MALE ASSELECTS#,SNAME,AGE FROMS WHERESEX='M';這個(gè)視圖是從單個(gè)關(guān)系只使用選擇和投影導(dǎo)出的,并且包含鍵S#,因此是可更新的。例如,執(zhí)行插入操作:

INSERTINTOS_MALEVALUES('S28','WU',18);系統(tǒng)自動(dòng)會(huì)把它轉(zhuǎn)變成下列語(yǔ)句:

INSERTINTOS VALUES('S28','WU',18,'M');

返回對(duì)視圖的更新操作(4) ③如果定義了一個(gè)有關(guān)男學(xué)生的視圖:視圖的優(yōu)點(diǎn)

視圖是用戶一級(jí)的數(shù)據(jù)觀點(diǎn),由于有了視圖,使數(shù)據(jù)庫(kù)系統(tǒng)具有下列優(yōu)點(diǎn):(1)視圖提供了邏輯數(shù)據(jù)獨(dú)立性。

(2)簡(jiǎn)化了用戶觀點(diǎn)。數(shù)據(jù)庫(kù)的全部結(jié)構(gòu)是復(fù)雜的,并有多種聯(lián)系。

(3)數(shù)據(jù)的安全保護(hù)功能。

返回視圖的優(yōu)點(diǎn)視圖是用戶一級(jí)的數(shù)據(jù)觀點(diǎn),由于有了視圖,使數(shù)據(jù)數(shù)據(jù)庫(kù)應(yīng)用編程存儲(chǔ)過程ADO.net數(shù)據(jù)庫(kù)應(yīng)用編程存儲(chǔ)過程小結(jié)

SQL是關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言,已廣泛應(yīng)用在商用系統(tǒng)中。SQL的數(shù)據(jù)定義部分包括對(duì)SQL模式、基本表、視圖、索引的創(chuàng)建和撤銷。SQL的數(shù)據(jù)操縱分成數(shù)據(jù)查詢和數(shù)據(jù)更新兩部分。SQL的數(shù)據(jù)查詢是用SELECT語(yǔ)句實(shí)現(xiàn),兼有關(guān)系代數(shù)和元組演算的特點(diǎn)。SQL的數(shù)據(jù)更新包括插入、刪除和修改等三種操作,在視圖中只有行列子集視圖是可以更新的。嵌入式SQL涉及到SQL語(yǔ)句的宿主語(yǔ)言程序中的使用規(guī)定,以解決兩種語(yǔ)言的不一致和相互聯(lián)系的問題。同時(shí)還介紹了動(dòng)態(tài)SQL語(yǔ)句。

小結(jié)SQL是關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言,已廣泛應(yīng)用在商用系統(tǒng)

本章的重點(diǎn)篇幅

(1)教材中P97的例3.8(SELECT語(yǔ)句)。(2)教材中P124的例3.31和的例3.32(嵌入式SQL)。

本章的重點(diǎn)篇幅(1)教材中P97的例3.8(SELEC重要內(nèi)容分析(一)SELECT語(yǔ)句是SQL的核心內(nèi)容,對(duì)于該語(yǔ)句考生應(yīng)掌握下列內(nèi)容。1.SELECT語(yǔ)句的來(lái)歷在關(guān)系代數(shù)中最常用的式子是下列表達(dá)式:

πA1,…,An(σF(R1×…×Rm))

這里R1、…、Rm為關(guān)系,F(xiàn)是公式,A1、…、A

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論