數(shù)據(jù)庫系統(tǒng)概述(第四版)王珊 薩師煊 第3章 關系數(shù)據(jù)庫標準語言SQL(3)_第1頁
數(shù)據(jù)庫系統(tǒng)概述(第四版)王珊 薩師煊 第3章 關系數(shù)據(jù)庫標準語言SQL(3)_第2頁
數(shù)據(jù)庫系統(tǒng)概述(第四版)王珊 薩師煊 第3章 關系數(shù)據(jù)庫標準語言SQL(3)_第3頁
數(shù)據(jù)庫系統(tǒng)概述(第四版)王珊 薩師煊 第3章 關系數(shù)據(jù)庫標準語言SQL(3)_第4頁
數(shù)據(jù)庫系統(tǒng)概述(第四版)王珊 薩師煊 第3章 關系數(shù)據(jù)庫標準語言SQL(3)_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第三章 關系數(shù)據(jù)庫標準語言SQL(續(xù)2)中國人民大學信息學院An Introduction to Database System數(shù)據(jù)庫系統(tǒng)概論An Introduction to Database System第三章 關系數(shù)據(jù)庫標準語言SQLAn Introduction to Database System3.1 SQL概述3.2 學生-課程數(shù)據(jù)庫3.3 數(shù)據(jù)定義3.4 數(shù)據(jù)查詢3.5 數(shù)據(jù)更新6. 視圖7. 小結(jié)3.5 數(shù) 據(jù) 更 新An Introduction to Database System1.插入數(shù)據(jù)2.修改數(shù)據(jù)3.刪除數(shù)據(jù)3.5.1 插入數(shù)據(jù)An Introduction t

2、o Database System兩種插入數(shù)據(jù)方式1. 插入元組2. 插入子查詢結(jié)果 可以一次插入多個元組一、插入元組An Introduction to Database System語句格式INSERTINTO (,) VALUES ( ,)功能將新元組插入指定表中插入元組(續(xù))An Introduction to Database SystemINTO子句屬性列的順序可與表定義中的順序不一致沒有指定屬性列指定部分屬性列VALUES子句提供的值必須與INTO子句匹配值的個數(shù)值的類型插入元組(續(xù))An Introduction to Database System例1 將一個新學生元組(學號

3、:200215128;姓名:陳 冬;性別:男;所在系:IS;年齡:18歲)插入到 Student表中。INSERTINTO Student (Sno,Sname,Ssex,Sdept,Sage) VALUES (200215128,陳冬,男,IS,18);插入元組(續(xù))An Introduction to Database System例2 將學生張成民的信息插入到Student表中。INSERTINTO StudentVALUES (200215126, 張成民, 男,18,CS);插入元組(續(xù))An Introduction to Database System例3 插入一條選課記錄( 2

4、00215128,1 )。 INSERTINTO SC(Sno,Cno)VALUES ( 200215128 , 1 );RDBMS將在新插入記錄的Grade列上自動地賦空值。 或者:INSERT INTO SCVALUES ( 200215128 , 1 ,NULL);二、插入子查詢結(jié)果An Introduction to Database System語句格式INSERTINTO ( , )子查詢;功能將子查詢結(jié)果插入指定表中插入子查詢結(jié)果(續(xù))An Introduction to Database System INTO子句(與插入元組類似) 子查詢 SELECT子句目標列必須與INTO

5、子句匹配值的個數(shù)值的類型插入子查詢結(jié)果(續(xù))An Introduction to Database System例4 對每一個系,求學生的平均年齡,并把結(jié)果 存入數(shù)據(jù)庫。第一步:建表CREATE TABLE Dept_age (Sdept CHAR(15)Avg_age SMALLINT);/* 系名*/*學生平均年齡*/插入子查詢結(jié)果(續(xù))An Introduction to Database System第二步:插入數(shù)據(jù)INSERTINTO Dept_age(Sdept,Avg_age) SELECT Sdept,AVG(Sage) FROM StudentGROUP BY Sdept;插

6、入子查詢結(jié)果(續(xù))An Introduction to Database SystemRDBMS在執(zhí)行插入語句時會檢查所插元組是 否破壞表上已定義的完整性規(guī)則 實體完整性 參照完整性 用戶定義的完整性 NOT NULL約束 UNIQUE約束 值域約束3.5 數(shù) 據(jù) 更 新An Introduction to Database System1.插入數(shù)據(jù)2.修改數(shù)據(jù)3.刪除數(shù)據(jù)3.4.2 修改數(shù)據(jù)An Introduction to Database System語句格式UPDATE SET =,= WHERE ;功能 修改指定表中滿足WHERE子句條件的元組修改數(shù)據(jù)(續(xù))An Introduct

7、ion to Database SystemSET子句 指定修改方式要修改的列修改后取值WHERE子句指定要修改的元組缺省表示要修改表中的所有元組修改數(shù)據(jù)(續(xù))An Introduction to Database System三種修改方式1. 修改某一個元組的值2. 修改多個元組的值3. 帶子查詢的修改語句1. 修改某一個元組的值An Introduction to Database System例5 將學生200215121的年齡改為22歲UPDATE Student SET Sage=22WHERE Sno= 200215121 ;2. 修改多個元組的值An Introduction t

8、o Database System例6 將所有學生的年齡增加1歲UPDATE StudentSET Sage= Sage+1;3. 帶子查詢的修改語句An Introduction to Database System例7 將計算機科學系全體學生的成績置零。UPDATE SCSET Grade=0 WHERECS=(SELETE Sdept FROMStudentWHERE Student.Sno = SC.Sno);修改數(shù)據(jù)(續(xù))An Introduction to Database SystemRDBMS在執(zhí)行修改語句時會檢查修改操作 是否破壞表上已定義的完整性規(guī)則 實體完整性 主碼不允許

9、修改 用戶定義的完整性 NOT NULL約束 UNIQUE約束 值域約束3.5 數(shù) 據(jù) 更 新An Introduction to Database System1.插入數(shù)據(jù)2.修改數(shù)據(jù)3.刪除數(shù)據(jù)3.5.3 刪除數(shù)據(jù)An Introduction to Database System 語句格式DELETE FROMWHERE ; 功能刪除指定表中滿足WHERE子句條件的元組 WHERE子句指定要刪除的元組缺省表示要刪除表中的全部元組,表的定義仍在字典中刪除數(shù)據(jù)(續(xù))An Introduction to Database System三種刪除方式1. 刪除某一個元組的值2. 刪除多個元組的值3

10、. 帶子查詢的刪除語句1. 刪除某一個元組的值An Introduction to Database System例8 刪除學號為200215128的學生記錄。DELETEFROM StudentWHERE Sno= 200215128 ;2. 刪除多個元組的值An Introduction to Database System例9 刪除所有的學生選課記錄。DELETEFROM SC;3. 帶子查詢的刪除語句An Introduction to Database System例10 刪除計算機科學系所有學生的選課記錄。DELETE FROM SC WHERECS=(SELETE Sdept F

11、ROM StudentWHERE Student.Sno=SC.Sno);第三章 關系數(shù)據(jù)庫標準語言SQLAn Introduction to Database System3.1 SQL概述3.2 學生-課程數(shù)據(jù)庫3.3 數(shù)據(jù)定義3.4 數(shù)據(jù)查詢3.5 數(shù)據(jù)更新6. 視圖7. 小結(jié)3.6 視 圖An Introduction to Database System視圖的特點 虛表,是從一個或幾個基本表(或視圖)導出的表 只存放視圖的定義,不存放視圖對應的數(shù)據(jù) 基表中的數(shù)據(jù)發(fā)生變化,從視圖中查詢出的數(shù)據(jù)也隨 之改變3.6 視圖An Introduction to Database System基

12、于視圖的操作查詢 刪除 受限更新 定義基于該視圖的新視圖3.6 視圖An Introduction to Database System1.定義視圖2.查詢視圖3.更新視圖4.視圖的作用3.6.1 定義視圖An Introduction to Database System建立視圖刪除視圖一、建立視圖An Introduction to Database System語句格式CREATE VIEW ( ,)AS WITH CHECK OPTION;組成視圖的屬性列名:全部省略或全部指定子查詢不允許含有ORDER BY子句和DISTINCT短語建立視圖(續(xù))An Introduction to

13、Database SystemRDBMS執(zhí)行CREATE VIEW語句時只是把視圖定 義存入數(shù)據(jù)字典,并不執(zhí)行其中的SELECT語句。在對視圖查詢時,按視圖的定義從基本表中將數(shù) 據(jù)查出。建立視圖(續(xù))An Introduction to Database System例1 建立信息系學生的視圖。CREATE VIEW IS_Student ASSELECT Sno,Sname,Sage FROMStudentWHERE Sdept= IS;建立視圖(續(xù))An Introduction to Database System例2建立信息系學生的視圖,并要求進行修改和插入操作 時仍需保證該視圖只有信

14、息系的學生 。CREATE VIEW IS_Student ASSELECT Sno,Sname,Sage FROMStudentWHERE Sdept= IS WITH CHECK OPTION;建立視圖(續(xù))An Introduction to Database System對IS_Student視圖的更新操作: 修改操作:自動加上Sdept= IS的條件 刪除操作:自動加上Sdept= IS的條件 插入操作:自動檢查Sdept屬性值是否為IS 如果不是,則拒絕該插入操作 如果沒有提供Sdept屬性值,則自動定義Sdept為IS建立視圖(續(xù))An Introduction to Datab

15、ase System基于多個基表的視圖例3 建立信息系選修了1號課程的學生視圖。 CREATE VIEW IS_S1(Sno,Sname,Grade) ASSELECT Student.Sno,Sname,Grade FROM Student,SCWHERE Sdept= IS ANDStudent.Sno=SC.Sno AND SC.Cno= 1;建立視圖(續(xù))An Introduction to Database System基于視圖的視圖例4 建立信息系選修了1號課程且成績在90分以上的學 生的視圖。CREATE VIEW IS_S2 ASSELECT Sno,Sname,Grade F

16、ROM IS_S1WHERE Grade=90;建立視圖(續(xù))An Introduction to Database System帶表達式的視圖例5 定義一個反映學生出生年份的視圖。CREATE VIEW BT_S(Sno,Sname,Sbirth)ASSELECT Sno,Sname,2000-Sage FROMStudent;建立視圖(續(xù))An Introduction to Database System分組視圖例6 將學生的學號及他的平均成績定義為一個視圖 假設SC表中“成績”列Grade為數(shù)字型 CREAT VIEW S_G(Sno,Gavg)ASSELECT Sno,AVG(Gra

17、de) FROM SCGROUP BY Sno;建立視圖(續(xù))An Introduction to Database System不指定屬性列例7將Student表中所有女生記錄定義為一個視圖CREATE VIEW F_Student(F_Sno,name,sex,age,dept) ASSELECT *FROM Student WHERE Ssex=女;缺點: 修改基表Student的結(jié)構后,Student表與F_Student視圖的映象關系被 破壞,導致該視圖不能正確工作。二、刪除視圖An Introduction to Database System語句的格式:DROP VIEW ; 該

18、語句從數(shù)據(jù)字典中刪除指定的視圖定義 如果該視圖上還導出了其他視圖,使用CASCADE級聯(lián) 刪除語句,把該視圖和由它導出的所有視圖一起刪除 刪除基表時,由該基表導出的所有視圖定義都必須顯 式地使用DROP VIEW語句刪除刪除視圖(續(xù))An Introduction to Database System例8 刪除視圖BT_S: DROP VIEW BT_S;刪除視圖IS_S1:DROP VIEW IS_S1;拒絕執(zhí)行級聯(lián)刪除:DROP VIEW IS_S1 CASCADE;3.6 視 圖An Introduction to Database System1.定義視圖2.查詢視圖3.更新視圖4.視

19、圖的作用3.6.2 查詢視圖An Introduction to Database System 用戶角度:查詢視圖與查詢基本表相同 RDBMS實現(xiàn)視圖查詢的方法 視圖消解法(View Resolution) 進行有效性檢查 轉(zhuǎn)換成等價的對基本表的查詢 執(zhí)行修正后的查詢查詢視圖(續(xù))An Introduction to Database System例9 在信息系學生的視圖中找出年齡小于20歲的 學生。SELECT FROM WHERESno,Sage IS_Student Sage20;IS_Student視圖的定義 (參見視圖定義例1)查詢視圖(續(xù))An Introduction to D

20、atabase System視圖消解轉(zhuǎn)換后的查詢語句為:SELECT Sno,Sage FROMStudentWHERE Sdept= IS AND Sage=90;S_G視圖的子查詢定義:CREATE VIEW S_G (Sno,Gavg) ASSELECT Sno,AVG(Grade) FROM SCGROUP BY Sno;查詢轉(zhuǎn)換An Introduction to Database System錯誤:SELECT Sno,AVG(Grade) FROMSCWHERE AVG(Grade)=90GROUP BY Sno;正確:SELECT Sno,AVG(Grade) FROM SCG

21、ROUP BY SnoHAVING AVG(Grade)=90;3.6 視圖An Introduction to Database System1.定義視圖2.查詢視圖3.更新視圖4.視圖的作用更新視圖(續(xù))An Introduction to Database System例12 將信息系學生視圖IS_Student中學號200215122的學 生姓名改為“劉辰”。UPDATE IS_StudentSET Sname= 劉辰WHERE Sno= 200215122 ;轉(zhuǎn)換后的語句: UPDATEStudent SET Sname= 劉辰WHERE Sno= 200215122 AND Sdept= IS;更新視圖(續(xù))An Introduction to Database System例13 向信息系學生視圖IS_S中插入一個新的學生記錄:200215129,趙新,20歲INSERTINTO IS_StudentVALUES(95029,趙新,20);轉(zhuǎn)換為對基本表的更新:INSERTINTOStudent(Sno,Sname,Sage,Sd

溫馨提示

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

評論

0/150

提交評論