軟件技術(shù)基礎(chǔ)數(shù)據(jù)庫技術(shù)_第1頁
軟件技術(shù)基礎(chǔ)數(shù)據(jù)庫技術(shù)_第2頁
軟件技術(shù)基礎(chǔ)數(shù)據(jù)庫技術(shù)_第3頁
軟件技術(shù)基礎(chǔ)數(shù)據(jù)庫技術(shù)_第4頁
軟件技術(shù)基礎(chǔ)數(shù)據(jù)庫技術(shù)_第5頁
已閱讀5頁,還剩76頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Spring, 2010. zhaoHaixia. 1 n 概述概述 n SQL的數(shù)據(jù)定義的數(shù)據(jù)定義 n SQL的數(shù)據(jù)操縱的數(shù)據(jù)操縱 n SQL的視圖定義的視圖定義 n SQL的數(shù)據(jù)控制的數(shù)據(jù)控制 n 嵌入式嵌入式SQL Spring, 2010. zhaoHaixia. 2 n聯(lián)接查詢:涉及至少兩個表的查詢。聯(lián)接查詢:涉及至少兩個表的查詢。 SQL中沒有專門的中沒有專門的JOIN命令,而是命令,而是 通過通過SELECT語句中的語句中的WHERE子句來達子句來達 到聯(lián)接運算的目的,因此更加靈活、簡到聯(lián)接運算的目的,因此更加靈活、簡 便。便。 Spring, 2010. zhaoHaixia.

2、 3 n聯(lián)接條件的一般格式為:聯(lián)接條件的一般格式為: 表名表名1.列名列名1比較運算符比較運算符表名表名2.列名列名2 其中:比較運算符主要有:其中:比較運算符主要有:=、=、,=,=,!=或或) n與與ANY或或ALL謂詞配合使用謂詞配合使用 Spring, 2010. zhaoHaixia. 19 又看例又看例1:查詢與:查詢與A在同一個系學習的學生在同一個系學習的學生 SELECT * FROM Student WHERE Sdept IN ( SELECT Sdept FROM Student WHERE Sname= A ); SELECT * FROM Student WHERE

3、Sdept = ( SELECT Sdept FROM Student WHERE Sname= A ); SELECT * FROM Student WHERE ( SELECT Sdept FROM Student WHERE Sname= A ) = Sdept; 子查詢應跟在比較符之后子查詢應跟在比較符之后 Spring, 2010. zhaoHaixia. 20 謂詞語義謂詞語義 FANY:某一個值:某一個值 FALL:所有值:所有值 n使用使用ANY 或或ALL謂詞時必須同時使用比謂詞時必須同時使用比 較運算符較運算符 ANY ALL = = != 或或 Spring, 2010.

4、 zhaoHaixia. 21 例例1: 查詢其他系中比查詢其他系中比IS系某一學生年齡小的學生姓名系某一學生年齡小的學生姓名 和年齡和年齡 SELECT Sname, Sage FROM Student WHERE Sage ANY( SELECT Sage FROM Student WHERE Sdept=IS) AND SDIS; 其他方法?其他方法? Spring, 2010. zhaoHaixia. 22 例例1: 查詢其他系中比查詢其他系中比IS系某一學生年齡系某一學生年齡 小的學生姓名和年齡小的學生姓名和年齡 用集函數(shù):用集函數(shù): SELECT Sname,Sage FROM S

5、tudent WHERE Sage ( SELECT MAX(Sage) FROM Student WHERE Sdept=IS) AND SdeptIS; 效率更高效率更高 Spring, 2010. zhaoHaixia. 23 例例2:查詢其他系中比:查詢其他系中比IS系所有學生年齡都小的學生姓系所有學生年齡都小的學生姓 名和年齡名和年齡 SELECT Sname, Sage FROM Student WHERE Sage ALL( SELECT Sage FROM Student WHERE Sdept=IS) AND SDIS; SELECT Sname, Sage FROM Stu

6、dent WHERE Sage ( SELECT MIN(Sage) FROM Student WHERE Sdept=IS) AND SdeptIS; Spring, 2010. zhaoHaixia. 24 = 或或!= = ANY IN - MAXMIN= MIN ALL - NOT IN MIN MAX = MAX ANYANY,ALLALL與集函數(shù)及與集函數(shù)及ININ謂詞的對應關(guān)系謂詞的對應關(guān)系 Spring, 2010. zhaoHaixia. 25 EXISTS謂詞與謂詞與NOT EXISTS謂詞謂詞 不同形式的查詢間的替換不同形式的查詢間的替換 用用EXISTS/NOT EXI

7、STS實現(xiàn)全稱量詞實現(xiàn)全稱量詞 用用EXISTS/NOT EXISTS實現(xiàn)邏輯蘊函實現(xiàn)邏輯蘊函 Spring, 2010. zhaoHaixia. 26 EXISTS謂詞謂詞 F存在量詞存在量詞 F帶有帶有EXISTS謂詞的子查詢不返回任何數(shù)據(jù),只產(chǎn)謂詞的子查詢不返回任何數(shù)據(jù),只產(chǎn) 生邏輯真值生邏輯真值“true”或邏輯假值或邏輯假值“false” 若內(nèi)層查詢結(jié)果非空,則返回真值 若內(nèi)層查詢結(jié)果為空,則返回假值 Spring, 2010. zhaoHaixia. 27 例例1:查詢所有選修了查詢所有選修了1 1號課程的學生姓名號課程的學生姓名 SELECT Sname FROM Student

8、 WHERE EXISTS (SELECT * FROM SC WHERE Sno = Student.Sno AND Cno=1);); 若內(nèi)層查詢結(jié)果非空,則為真若內(nèi)層查詢結(jié)果非空,則為真 否則為假否則為假 相當于一個變量,根據(jù)它的值處理內(nèi)層查詢相當于一個變量,根據(jù)它的值處理內(nèi)層查詢 Student中有多少個學號,內(nèi)層查詢就進行多少次中有多少個學號,內(nèi)層查詢就進行多少次 屬于相關(guān)子查詢:查詢條件依賴于外層查詢中某個值屬于相關(guān)子查詢:查詢條件依賴于外層查詢中某個值 Spring, 2010. zhaoHaixia. 28 例例1:查詢所有選修了查詢所有選修了1 1號課程的學生姓名號課程的學生

9、姓名 SELECT Sname FROM Student WHERE EXISTS (SELECT * FROM SC WHERE Sno = Student.Sno AND Cno=1);); 由由EXISTS引出的子查詢,其目標列表達式通常都用引出的子查詢,其目標列表達式通常都用* ,因為,因為 帶帶EXISTS的子查詢只返回真值或假值,給出列名無實際意義的子查詢只返回真值或假值,給出列名無實際意義 其他方法?其他方法? 用聯(lián)結(jié)、相關(guān)、不相關(guān)子查詢實現(xiàn)用聯(lián)結(jié)、相關(guān)、不相關(guān)子查詢實現(xiàn) Spring, 2010. zhaoHaixia. 29 例例2:查詢沒有選修:查詢沒有選修1 1號課程的學

10、生姓名號課程的學生姓名 SELECT Sname FROM Student WHERE NOT EXISTS (SELECT * FROM SC WHERE Sno = Student.Sno AND Cno= 1 );); 若內(nèi)層查詢結(jié)果空,則為真若內(nèi)層查詢結(jié)果空,則為真 否則為假否則為假 此例用連接運算難于實現(xiàn)此例用連接運算難于實現(xiàn) SELECT Sname FROM Student, SC WHERE Student.Sno =SC.Sno AND Cno1 ; Spring, 2010. zhaoHaixia. 30 不同形式的查詢間的替換不同形式的查詢間的替換 F一些帶一些帶EXIS

11、TSEXISTS或或NOT EXISTSNOT EXISTS謂詞的子查詢不能被其謂詞的子查詢不能被其 他形式的子查詢等價替換他形式的子查詢等價替換 F所有帶所有帶ININ謂詞、比較運算符、謂詞、比較運算符、ANYANY和和ALLALL謂詞的子查謂詞的子查 詢都能用帶詢都能用帶EXISTSEXISTS謂詞的子查詢等價替換。謂詞的子查詢等價替換。 Spring, 2010. zhaoHaixia. 31 例:再看例:再看“查詢與查詢與A在同一個系學習的學生在同一個系學習的學生” SELECT * FROM Student S1 WHERE EXISTS SELECT * FROM Student

12、S2 WHERE S2.Sdept = S1.Sdept AND S2.Sname = A ; Spring, 2010. zhaoHaixia. 32 用用EXISTS/NOT EXISTSEXISTS/NOT EXISTS實現(xiàn)全稱量詞實現(xiàn)全稱量詞( (難點難點) ) FSQLSQL語言中沒有全稱量詞語言中沒有全稱量詞 (For allFor all) F可以把帶有全稱量詞的謂詞轉(zhuǎn)換為等價的帶有存在量可以把帶有全稱量詞的謂詞轉(zhuǎn)換為等價的帶有存在量 詞的謂詞:詞的謂詞: 帶全稱量詞的謂詞帶全稱量詞的謂詞帶存在量詞的謂詞帶存在量詞的謂詞 ( x x)P P(x x) ( x x( P P(x x

13、) Spring, 2010. zhaoHaixia. 33 例:例: 查詢選修了全部課程的學生姓名查詢選修了全部課程的學生姓名 帶全稱量詞的謂詞帶全稱量詞的謂詞帶存在量詞的謂詞帶存在量詞的謂詞 ( x x)P P(x x) ( x x( P P(x x) 本例變?yōu)椋哼x這樣的學生姓名,沒有一門課程是他不選修的本例變?yōu)椋哼x這樣的學生姓名,沒有一門課程是他不選修的 Spring, 2010. zhaoHaixia. 34 選這樣的學生姓名,沒有一門課程是他不選修的選這樣的學生姓名,沒有一門課程是他不選修的 分析分析: :任給一學號任給一學號Sno, Sno, 若不存在他不選修的課若不存在他不選修的

14、課, , 則顯示他的姓名則顯示他的姓名 ( ( Cno ( Cno (學號為學號為SnoSno的學生沒修課程的學生沒修課程Cno) )Cno) ) ( ( Cno ( Cno (在在SCSC中不存在選課單中不存在選課單 (Sno, Cno,(Sno, Cno, ) ) ) ) ) ) 例:例: 查詢選修了全部課程的學生姓名查詢選修了全部課程的學生姓名 Spring, 2010. zhaoHaixia. 35 SELECT Sname FROM Student WHERE NOT EXISTS ( SELECT * FROM Course WHERE NOT EXISTS ( SELECT *

15、FROM SC WHERE Sno=Student.Sno AND Cno=Course.Cno ) ); Spring, 2010. zhaoHaixia. 36 用用EXISTS/NOT EXISTS實現(xiàn)邏輯蘊函實現(xiàn)邏輯蘊函(難點難點) FSQL語言中沒有蘊函語言中沒有蘊函(Implication)邏輯運算邏輯運算 F可以利用謂詞演算將邏輯蘊函謂詞等價轉(zhuǎn)換為:可以利用謂詞演算將邏輯蘊函謂詞等價轉(zhuǎn)換為: p q pq Spring, 2010. zhaoHaixia. 37 例、查詢至少選修了學生例、查詢至少選修了學生9500295002選修的全部課程選修的全部課程 的學生號碼的學生號碼 分

16、析:用邏輯蘊函表達:查詢學號為分析:用邏輯蘊函表達:查詢學號為x x的學生,對所有的的學生,對所有的 課程課程y y,只要,只要9500295002學生選修了課程學生選修了課程y y,則,則x x也選修了也選修了y y。 形式化表示:形式化表示: 用用P P表示謂詞表示謂詞 “學生學生9500295002選修了課程選修了課程y y” 用用q q表示謂詞表示謂詞 “學生學生x x選修了課程選修了課程y y” 則上述查詢?yōu)閯t上述查詢?yōu)? (: ( y) p y) p q q Spring, 2010. zhaoHaixia. 38 n等價變換:等價變換: ( y)p q ( y ( (p q )

17、( y ( ( p q) y(p q) n變換后語義:不存在這樣的課程變換后語義:不存在這樣的課程y,學生,學生 95002選修了選修了y,而學生,而學生x沒有選。沒有選。 Spring, 2010. zhaoHaixia. 39 SELECT DISTINCT Sno FROM SC SCX WHERE NOT EXISTS (SELECT * FROM SC SCY WHERE SCY.Sno = 95002 AND NOT EXISTS (SELECT * FROM SC SCZ WHERE SCZ.Sno=SCX.Sno AND SCZ.Cno=SCY.Cno); 不存在這樣的課程不存

18、在這樣的課程y y,學生,學生9500295002選修了選修了y y,而學生,而學生x x沒有選。沒有選。 P q Spring, 2010. zhaoHaixia. 40 n包括:并操作包括:并操作UNION、交操作、交操作INTERSECT、 差操作差操作MINUS n要求:各數(shù)據(jù)項數(shù)目必須相同,對應項的數(shù)要求:各數(shù)據(jù)項數(shù)目必須相同,對應項的數(shù) 據(jù)類型也必須相同。據(jù)類型也必須相同。 n標準標準SQL中無交操作中無交操作INTERSECT、差操作、差操作 MINUS,但可以用其它方法來實現(xiàn)。,但可以用其它方法來實現(xiàn)。 Spring, 2010. zhaoHaixia. 41 例(并操作):例

19、(并操作): 查詢計算機科學系(查詢計算機科學系(CS)的學的學 生及年齡不大于生及年齡不大于19歲的學生。歲的學生。 SELECT * FROM Student WHERE Sdept = CS UNION SELECT * FROM Student WHERE Sage=19; SELECT DISTINCT * FROM Student WHERE (Sdept = CS ) OR (Sage=19); Spring, 2010. zhaoHaixia. 42 例(交操作):例(交操作): 查詢計算機科學系(查詢計算機科學系(CS) 且年齡不大且年齡不大 于于19歲的學生。歲的學生。 S

20、ELECT * FROM Student WHERE (Sdept = CS ) AND (Sage=19); SELECT * FROM Student WHERE (Sdept = CS ) AND Sno IN (SELECT Sno FROM Student WHERE (Sage=19); Spring, 2010. zhaoHaixia. 43 例(差操作):例(差操作): 查詢計算機科學系(查詢計算機科學系(CS) 的學生與的學生與 年齡不大于年齡不大于19歲的學生的差集。歲的學生的差集。 SELECT * FROM Student WHERE (Sdept = CS ) AND

21、 (NOT (Sage=19); SELECT * FROM Student WHERE (Sdept = CS ) AND Sno NOT IN (SELECT Sno FROM Student WHERE (Sage=19); Spring, 2010. zhaoHaixia. 44 n對集合操作結(jié)果的排序?qū)喜僮鹘Y(jié)果的排序 FORDER BY子句只能用于對最終查詢結(jié)果排序,不子句只能用于對最終查詢結(jié)果排序,不 能對中間結(jié)果排序能對中間結(jié)果排序 F任何情況下,任何情況下,ORDER BY子句只能出現(xiàn)在最后子句只能出現(xiàn)在最后 F對集合操作結(jié)果排序時,對集合操作結(jié)果排序時,ORDER BY子

22、句中用數(shù)字子句中用數(shù)字 指定排序?qū)傩灾付ㄅ判驅(qū)傩?Spring, 2010. zhaoHaixia. 45 SELECT * FROM Student WHERE Sdept= CS ORDER BY Sno UNION SELECT * FROM Student WHERE Sage=19 ORDER BY Sno; SELECT * FROM Student WHERE Sdept= CS UNION SELECT * FROM Student WHERE Sage80; 例例3:在關(guān)系:在關(guān)系SC中,把平均成績大于中,把平均成績大于80分的男學生分的男學生(Ssex=1)的學)的學 號和

23、平均成績存入到另一個關(guān)系號和平均成績存入到另一個關(guān)系S _GRADE (Sno, AVG_GRADE) 中。中。 Spring, 2010. zhaoHaixia. 51 DBMS在執(zhí)行插入語句時會檢查所插元組是在執(zhí)行插入語句時會檢查所插元組是 否破壞表上已定義的完整性規(guī)則否破壞表上已定義的完整性規(guī)則 F實體完整性實體完整性 F參照完整性參照完整性 F用戶定義的完整性用戶定義的完整性 對于有NOT NULL約束的屬性列是否提供了非空值 對于有UNIQUE約束的屬性列是否提供了非重復值 對于有值域約束的屬性列所提供的屬性值是否在值域范圍 內(nèi) Spring, 2010. zhaoHaixia. 5

24、2 n修改修改 Update UPDATE SET =, = WHERE ; Spring, 2010. zhaoHaixia. 53 例例1:把學生:把學生S1的成績置的成績置0。 UPDATE SC SET Grade=0 WHERE Sno= S1 ; UPDATE Student SET Sage=Sage+1; 例例2 2:把所有學生的年齡增加:把所有學生的年齡增加1 1歲。歲。 Spring, 2010. zhaoHaixia. 54 例例3:把計算機科學系全體學生的成績置零。:把計算機科學系全體學生的成績置零。 嵌套子查詢嵌套子查詢 UPDATE SC SET Grade=0 W

25、HERE CS = (SELECT Sdept FROM Student WHERE Student.Sno = SC.Sno ); Spring, 2010. zhaoHaixia. 55 例例4:把課程名為:把課程名為M的成績提高的成績提高5%。 UPDATE SC SET Grade=Grade * 1.05 WHERE Cno IN (SELECT Cno FROM Course WHERE Cname= M ); Spring, 2010. zhaoHaixia. 56 例例5:當:當C4課程的成績低于該門課程的平均課程的成績低于該門課程的平均 成績時提高成績時提高5%。 UPDAT

26、E SC SET Grade=Grade * 1.05 WHERE Cno= C4 AND Grade(SELECT AVG(Grade) FROM SC WHERE Cno= C4 ); Spring, 2010. zhaoHaixia. 57 DBMS在執(zhí)行修改語句時會檢查修改操作在執(zhí)行修改語句時會檢查修改操作 是否破壞表上已定義的完整性規(guī)則是否破壞表上已定義的完整性規(guī)則 F實體完整性實體完整性 F主碼不允許修改主碼不允許修改 F用戶定義的完整性用戶定義的完整性 NOT NULL約束 UNIQUE約束 值域約束 Spring, 2010. zhaoHaixia. 58 n刪除刪除 DELE

27、TE DELETE FROM 表名表名 WHERE 條件條件 ; 無條件時,刪除全部記錄,無條件時,刪除全部記錄, 但表的結(jié)構(gòu)還在,相當于一個空表但表的結(jié)構(gòu)還在,相當于一個空表 Spring, 2010. zhaoHaixia. 59 例例1:刪除學號為:刪除學號為S1的學生。的學生。 DELETE FROM Student WHERE Sno= S1 ; 例例2:把數(shù)學系全體學生的選課記錄刪除。:把數(shù)學系全體學生的選課記錄刪除。 DELETE FROM SC WHERE MA = (SELECT Sdept FROM Student WHERE Student.Sno = SC.Sno);

28、Spring, 2010. zhaoHaixia. 60 DBMS在執(zhí)行刪除語句時會檢查所刪元組在執(zhí)行刪除語句時會檢查所刪元組 是否破壞表上已定義的完整性規(guī)則是否破壞表上已定義的完整性規(guī)則 F參照完整性參照完整性 不允許刪除 級聯(lián)刪除 Spring, 2010. zhaoHaixia. 61 nDBMS在執(zhí)行插入、刪除、更新語句時在執(zhí)行插入、刪除、更新語句時 必須保證數(shù)據(jù)庫一致性必須保證數(shù)據(jù)庫一致性 F必須有事務(wù)的概念和原子性必須有事務(wù)的概念和原子性 F完整性檢查和保證完整性檢查和保證 Spring, 2010. zhaoHaixia. 62 n 概述概述 n SQL的數(shù)據(jù)定義的數(shù)據(jù)定義 n

29、SQL的數(shù)據(jù)操縱的數(shù)據(jù)操縱 n SQL的視圖定義的視圖定義 n SQL的數(shù)據(jù)控制的數(shù)據(jù)控制 n 嵌入式嵌入式SQL Spring, 2010. zhaoHaixia. 63 n視圖是從一個或幾個基本表(或視圖)導出的表。視圖是從一個或幾個基本表(或視圖)導出的表。 n用戶外模式是由若干基本表和用戶外模式是由若干基本表和/或若干視圖構(gòu)成的。或若干視圖構(gòu)成的。 n視圖是一個虛表,只存儲視圖的定義,數(shù)據(jù)存在視圖是一個虛表,只存儲視圖的定義,數(shù)據(jù)存在 所基于的基本表中。所基于的基本表中。 n視圖定義后就可象基本表一樣來使用。視圖定義后就可象基本表一樣來使用。 F可創(chuàng)建、刪除視圖可創(chuàng)建、刪除視圖 F可用

30、來定義新的視圖可用來定義新的視圖 F可在視圖上查詢(可在視圖上查詢(SELECT) F可更新(可更新(INSERT,DELETE,UPDATE)視圖,但受限制)視圖,但受限制 Spring, 2010. zhaoHaixia. 64 1.建立視圖建立視圖 n基本格式基本格式 F CREATE VIEW 視圖名視圖名 (字段名(字段名 ,字段名,字段名) AS 子查詢子查詢 WITH CHECK OPTION n功能:在數(shù)據(jù)字典中存儲視圖的定義(但并不功能:在數(shù)據(jù)字典中存儲視圖的定義(但并不 執(zhí)行子查詢),此后視圖名就可作為一個表來執(zhí)行子查詢),此后視圖名就可作為一個表來 使用。使用。 F限制表

31、中特定列和行的使用限制表中特定列和行的使用 F隱藏復雜查詢的細節(jié)隱藏復雜查詢的細節(jié) F將更新、插入和修改值限制到某個范圍將更新、插入和修改值限制到某個范圍 對視圖對視圖UPDATE、 INSERT和和DELETE 時時,記錄要滿足子查記錄要滿足子查 詢中的條件詢中的條件 視圖中包含的字段視圖中包含的字段 Spring, 2010. zhaoHaixia. 65 n例例1:建立計算機系的學生視圖。:建立計算機系的學生視圖。 n說明說明: F若若SELECT語句中有集函數(shù)、或字段表達式、或多表聯(lián)接有語句中有集函數(shù)、或字段表達式、或多表聯(lián)接有 同名字段時,則視圖中必須指定字段名;同名字段時,則視圖中

32、必須指定字段名; F視圖中字段名可以和基本表中的字段名不同;視圖中字段名可以和基本表中的字段名不同; F一般不允許有一般不允許有ORDER BY子句和子句和DISTINCT短語。短語。 CREATE VIEW CS_S AS SELECT Sno, Sname, Sage FROM Student WHERE Sdept= CS Spring, 2010. zhaoHaixia. 66 2.刪除視圖刪除視圖 nDROP VIEW 視圖名視圖名 例:例: DROP VIEW CS_S Spring, 2010. zhaoHaixia. 67 例例2 2:建立信息系學生的視圖。并要求進行修改和插入

33、:建立信息系學生的視圖。并要求進行修改和插入 操作時仍保證該視圖只有信息系的學生。操作時仍保證該視圖只有信息系的學生。 注意:注意:1、DBMS執(zhí)行執(zhí)行CREATE VIEW的結(jié)果只把對視圖的結(jié)果只把對視圖 的定義存入數(shù)據(jù)字典;并不執(zhí)行其中的查詢語句。的定義存入數(shù)據(jù)字典;并不執(zhí)行其中的查詢語句。 2、只有對視圖進行查詢時,才把視圖的定義從數(shù)、只有對視圖進行查詢時,才把視圖的定義從數(shù) 據(jù)字典中取出,轉(zhuǎn)換成查詢語句,進行查詢。據(jù)字典中取出,轉(zhuǎn)換成查詢語句,進行查詢。 單表行列子集視圖單表行列子集視圖 CREATE VIEW IS_S AS SELECT Sno,Sname,Sage FROM St

34、udent WHERE Sdept= IS (Sno,Sname,Sage) WITH CHECK OPTION; Spring, 2010. zhaoHaixia. 68 例例2(續(xù)續(xù)):對對IS_S視圖的更新操作視圖的更新操作 n修改操作:修改操作:DBMS自動加上自動加上Sdept= IS的條件的條件 n刪除操作:刪除操作:DBMS自動加上自動加上Sdept= IS的條件的條件 n插入操作:插入操作:DBMS自動檢查自動檢查Sdept屬性值是否為屬性值是否為 IS F如果不是,則拒絕該插入操作如果不是,則拒絕該插入操作 F如果沒有提供如果沒有提供Sdept屬性值,則自動定義屬性值,則自動

35、定義Sdept為為IS Spring, 2010. zhaoHaixia. 69 例例3:建立信息系選修了:建立信息系選修了C1課程的課程的學生的視圖。學生的視圖。 多表視圖多表視圖 CREATE VIEW IS_S1 AS SELECT Student.Sno, Sname, Grade FROM Student, SC WHERE Sdept= IS AND Student.Sno=SC.Sno AND SC.Cno= C1 ; (Sno,Sname,Grade) Spring, 2010. zhaoHaixia. 70 CREATE VIEW IS_S2 AS SELECT Sno,Sn

36、ame,Grade FROM IS_S1 WHERE Grade= A ; 例例4:建立信息系選修了:建立信息系選修了C1課程且成績?yōu)檎n程且成績?yōu)?A 的的學學 生的視圖。生的視圖。 建立在視圖建立在視圖 上的視圖上的視圖 Spring, 2010. zhaoHaixia. 71 例例5:定義一個反映學生出生年份的視圖:定義一個反映學生出生年份的視圖 帶表達式帶表達式 的視圖的視圖 CREATE VIEW BT_S (Sno, Sname, Sbirth) AS SELECT Sno,Sname,2006-Sage FROM Student; Spring, 2010. zhaoHaixia.

37、 72 例例6:建立學生學號及平均成績的視圖。:建立學生學號及平均成績的視圖。 分組視圖分組視圖 CREATE VIEW S_G (Sno,Gavg) AS SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno Spring, 2010. zhaoHaixia. 73 例例7:將:將Student表中所有女生記錄定義為一個視圖表中所有女生記錄定義為一個視圖 CREATE VIEW F_S1(stdnum,name,sex,age,dept) AS SELECT * FROM Student WHERE Ssex=女女; 缺點:修改基表缺點:修改基表Student

38、Student的結(jié)構(gòu)后,的結(jié)構(gòu)后,StudentStudent表與表與F_S1F_S1 視圖的映象關(guān)系被破壞,導致該視圖不能正確工作。視圖的映象關(guān)系被破壞,導致該視圖不能正確工作。 以以 SELECT SELECT * * 方式創(chuàng)建的視圖可擴充性差,應盡可能避免方式創(chuàng)建的視圖可擴充性差,應盡可能避免 Spring, 2010. zhaoHaixia. 74 為基表為基表Student增加屬性列不會破壞增加屬性列不會破壞Student表表 與與F_S2視圖的映象關(guān)系視圖的映象關(guān)系 CREATE VIEW F_S (stdnum,name,sex,age,dept) AS SELECT Sno,Sname,Ssex,Sage,Sd

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論