




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、劉安豐劉安豐()1數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用principle and application of database第三章第三章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言sqlsql(續(xù))(續(xù))劉安豐劉安豐()2數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用掌握掌握sql的數(shù)據(jù)更新的數(shù)據(jù)更新掌握掌握sql的視圖使用的視圖使用掌握掌握sql的數(shù)據(jù)控制的數(shù)據(jù)控制劉安豐劉安豐()3數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用插入數(shù)據(jù):插入數(shù)據(jù):有插入單個(gè)元組、插入子查詢結(jié)果兩種方式有插入單個(gè)元組、插入子查詢結(jié)果兩種方式 。插入單個(gè)元組插入單個(gè)元組語(yǔ)句格式:語(yǔ)句格式: insert into
2、 (,) values ( , )功能:功能:將新元組插入指定表中。將新元組插入指定表中。 其中:其中:into子句指定要插入數(shù)據(jù)的表名及屬性列,屬性列的子句指定要插入數(shù)據(jù)的表名及屬性列,屬性列的順序可與表定義中的順序不一致。若沒有指定屬性列,則表順序可與表定義中的順序不一致。若沒有指定屬性列,則表示要插入的是一條完整的元組,且屬性列屬性與表定義中的示要插入的是一條完整的元組,且屬性列屬性與表定義中的順序一致;若指定部分屬性列,則插入的元組在其余屬性列順序一致;若指定部分屬性列,則插入的元組在其余屬性列上取空值。上取空值。values子句提供的值必須與子句提供的值必須與into子句在值的個(gè)子句
3、在值的個(gè)數(shù)和值的類型上匹配數(shù)和值的類型上匹配 。劉安豐劉安豐()4數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用例例1將一個(gè)新學(xué)生記錄將一個(gè)新學(xué)生記錄(95020,陳冬,男,陳冬,男,is,18歲)插入到歲)插入到student表中。表中。 insert into student values (95020,陳冬陳冬,男男,is,18);例例2插入一條選課記錄插入一條選課記錄( 95020,1 )。 insert into sc(sno,cno) values ( 95020 , 1 ); 新插入的記錄在新插入的記錄在grade列上取空值。列上取空值。插入子查詢結(jié)果插入子查詢結(jié)果語(yǔ)句格式語(yǔ)句格式 inser
4、t into ( , ) 子查詢;子查詢;功能:功能:將子查詢結(jié)果插入指定表中。將子查詢結(jié)果插入指定表中。 其中:其中:into、select子句的說(shuō)明與插入單條元組類似。子句的說(shuō)明與插入單條元組類似。劉安豐劉安豐()5數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用例例3對(duì)每一個(gè)系,求學(xué)生的平均年齡,并把結(jié)果存入數(shù)據(jù)庫(kù)。對(duì)每一個(gè)系,求學(xué)生的平均年齡,并把結(jié)果存入數(shù)據(jù)庫(kù)。首先建表:首先建表: create table deptage (sdept char(15) , avgage smallint); /* 定義系名和學(xué)生平均年齡定義系名和學(xué)生平均年齡*/然后插入數(shù)據(jù):然后插入數(shù)據(jù): insert into
5、 deptage(sdept,avgage) select sdept,avg(sage) from student group by sdept;注意點(diǎn):注意點(diǎn):無(wú)論是插入單個(gè)元組,還是插入子查詢結(jié)果,無(wú)論是插入單個(gè)元組,還是插入子查詢結(jié)果, dbms在執(zhí)行插入語(yǔ)句時(shí)會(huì)自動(dòng)檢查所插元組是否破壞表上已定義的在執(zhí)行插入語(yǔ)句時(shí)會(huì)自動(dòng)檢查所插元組是否破壞表上已定義的完整性規(guī)則完整性規(guī)則(實(shí)體完整性、參照完整性、用戶定義的完整性實(shí)體完整性、參照完整性、用戶定義的完整性): 對(duì)于有對(duì)于有not null約束的屬性列是否提供了非空值;約束的屬性列是否提供了非空值; 對(duì)于有對(duì)于有unique約束的屬性列是否
6、提供了非重復(fù)值;約束的屬性列是否提供了非重復(fù)值; 對(duì)于有值域約束的屬性列所提供的屬性值是否在值域范圍內(nèi)。對(duì)于有值域約束的屬性列所提供的屬性值是否在值域范圍內(nèi)。 劉安豐劉安豐()6數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用修改數(shù)據(jù):修改數(shù)據(jù):有修改某一個(gè)元組的值、修改多個(gè)元組的值、帶子有修改某一個(gè)元組的值、修改多個(gè)元組的值、帶子查詢的修改三種方式,查詢的修改三種方式, dbms也會(huì)自動(dòng)檢查三類完整性規(guī)則。也會(huì)自動(dòng)檢查三類完整性規(guī)則。語(yǔ)句格式語(yǔ)句格式 update set =,= where ;功能:功能:修改指定表中滿足修改指定表中滿足where子句條件的元組。子句條件的元組。 其中:其中:set子句指定
7、修改方式、要修改的列和修改后的取值;子句指定修改方式、要修改的列和修改后的取值;where子句指定要修改的元組,缺省表示修改表中所有元組子句指定要修改的元組,缺省表示修改表中所有元組修改某一個(gè)元組的值修改某一個(gè)元組的值例例4將學(xué)生將學(xué)生95001的年齡改為的年齡改為22歲。歲。 update student set sage=22 where sno= 95001 ; 劉安豐劉安豐()7數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用修改多個(gè)元組的值修改多個(gè)元組的值例例5將所有學(xué)生的年齡增加將所有學(xué)生的年齡增加1歲。歲。 update student set sage= sage+1; 將信息系所有學(xué)生的年齡
8、增加將信息系所有學(xué)生的年齡增加1歲。歲。 update student set sage= sage+1 where sdept= is ;帶子查詢的修改語(yǔ)句帶子查詢的修改語(yǔ)句例例6將計(jì)算機(jī)系全體學(xué)生的成績(jī)置零。將計(jì)算機(jī)系全體學(xué)生的成績(jī)置零。 update sc set grade=0 where cs= (selete sdept from student where student.sno = sc.sno);劉安豐劉安豐()8數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用刪除數(shù)據(jù):刪除數(shù)據(jù):有刪除某一個(gè)元組的值、刪除多個(gè)元組的值、帶子有刪除某一個(gè)元組的值、刪除多個(gè)元組的值、帶子查詢的刪除三種方式。查詢
9、的刪除三種方式。dbms在執(zhí)行刪除語(yǔ)句時(shí)會(huì)檢查所刪元在執(zhí)行刪除語(yǔ)句時(shí)會(huì)檢查所刪元組是否破壞表上已定義的參照完整性規(guī)則組是否破壞表上已定義的參照完整性規(guī)則(不允許刪除或級(jí)聯(lián)不允許刪除或級(jí)聯(lián)刪除刪除)。語(yǔ)句格式:語(yǔ)句格式:delete from where ;功能:功能:刪除指定表中滿足刪除指定表中滿足where子句條件的元組。子句條件的元組。 其中:其中:where子句指定要?jiǎng)h除的元組,缺省表示要修改表中子句指定要?jiǎng)h除的元組,缺省表示要修改表中的所有元組。的所有元組。刪除某一個(gè)元組的值刪除某一個(gè)元組的值例例7刪除學(xué)號(hào)為刪除學(xué)號(hào)為95019的學(xué)生記錄。的學(xué)生記錄。 delete from stud
10、ent where sno=95019;劉安豐劉安豐()9數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用刪除多個(gè)元組的值刪除多個(gè)元組的值例例8刪除所有的學(xué)生選課記錄。刪除所有的學(xué)生選課記錄。 delete from sc;帶子查詢的刪除帶子查詢的刪除例例9刪除計(jì)算機(jī)系所有學(xué)生的選課記錄。刪除計(jì)算機(jī)系所有學(xué)生的選課記錄。 delete from sc where cs= (selete sdept from student where student.sno=sc.sno);數(shù)據(jù)更新與數(shù)據(jù)一致性:數(shù)據(jù)更新與數(shù)據(jù)一致性:dbms在執(zhí)行插入、刪除、更新語(yǔ)句在執(zhí)行插入、刪除、更新語(yǔ)句時(shí)必須保證數(shù)據(jù)庫(kù)一致性:即必須有
11、事務(wù)的概念和原子性、必時(shí)必須保證數(shù)據(jù)庫(kù)一致性:即必須有事務(wù)的概念和原子性、必須有完整性檢查和保證。須有完整性檢查和保證。劉安豐劉安豐()10數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用視圖的特點(diǎn)視圖的特點(diǎn)視圖是視圖是rdbms提供給用戶以多種角度觀察數(shù)據(jù)庫(kù)中數(shù)據(jù)的重提供給用戶以多種角度觀察數(shù)據(jù)庫(kù)中數(shù)據(jù)的重要機(jī)制。要機(jī)制。虛表,是從一個(gè)或幾個(gè)基本表虛表,是從一個(gè)或幾個(gè)基本表(或視圖或視圖)導(dǎo)出的表。導(dǎo)出的表。只存放視圖的定義,不會(huì)出現(xiàn)數(shù)據(jù)冗余。只存放視圖的定義,不會(huì)出現(xiàn)數(shù)據(jù)冗余?;碇械臄?shù)據(jù)發(fā)生變化,從視圖中查詢出的數(shù)據(jù)也隨之改變?;碇械臄?shù)據(jù)發(fā)生變化,從視圖中查詢出的數(shù)據(jù)也隨之改變?;谝晥D的內(nèi)容:基于視
12、圖的內(nèi)容:定義視圖定義視圖查詢視圖查詢視圖更新視圖更新視圖視圖的作用視圖的作用劉安豐劉安豐()11數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用定義視圖定義視圖建立視圖建立視圖語(yǔ)句格式:語(yǔ)句格式:create view ( ,) as with check option;功能:功能:dbms將視圖的定義存入數(shù)據(jù)字典,并不執(zhí)行其中的將視圖的定義存入數(shù)據(jù)字典,并不執(zhí)行其中的select語(yǔ)句,查詢視圖時(shí),按其定義從基本表中將數(shù)據(jù)查出語(yǔ)句,查詢視圖時(shí),按其定義從基本表中將數(shù)據(jù)查出說(shuō)明:說(shuō)明:組成視圖的屬性列名或全部省略或全部指定。若全部省組成視圖的屬性列名或全部省略或全部指定。若全部省略,則該視圖由子查詢中略,則該
13、視圖由子查詢中select目標(biāo)列中的諸字段組成;但目標(biāo)列中的諸字段組成;但下述三種情況必須明確指定組成視圖的所有列名:某個(gè)目標(biāo)列下述三種情況必須明確指定組成視圖的所有列名:某個(gè)目標(biāo)列是集函數(shù)或列表達(dá)式、多表連接時(shí)選出了幾個(gè)同名列作為視圖是集函數(shù)或列表達(dá)式、多表連接時(shí)選出了幾個(gè)同名列作為視圖的字段、需要在視圖中為某個(gè)列啟用新的更合適的名字。的字段、需要在視圖中為某個(gè)列啟用新的更合適的名字。劉安豐劉安豐()12數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用常見的視圖形式常見的視圖形式行列子集視圖行列子集視圖with check option的視圖的視圖基于多個(gè)基表的視圖基于多個(gè)基表的視圖基于視圖的視圖基于視圖的
14、視圖帶表達(dá)式的視圖帶表達(dá)式的視圖分組視圖分組視圖一類不易擴(kuò)充的視圖一類不易擴(kuò)充的視圖劉安豐劉安豐()13數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用行列子集視圖:行列子集視圖:從單個(gè)基本表導(dǎo)出,建立的視圖只是去掉了基從單個(gè)基本表導(dǎo)出,建立的視圖只是去掉了基本表的某些行和某些列,但保留了碼。本表的某些行和某些列,但保留了碼。例例1建立信息系學(xué)生的視圖。建立信息系學(xué)生的視圖。 create view is_student as select sno,sname,sage from student where sdept= is;with check option視圖:視圖:表示對(duì)視圖進(jìn)行增刪改操作時(shí)表示對(duì)視圖
15、進(jìn)行增刪改操作時(shí)不得破壞視圖定義中的謂詞條件不得破壞視圖定義中的謂詞條件(即子查詢中的條件表達(dá)式即子查詢中的條件表達(dá)式)。例例2建立信息系學(xué)生的視圖,并要求透過(guò)該視圖進(jìn)行的更新操作建立信息系學(xué)生的視圖,并要求透過(guò)該視圖進(jìn)行的更新操作只涉及信息系學(xué)生。只涉及信息系學(xué)生。 create view is_student as select sno,sname,sage from student where sdept= is with check option;劉安豐劉安豐()14數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 對(duì)對(duì)is_student視圖的更新操作:視圖的更新操作: 修改操作:修改操作:dbms
16、自動(dòng)加上自動(dòng)加上sdept= is的條件。的條件。 刪除操作:刪除操作:dbms自動(dòng)加上自動(dòng)加上sdept= is的條件。的條件。 插入操作:插入操作:dbms會(huì)自動(dòng)檢查會(huì)自動(dòng)檢查sdept屬性值是否為屬性值是否為is ,如果不是,則拒,如果不是,則拒絕該插入操作;如果沒有提供絕該插入操作;如果沒有提供sdept屬性值,則自動(dòng)定義屬性值,則自動(dòng)定義sdept為為is?;诙鄠€(gè)基表的視圖基于多個(gè)基表的視圖例例3建立信息系選修了建立信息系選修了1號(hào)課程的學(xué)生視圖。號(hào)課程的學(xué)生視圖。 create view is_s1(sno,sname,grade) as select student.sno,s
17、name,grade from student,sc where sdept= is and student.sno=sc.sno and sc.cno= 1;劉安豐劉安豐()15數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用基于視圖的視圖:視圖可建立在一個(gè)或多個(gè)已定義的視圖上。基于視圖的視圖:視圖可建立在一個(gè)或多個(gè)已定義的視圖上。例例4建立信息系選修了建立信息系選修了1號(hào)課程且成績(jī)?cè)谔?hào)課程且成績(jī)?cè)?0分以上的學(xué)生視圖。分以上的學(xué)生視圖。 create view is_s2 as select sno,sname,grade from is_s1 where grade=90;帶表達(dá)式的視圖:必須明確定義組
18、成視圖的各個(gè)屬性列名。帶表達(dá)式的視圖:必須明確定義組成視圖的各個(gè)屬性列名。例例5定義一個(gè)反映學(xué)生出生年份的視圖。定義一個(gè)反映學(xué)生出生年份的視圖。 create view bt_s(sno,sname,sbirth) as select sno,sname,2005-sage from student; 由于視圖中的數(shù)據(jù)并不實(shí)際存儲(chǔ),所以可根據(jù)需要設(shè)置一些派生屬性列由于視圖中的數(shù)據(jù)并不實(shí)際存儲(chǔ),所以可根據(jù)需要設(shè)置一些派生屬性列(也也稱虛擬列稱虛擬列),如本例中的,如本例中的sbirth 。劉安豐劉安豐()16數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用分組視圖:帶有集函數(shù)和分組視圖:帶有集函數(shù)和group
19、by子句查詢的視圖。子句查詢的視圖。例例6將學(xué)生的學(xué)號(hào)及他的平均成績(jī)定義為一個(gè)視圖。將學(xué)生的學(xué)號(hào)及他的平均成績(jī)定義為一個(gè)視圖。 creat view s_g(sno,gavg) as select sno,avg(grade) from sc group by sno;一類不易擴(kuò)充的視圖:一類不易擴(kuò)充的視圖:以以 select * 方式創(chuàng)建的視圖,其可擴(kuò)方式創(chuàng)建的視圖,其可擴(kuò)充性差,應(yīng)盡可能避免。充性差,應(yīng)盡可能避免。例例7將將student表中所有女生記錄定義為一個(gè)視圖。表中所有女生記錄定義為一個(gè)視圖。 create view f_student1(stdnum,name,sex,age,d
20、ept) as select * from student where ssex=女女; 缺點(diǎn):缺點(diǎn):修改基表修改基表student的結(jié)構(gòu)后,的結(jié)構(gòu)后,student表與表與f_student1視圖的映象關(guān)系被破壞,導(dǎo)致該視圖不能正確工作。視圖的映象關(guān)系被破壞,導(dǎo)致該視圖不能正確工作。劉安豐劉安豐()17數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 解決方法:為基表解決方法:為基表student增加屬性列不會(huì)破壞增加屬性列不會(huì)破壞student基表基表與與f_student2視圖的映象關(guān)系。視圖的映象關(guān)系。 create view f_student2 (stdnum,name,sex,age,dept)
21、 as select sno,sname,ssex,sage,sdept from student where ssex=女女;刪除視圖刪除視圖語(yǔ)句格式:語(yǔ)句格式:drop view ;功能:功能:從數(shù)據(jù)字典中刪除指定的視圖定義。視圖刪除后,由該從數(shù)據(jù)字典中刪除指定的視圖定義。視圖刪除后,由該視圖導(dǎo)出的其他視圖定義仍在數(shù)據(jù)字典中,但這些視圖已不能視圖導(dǎo)出的其他視圖定義仍在數(shù)據(jù)字典中,但這些視圖已不能使用,必須使用使用,必須使用drop view顯式刪除。基表刪除后,由該基顯式刪除?;韯h除后,由該基表導(dǎo)出的所有視圖定義沒有被刪除,但卻無(wú)法使用,必須使用表導(dǎo)出的所有視圖定義沒有被刪除,但卻無(wú)法使
22、用,必須使用drop view顯式刪除。顯式刪除。 例例88刪除視圖刪除視圖is_s1。 drop view is_s1;劉安豐劉安豐()18數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用查詢視圖:查詢視圖:視圖定義后,用戶可以象對(duì)基本表一樣對(duì)視圖進(jìn)行視圖定義后,用戶可以象對(duì)基本表一樣對(duì)視圖進(jìn)行查詢。查詢。dbms實(shí)現(xiàn)視圖查詢時(shí),首先進(jìn)行有效性檢查,檢查所實(shí)現(xiàn)視圖查詢時(shí),首先進(jìn)行有效性檢查,檢查所查詢的表、視圖是否存在。若存在,則從數(shù)據(jù)字典中取出視圖查詢的表、視圖是否存在。若存在,則從數(shù)據(jù)字典中取出視圖的定義,把定義中的子查詢和用戶的查詢結(jié)合起來(lái),轉(zhuǎn)換成等的定義,把定義中的子查詢和用戶的查詢結(jié)合起來(lái),轉(zhuǎn)換成
23、等價(jià)的對(duì)基本表的查詢,然后再執(zhí)行修正了的查詢。這一轉(zhuǎn)換過(guò)價(jià)的對(duì)基本表的查詢,然后再執(zhí)行修正了的查詢。這一轉(zhuǎn)換過(guò)程稱為視圖消解程稱為視圖消解(view resolution)。劉安豐劉安豐()19數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用例例1在信息系學(xué)生的視圖中找出年齡小于在信息系學(xué)生的視圖中找出年齡小于20歲的。歲的。 select sno,sage from is_student where sage20;is_student視圖的定義視圖的定義 (視圖定義例視圖定義例1)為:為: create view is_student as select sno,sname,sage from studen
24、t where sdept= is; 采用視圖消解法轉(zhuǎn)換后的查詢語(yǔ)句為:采用視圖消解法轉(zhuǎn)換后的查詢語(yǔ)句為: select sno,sage from student where sdept= is and sage=90=90分的學(xué)生學(xué)號(hào)和平均成績(jī)。分的學(xué)生學(xué)號(hào)和平均成績(jī)。 select * from s_g where gavg=90; s_g視圖定義如下:視圖定義如下: create view s_g (sno,gavg) as select sno,avg(grade) from sc group by sno; 錯(cuò)誤的轉(zhuǎn)換:錯(cuò)誤的轉(zhuǎn)換: select sno,avg(grade) fr
25、om sc where avg(grade)=90 group by sno; 正確的轉(zhuǎn)換:正確的轉(zhuǎn)換:select sno,avg(grade) from sc group by sno having avg(grade)=90;劉安豐劉安豐()21數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用更新視圖:更新視圖:通過(guò)視圖實(shí)現(xiàn)插入、刪除和修改數(shù)據(jù)。由于視圖是通過(guò)視圖實(shí)現(xiàn)插入、刪除和修改數(shù)據(jù)。由于視圖是不實(shí)際存儲(chǔ)數(shù)據(jù)的虛表,因此對(duì)視圖的更新最終要轉(zhuǎn)換為對(duì)基不實(shí)際存儲(chǔ)數(shù)據(jù)的虛表,因此對(duì)視圖的更新最終要轉(zhuǎn)換為對(duì)基本表的更新。本表的更新。 dbms實(shí)現(xiàn)對(duì)視圖的更新也是采用視圖消解法。實(shí)現(xiàn)對(duì)視圖的更新也是采用視圖消
26、解法。用戶指定用戶指定with check option子句后,子句后,dbms在更新視圖時(shí)在更新視圖時(shí)會(huì)進(jìn)行檢查,防止用戶通過(guò)視圖對(duì)不屬于視圖范圍內(nèi)的基本表會(huì)進(jìn)行檢查,防止用戶通過(guò)視圖對(duì)不屬于視圖范圍內(nèi)的基本表數(shù)據(jù)進(jìn)行更新。數(shù)據(jù)進(jìn)行更新。例例1將視圖將視圖is_student中學(xué)號(hào)中學(xué)號(hào)95002的學(xué)生姓名改為劉辰。的學(xué)生姓名改為劉辰。 update is_student set sname= 劉辰劉辰 where sno= 95002; 轉(zhuǎn)換后的語(yǔ)句:轉(zhuǎn)換后的語(yǔ)句:update student set sname= 劉辰劉辰 where sno= 95002 and sdept= is;劉
27、安豐劉安豐()22數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用例例2向信息系學(xué)生視圖向信息系學(xué)生視圖is_s中插入一個(gè)新的學(xué)生記錄:中插入一個(gè)新的學(xué)生記錄:95029,趙新,趙新,20歲。歲。 insert into is_student values(95029,趙新趙新,20); 轉(zhuǎn)換為對(duì)基本表的更新:轉(zhuǎn)換為對(duì)基本表的更新: insert into student(sno,sname,sage,sdept) values(95029,趙新趙新,20,is );例例3刪除視圖刪除視圖cs_s中學(xué)號(hào)為中學(xué)號(hào)為95029的記錄。的記錄。 delete from is_student where sno= 9
28、5029; 轉(zhuǎn)換為對(duì)基本表的更新:轉(zhuǎn)換為對(duì)基本表的更新: delete from student where sno= 95029 and sdept= is;劉安豐劉安豐()23數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用更新視圖的限制:更新視圖的限制:一些視圖是不可更新的,因?yàn)閷?duì)這些視圖的一些視圖是不可更新的,因?yàn)閷?duì)這些視圖的更新不能唯一地有意義地轉(zhuǎn)換成對(duì)相應(yīng)基本表的更新。更新不能唯一地有意義地轉(zhuǎn)換成對(duì)相應(yīng)基本表的更新。 例視圖例視圖s_g為不可更新視圖:為不可更新視圖: create view s_g (sno,gavg) as select sno,avg(grade) from sc group
29、 by sno; 對(duì)于如下更新語(yǔ)句用消解法無(wú)法將其轉(zhuǎn)換成對(duì)基本表對(duì)于如下更新語(yǔ)句用消解法無(wú)法將其轉(zhuǎn)換成對(duì)基本表sc的更新的更新 update s_g set gavg=90 where sno= 95001;實(shí)際系統(tǒng)對(duì)視圖更新的限制實(shí)際系統(tǒng)對(duì)視圖更新的限制允許對(duì)行列子集視圖進(jìn)行更新。允許對(duì)行列子集視圖進(jìn)行更新。對(duì)其他類型視圖的更新不同對(duì)其他類型視圖的更新不同dbmsdbms有不同的限制。有不同的限制。劉安豐劉安豐()24數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用一般一般dbms對(duì)視圖更新的限制:對(duì)視圖更新的限制:若視圖是由兩個(gè)以上基本表導(dǎo)出的,則此視圖不允許更新。若視圖是由兩個(gè)以上基本表導(dǎo)出的,則此視圖
30、不允許更新。若視圖的字段來(lái)自字段表達(dá)式或常數(shù),則不允許對(duì)此視圖執(zhí)行若視圖的字段來(lái)自字段表達(dá)式或常數(shù),則不允許對(duì)此視圖執(zhí)行insert和和update操作,但允許執(zhí)行操作,但允許執(zhí)行delete操作。操作。若視圖的字段來(lái)自集函數(shù),則此視圖不允許更新。若視圖的字段來(lái)自集函數(shù),則此視圖不允許更新。若視圖定義中含有若視圖定義中含有g(shù)roup by子句,則此視圖不允許更新。子句,則此視圖不允許更新。若視圖定義中含有若視圖定義中含有distinct短語(yǔ),則此視圖不允許更新。短語(yǔ),則此視圖不允許更新。一個(gè)不允許更新的視圖上定義的視圖也不允許更新。一個(gè)不允許更新的視圖上定義的視圖也不允許更新。若視圖定義中有嵌
31、套查詢,并且內(nèi)層查詢的若視圖定義中有嵌套查詢,并且內(nèi)層查詢的from子句中涉及子句中涉及的表也是導(dǎo)出該視圖的基本表,則此視圖不允許更新。的表也是導(dǎo)出該視圖的基本表,則此視圖不允許更新。劉安豐劉安豐()25數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用例將例將sc中成績(jī)?cè)谄骄煽?jī)之上的元組定義成一個(gè)視圖中成績(jī)?cè)谄骄煽?jī)之上的元組定義成一個(gè)視圖good_sc: create view good_sc as select sno,cno,grade from sc where grade (select avg(grade) from sc); 由于導(dǎo)出視圖由于導(dǎo)出視圖good_sc的基本表是的基本表是sc,內(nèi)層
32、查詢中涉及的,內(nèi)層查詢中涉及的表也是表也是sc,所以視圖,所以視圖good_sc是不允許更新的。是不允許更新的。視圖的作用視圖的作用能夠簡(jiǎn)化用戶的操作:能夠簡(jiǎn)化用戶的操作:當(dāng)視圖中數(shù)據(jù)不是直接來(lái)自基本表時(shí),當(dāng)視圖中數(shù)據(jù)不是直接來(lái)自基本表時(shí),如基于多張表連接形成的視圖、基于復(fù)雜嵌套查詢的視圖、含如基于多張表連接形成的視圖、基于復(fù)雜嵌套查詢的視圖、含導(dǎo)出屬性的視圖等,定義視圖能夠簡(jiǎn)化用戶的操作。導(dǎo)出屬性的視圖等,定義視圖能夠簡(jiǎn)化用戶的操作。使用戶能以多種角度看待同一數(shù)據(jù):使用戶能以多種角度看待同一數(shù)據(jù):視圖機(jī)制能使不同用戶以視圖機(jī)制能使不同用戶以不同方式看待同一數(shù)據(jù),適應(yīng)數(shù)據(jù)庫(kù)共享的需要。不同方式
33、看待同一數(shù)據(jù),適應(yīng)數(shù)據(jù)庫(kù)共享的需要。劉安豐劉安豐()26數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用對(duì)重構(gòu)數(shù)據(jù)庫(kù)提供了一定程度的邏輯獨(dú)立性:對(duì)重構(gòu)數(shù)據(jù)庫(kù)提供了一定程度的邏輯獨(dú)立性:關(guān)系數(shù)據(jù)庫(kù)中數(shù)關(guān)系數(shù)據(jù)庫(kù)中數(shù)據(jù)庫(kù)的重構(gòu)往往是不可避免的,重構(gòu)數(shù)據(jù)庫(kù)最常見的是將一個(gè)據(jù)庫(kù)的重構(gòu)往往是不可避免的,重構(gòu)數(shù)據(jù)庫(kù)最常見的是將一個(gè)基本表垂直地分成多個(gè)基本表?;颈泶怪钡胤殖啥鄠€(gè)基本表。 例如,將學(xué)生關(guān)系例如,將學(xué)生關(guān)系student(sno,sname,ssex,sage,sdept) 垂直地分成垂直地分成sx(sno,sname,sage)和和sy(sno,ssex,sdept)兩兩個(gè)關(guān)系,這時(shí)原表個(gè)關(guān)系,這時(shí)原表st
34、udent為為sx表和表和sy表自然連接的結(jié)果。表自然連接的結(jié)果??梢越⒁粋€(gè)視圖可以建立一個(gè)視圖student: create view student(sno,sname,ssex,sage,sdept) as select sx.sno,sx.sname,sy.ssex,sx.sage,sy.sdept from sx,sywhere sx.sno=sy.sno; 這樣,盡管數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)改變了,但應(yīng)用程序不必修改,這樣,盡管數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)改變了,但應(yīng)用程序不必修改,因?yàn)樾陆⒌囊晥D定義了用戶原來(lái)的關(guān)系,使用戶的外模式保因?yàn)樾陆⒌囊晥D定義了用戶原來(lái)的關(guān)系,使用戶的外模式保持不變,用
35、戶的應(yīng)用程序通過(guò)視圖仍然能夠查找數(shù)據(jù)。持不變,用戶的應(yīng)用程序通過(guò)視圖仍然能夠查找數(shù)據(jù)。劉安豐劉安豐()27數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用能夠?qū)C(jī)密數(shù)據(jù)提供安全保護(hù):能夠?qū)C(jī)密數(shù)據(jù)提供安全保護(hù):對(duì)不同用戶定義不同視圖,使對(duì)不同用戶定義不同視圖,使每個(gè)用戶只能看到他有權(quán)看到的數(shù)據(jù)。通過(guò)每個(gè)用戶只能看到他有權(quán)看到的數(shù)據(jù)。通過(guò)with check option可以對(duì)關(guān)鍵數(shù)據(jù)定義操作時(shí)間限制??梢詫?duì)關(guān)鍵數(shù)據(jù)定義操作時(shí)間限制。 例建立例建立1號(hào)課程的選課視圖,并要求透過(guò)該視圖進(jìn)行的更新操號(hào)課程的選課視圖,并要求透過(guò)該視圖進(jìn)行的更新操作只涉及作只涉及1號(hào)課程,同時(shí)對(duì)該視圖的任何操作只能在工作時(shí)間號(hào)課程,同
36、時(shí)對(duì)該視圖的任何操作只能在工作時(shí)間進(jìn)行。進(jìn)行。 create view is_sc as select sno,cno,grade from sc where cno= 1 and to_char(sysdate,hh24) between 9 and 17 and to_char(sysdate,d) between 2 and 6 with check option;劉安豐劉安豐()28數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用概述:概述:由由dbms提供統(tǒng)一的數(shù)據(jù)控制功能是提供統(tǒng)一的數(shù)據(jù)控制功能是dbs的特點(diǎn)之一。的特點(diǎn)之一。數(shù)據(jù)控制的概念:數(shù)據(jù)控制的概念:又稱數(shù)據(jù)保護(hù),包括數(shù)據(jù)的安全性控制、完又
37、稱數(shù)據(jù)保護(hù),包括數(shù)據(jù)的安全性控制、完整性控制、并發(fā)控制、恢復(fù)。整性控制、并發(fā)控制、恢復(fù)。sql語(yǔ)言的數(shù)據(jù)控制功能:語(yǔ)言的數(shù)據(jù)控制功能:sqlsql語(yǔ)言提供了數(shù)據(jù)控制功能,能語(yǔ)言提供了數(shù)據(jù)控制功能,能夠在一定程度上保證數(shù)據(jù)庫(kù)中數(shù)據(jù)的完全性、完整性,并提供夠在一定程度上保證數(shù)據(jù)庫(kù)中數(shù)據(jù)的完全性、完整性,并提供了一定的并發(fā)控制及恢復(fù)能力。了一定的并發(fā)控制及恢復(fù)能力。完整性:完整性:指數(shù)據(jù)庫(kù)中數(shù)據(jù)的正確性與相容性。指數(shù)據(jù)庫(kù)中數(shù)據(jù)的正確性與相容性。sql語(yǔ)言定義完語(yǔ)言定義完整性約束條件的功能主要體現(xiàn)在整性約束條件的功能主要體現(xiàn)在create table和和alter table語(yǔ)句中,可以在這些語(yǔ)句中定
38、義碼、取值唯一的列、語(yǔ)句中,可以在這些語(yǔ)句中定義碼、取值唯一的列、不允許空值的列、外碼不允許空值的列、外碼(參照完整性參照完整性)及其他約束條件。及其他約束條件。并發(fā)控制:并發(fā)控制:當(dāng)多個(gè)用戶并發(fā)地對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作時(shí),對(duì)他們加當(dāng)多個(gè)用戶并發(fā)地對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作時(shí),對(duì)他們加以控制、協(xié)調(diào),以保證并發(fā)操作的正確執(zhí)行和數(shù)據(jù)庫(kù)的一致性以控制、協(xié)調(diào),以保證并發(fā)操作的正確執(zhí)行和數(shù)據(jù)庫(kù)的一致性。sql語(yǔ)言并發(fā)控制的功能主要體現(xiàn)在支持事務(wù)、事務(wù)開始、語(yǔ)言并發(fā)控制的功能主要體現(xiàn)在支持事務(wù)、事務(wù)開始、事務(wù)結(jié)束、事務(wù)提交等概念。事務(wù)結(jié)束、事務(wù)提交等概念。劉安豐劉安豐()29數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用恢復(fù):恢復(fù):當(dāng)
39、發(fā)生各種類型的故障導(dǎo)致數(shù)據(jù)庫(kù)處于不一致狀態(tài)時(shí),當(dāng)發(fā)生各種類型的故障導(dǎo)致數(shù)據(jù)庫(kù)處于不一致狀態(tài)時(shí),將數(shù)據(jù)庫(kù)恢復(fù)到一致狀態(tài)的功能。將數(shù)據(jù)庫(kù)恢復(fù)到一致狀態(tài)的功能。sql語(yǔ)言恢復(fù)的功能主要體語(yǔ)言恢復(fù)的功能主要體現(xiàn)在提供事務(wù)回滾現(xiàn)在提供事務(wù)回滾undo 、重做、重做redo等概念。等概念。安全性安全性( (本節(jié)主要討論本節(jié)主要討論) ):保護(hù)數(shù)據(jù)庫(kù),防止不合法的使用所造保護(hù)數(shù)據(jù)庫(kù),防止不合法的使用所造成的數(shù)據(jù)泄露和破壞。保證數(shù)據(jù)安全性的主要措施是存取控制成的數(shù)據(jù)泄露和破壞。保證數(shù)據(jù)安全性的主要措施是存取控制,控制用戶只能存取他有權(quán)存取的數(shù)據(jù)規(guī)定不同用戶對(duì)于不同,控制用戶只能存取他有權(quán)存取的數(shù)據(jù)規(guī)定不同用戶
40、對(duì)于不同數(shù)據(jù)對(duì)象所允許執(zhí)行的操作。數(shù)據(jù)對(duì)象所允許執(zhí)行的操作。 dbms實(shí)現(xiàn)數(shù)據(jù)安全性保護(hù)的過(guò)程:實(shí)現(xiàn)數(shù)據(jù)安全性保護(hù)的過(guò)程:用戶或用戶或dba把授權(quán)決定告知系統(tǒng),這是由把授權(quán)決定告知系統(tǒng),這是由sql的的grant和和revoke語(yǔ)句來(lái)完成的。語(yǔ)句來(lái)完成的。dbms把授權(quán)的結(jié)果存入數(shù)據(jù)字典。把授權(quán)的結(jié)果存入數(shù)據(jù)字典。當(dāng)用戶提出操作請(qǐng)求時(shí),當(dāng)用戶提出操作請(qǐng)求時(shí),dbms根據(jù)授權(quán)定義進(jìn)行檢查,以決根據(jù)授權(quán)定義進(jìn)行檢查,以決定是否執(zhí)行操作請(qǐng)求。定是否執(zhí)行操作請(qǐng)求。劉安豐劉安豐()30數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用授權(quán):授權(quán):sql語(yǔ)言用語(yǔ)言用drant語(yǔ)句向用戶授予操作權(quán)限。語(yǔ)句向用戶授予操作權(quán)限。
41、一般格式:一般格式: grant grant , on on to to , with grant option;with grant option;功能:功能:將對(duì)指定操作對(duì)象的指定操作權(quán)限授予指定的用戶。將對(duì)指定操作對(duì)象的指定操作權(quán)限授予指定的用戶。說(shuō)明:說(shuō)明:with grant optionwith grant option子句:子句:若指定了該子句,則獲得某種權(quán)限若指定了該子句,則獲得某種權(quán)限的用戶還可以把該權(quán)限再授予別的用戶;若沒有指定該子句,的用戶還可以把該權(quán)限再授予別的用戶;若沒有指定該子句,則獲得某種權(quán)限的用戶只能使用該權(quán)限,不能傳播該權(quán)限。則獲得某種權(quán)限的用戶只能使用該權(quán)限
42、,不能傳播該權(quán)限。劉安豐劉安豐()31數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用select,insert,update,delete,all privilegesselect,insert,update,delete,all privileges對(duì)象類型對(duì)象類型對(duì)對(duì) 象象select,insert,update,delete,all privilegesselect,insert,update,delete,all privilegestabletable屬性列屬性列select,insert,update,delete,alter,index,all privilegestabletable基本表基
43、本表select,insert,update,delete,all privilegesselect,insert,update,delete,all privilegestabletable視視 圖圖createtabcreatetabdatabasedatabase數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)常見操作權(quán)限常見操作權(quán)限 用戶的權(quán)限:用戶的權(quán)限:對(duì)數(shù)據(jù)庫(kù)可以有對(duì)數(shù)據(jù)庫(kù)可以有建表建表(createtab)(createtab)的權(quán)限,該權(quán)的權(quán)限,該權(quán)限屬于限屬于dbadba,可由,可由dbadba授予普通用戶?;颈砘蛞晥D的屬主擁有對(duì)授予普通用戶?;颈砘蛞晥D的屬主擁有對(duì)該表或視圖的一切操作權(quán)限。該表或視圖的一
44、切操作權(quán)限。接受權(quán)限的用戶可以是接受權(quán)限的用戶可以是一個(gè)或多個(gè)一個(gè)或多個(gè)具體用戶,也可以是具體用戶,也可以是public(public(全體用戶全體用戶) )。劉安豐劉安豐()32數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用例例1把查詢把查詢student表權(quán)限授給用戶表權(quán)限授給用戶u1。 grant select on table student to u1;例例2把對(duì)把對(duì)student表和表和course表的全部權(quán)限授予用戶表的全部權(quán)限授予用戶u2和和u3。 grant all priviliges on table student, course to u2,u3;例例3把對(duì)表把對(duì)表sc的查詢權(quán)限授予所有用戶。的查詢權(quán)限授予所有用戶。 grant select on table sc to public;例例4把查詢把查詢student表和修改學(xué)生學(xué)號(hào)的權(quán)限授給用戶表和修改學(xué)生學(xué)號(hào)的權(quán)限授給用戶u4。 grant update(sno), select on table student to u4;例例5把對(duì)表把對(duì)表sc的的insert權(quán)限授予權(quán)限授予u5用戶,并允許他再將此權(quán)用戶,并允許他再將此權(quán)限授予其他用戶。限授予其他用戶。 grant insert on
溫馨提示
- 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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東省青島市李滄區(qū)2024-2025學(xué)年八年級(jí)上學(xué)期期末生物試題(原卷版+解析版)
- 人教版九年級(jí)數(shù)學(xué)下冊(cè)教學(xué)工作計(jì)劃(含進(jìn)度表)
- 滅多威肟可行性研究報(bào)告
- 大學(xué)315策劃活動(dòng)方案
- 裝修工程現(xiàn)場(chǎng)保護(hù)合同樣本
- 校服采購(gòu)項(xiàng)目 投標(biāo)方案(技術(shù)方案)【配圖】
- 三農(nóng)工作績(jī)效考核與評(píng)估手冊(cè)
- 機(jī)械工程原理應(yīng)用及技術(shù)創(chuàng)新練習(xí)題集
- 三農(nóng)產(chǎn)品電子商務(wù)標(biāo)準(zhǔn)制定與實(shí)施指南
- 加強(qiáng)信息安全管理策略與技術(shù)培訓(xùn)的實(shí)施計(jì)劃
- 學(xué)校2025年每日兩小時(shí)體育活動(dòng)方案-陽(yáng)光體育活力四溢
- 謝孟媛初級(jí)語(yǔ)法IIII匯編可直接編輯
- 消防氣體滅火技術(shù)交底記錄
- 醫(yī)院感染管理組織架構(gòu)圖
- 冠心病病人的護(hù)理ppt(完整版)課件
- 專用夾具設(shè)計(jì)說(shuō)明書
- 氣缸選型介紹.ppt課件
- 水上危險(xiǎn)化學(xué)品泄漏事故處置技術(shù)研究
- 數(shù)字電子技術(shù)基礎(chǔ)第1章--康華光-第五版
- 國(guó)內(nèi)汽車產(chǎn)銷數(shù)據(jù)四個(gè)統(tǒng)計(jì)口徑數(shù)據(jù)利益鏈
- 消防設(shè)施檢測(cè)內(nèi)容及流程
評(píng)論
0/150
提交評(píng)論