




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2024/1/12數據庫技術與應用DatabaseTechnologyandApplication2013年4月第三章關系數據庫標準語言SQL3.1SQL概述3.2數據定義3.3查詢3.4數據更新3.5視圖3.6數據控制3.7小結2024/1/123.4數據更新
3.4.1插入數據3.4.2修改數據3.4.3刪除數據2024/1/123.4.1插入數據兩種插入數據方式1.插入元組2.插入子查詢結果可以一次插入多個元組2024/1/12一、插入元組語句格式
INSERT INTO<表名>[(<屬性列1>[,<屬性列2>…)] VALUES(<常量1>[,<常量2>]…)功能將新元組插入指定表中2024/1/12插入元組(續)
INTO子句指定要插入數據的表名及屬性列屬性列的順序可與表定義中的順序不一致沒有指定屬性列:表示要插入的是一條完整的元組,且屬性列屬性與表定義中的順序一致指定部分屬性列:插入的元組在其余屬性列上取空值
VALUES子句提供的值必須與INTO子句匹配值的個數值的類型2024/1/12插入元組(續)[例1]將一個新學生元組(學號:0903128;姓名:陳冬;性別:男;所在系:IS;年齡:18歲)插入到Student表中。INSERTINTOStudent(Sno,Sname,Ssex,Sdept,Sage)VALUES('0903128','陳冬','男','IS',18);2024/1/12[例2]將學生張成民的信息插入到Student表中INSERTINTOStudentVALUES(‘0903126’,‘張成民’,‘男’,18,'CS');插入元組(續)[例3]插入一條選課記錄('0903128','1')。
INSERTINTOSC(Sno,Cno)VALUES(‘0903128’,‘1’);
RDBMS將在新插入記錄的Grade列上自動地賦空值。
或者:
INSERTINTOSCVALUES('0903128','1',NULL);2024/1/12二、插入子查詢結果語句格式
INSERTINTO
<表名>[(<屬性列1>[,<屬性列2>…)]]
子查詢;功能將子查詢結果插入指定表中2024/1/12插入子查詢結果(續)
INTO子句(與插入元組類似)
子查詢SELECT子句目標列必須與INTO子句匹配值的個數值的類型2024/1/12插入子查詢結果(續)[例4]對每一個系,求學生的平均年齡,并把結果存入數據庫。第一步:建表
CREATETABLEDept_age(SdeptCHAR(15) /*系名*/
Avg_ageSMALLINT);/*學生平均年齡*/
2024/1/12插入子查詢結果(續)第二步:插入數據
INSERTINTODept_age(Sdept,Avg_age)SELECTSdept,AVG(Sage)FROMStudentGROUPBYSdept;2024/1/12插入子查詢結果(續)RDBMS在執行插入語句時會檢查所插元組是否破壞表上已定義的完整性規則:實體完整性參照完整性用戶定義的完整性NOTNULL約束UNIQUE約束值域約束2024/1/123.4數據更新
3.4.1插入數據3.4.2修改數據3.4.3刪除數據2024/1/123.4.2修改數據語句格式
UPDATE<表名>
SET<列名>=<表達式>[,<列名>=<表達式>]…[WHERE<條件>];功能修改指定表中滿足WHERE子句條件的元組2024/1/12修改數據(續)SET子句指定修改方式(3種)修改某一個元組的值修改多個元組的值帶子查詢的修改語句要修改的列修改后取值WHERE子句指定要修改的元組缺省表示要修改表中的所有元組2024/1/121.修改某一個元組的值[例5]將學生0903121的年齡改為22歲
UPDATEStudent
SETSage=22WHERESno='0903121';
2024/1/122.修改多個元組的值[例6]將所有學生的年齡增加1歲
UPDATEStudent
SETSage=Sage+1;2024/1/123.帶子查詢的修改語句[例7]將計算機科學系全體學生的成績置零。
UPDATESCSETGrade=0WHERE'CS'=(SELECTSdeptFROMStudentWHEREStudent.Sno=SC.Sno);或:UPDATESCSETGrade=0WHERESC.SnoIN(SELECTSnoFROMStudentWHERESdept=‘CS’);2024/1/12修改數據(續)RDBMS在執行修改語句時會檢查修改操作是否破壞表上已定義的完整性規則實體完整性主碼不允許修改用戶定義的完整性
NOTNULL約束
UNIQUE約束值域約束2024/1/123.4數據更新
3.4.1插入數據3.4.2修改數據3.4.3刪除數據
2024/1/123.4.3刪除數據語句格式
DELETEFROM<表名>[WHERE<條件>];功能刪除指定表中滿足WHERE子句條件的元組WHERE子句指定要刪除的元組缺省表示要刪除表中的全部元組,表的定義仍在字典中2024/1/12刪除數據(續)三種刪除方式:1.刪除某一個元組的值2.刪除多個元組的值3.帶子查詢的刪除語句2024/1/121.刪除某一個元組的值[例8]刪除學號為0903128的學生記錄。
DELETEFROMStudentWHERESno=‘0903128';2024/1/122.刪除多個元組的值[例9]刪除所有的學生選課記錄。
DELETEFROMSC;2024/1/123.帶子查詢的刪除語句[例10]刪除計算機科學系所有學生的選課記錄。
DELETEFROMSCWHERE'CS'=(SELECTSdeptFROMStudentWHEREStudent.Sno=SC.Sno);2024/1/12刪除數據(續)DBMS在執行刪除語句時會檢查所刪除元組是否破壞表上已定義的完整性規則,參照完整性,若破壞,則不允許刪除級聯刪除2024/1/12第三章關系數據庫標準語言SQL3.1SQL概述3.2數據定義3.3查詢3.4數據更新3.5視圖3.6數據控制3.7小結2024/1/123.5視圖視圖的特點虛表,是從一個或幾個基本表(或視圖)導出的表數據庫中只存放視圖的定義,不存放視圖對應的數據基表中的數據發生變化,從視圖中查詢出的數據也隨之改變2024/1/123.5視圖基于視圖的操作
查詢刪除受限更新定義基于該視圖的新視圖2024/1/123.5視圖3.5.1定義視圖3.5.2查詢視圖3.5.3更新視圖3.5.4視圖的作用2024/1/123.5.1定義視圖建立視圖刪除視圖2024/1/12一、建立視圖語句格式
CREATEVIEW
<視圖名>[(<列名>[,<列名>]…)]
AS<子查詢>[WITHCHECKOPTION];組成視圖的屬性列名:全部省略或全部指定子查詢不允許含有ORDERBY子句和DISTINCT短語2024/1/12組成視圖的屬性列名屬性列名可全部省略或全部指定全部省略:
由子查詢中SELECT目標列中的諸字段組成全部指定所有列名的情況:(1)某個目標列是集函數或列表達式(2)多表連接時選出了幾個同名列作為視圖的字段(3)需要在視圖中為某個列啟用新的更合適的名字2024/1/12建立視圖(續)RDBMS執行CREATEVIEW語句時只是把視圖定義存入數據字典,并不執行其中的SELECT語句。在對視圖查詢時,按視圖的定義從基本表中將數據查出。2024/1/12建立視圖(續)
[例1]建立信息系學生的視圖。
CREATEVIEWIS_StudentAS
SELECTSno,Sname,SageFROMStudentWHERESdept='IS';2024/1/12建立視圖(續)[例2]建立信息系學生的視圖,并要求進行修改和插入操作時仍需保證該視圖只有信息系的學生。
CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROMStudentWHERESdept='IS'
WITHCHECKOPTION;2024/1/12建立視圖(續)對IS_Student視圖的更新操作:修改操作:自動加上Sdept='IS'的條件刪除操作:自動加上Sdept='IS'的條件插入操作:自動檢查Sdept屬性值是否為'IS'如果不是,則拒絕該插入操作如果沒有提供Sdept屬性值,則自動定義Sdept為'IS'2024/1/12建立視圖(續)基于多個基表的視圖[例3]建立信息系選修了1號課程的學生視圖。
CREATEVIEWIS_S1(Sno,Sname,Grade)AS
SELECTStudent.Sno,Sname,GradeFROMStudent,SCWHERESdept='IS'AND
Student.Sno=SC.SnoAND
SC.Cno='1';2024/1/12建立視圖(續)基于視圖的視圖
[例4]建立信息系選修了1號課程且成績在90分以上的學生的視圖。
CREATEVIEWIS_S2ASSELECTSno,Sname,GradeFROMIS_S1WHEREGrade>=90;2024/1/12建立視圖(續)帶表達式的視圖[例5]定義一個反映學生出生年份的視圖。
CREATEVIEWBT_S(Sno,Sname,Sbirth)ASSELECTSno,Sname,2012-SageFROMStudent;2024/1/12建立視圖(續)分組視圖[例6]將學生的學號及他的平均成績定義為一個視圖(假設SC表中“成績”列Grade為數字型)。
CREATVIEWS_G(Sno,Gavg)ASSELECTSno,AVG(Grade)FROMSCGROUPBYSno;2024/1/12建立視圖(續)不指定屬性列[例7]將Student表中所有女生記錄定義為一個視圖CREATEVIEWF_Student(F_Sno,name,sex,age,dept)ASSELECT*FROMStudentWHERESsex=‘女’;缺點: 以SELECT*方式創建的視圖可擴充性差,應盡可能避免。原因: 修改基表Student的結構后,Student表與F_Student視圖的映象關系被破壞,導致該視圖不能正確工作。2024/1/12建立視圖(續)CREATEVIEWF_Student2(stdnum,name,sex,age,dept)ASSELECTSno,Sname,Ssex,Sage,SdeptFROMStudentWHERESsex='女';為基表Student增加屬性列不會破壞Student表與F_Student2視圖的映象關系。2024/1/12二、刪除視圖語句的格式:
DROPVIEW<視圖名>;該語句從數據字典中刪除指定的視圖定義如果該視圖上還導出了其他視圖,使用CASCADE級聯刪除語句,把該視圖和由它導出的所有視圖一起刪除刪除基表時,由該基表導出的所有視圖定義都必須顯式地使用DROPVIEW語句刪除2024/1/12刪除視圖(續)[例8]刪除視圖BT_S: DROPVIEWBT_S;
刪除視圖IS_S1: DROPVIEWIS_S1;級聯刪除:
DROPVIEWIS_S1CASCADE;
2024/1/123.5視圖3.5.1定義視圖3.5.2查詢視圖3.5.3更新視圖3.5.4視圖的作用2024/1/123.5.2查詢視圖用戶角度:查詢視圖與查詢基本表相同RDBMS實現視圖查詢的方法通過視圖消解法(ViewResolution)完成進行有效性檢查,檢查所查詢的視圖是否存在若視圖存在,將其定義中的子查詢和用戶查詢結合起來,轉換成等價的對基本表的查詢執行修正后的查詢2024/1/12查詢視圖(續)[例9]在信息系學生的視圖中找出年齡小于20歲的學生。
SELECTSno,SageFROMIS_StudentWHERESage<20;IS_Student視圖的定義
CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROMStudentWHERESdept='IS‘;2024/1/12查詢視圖(續)視圖消解轉換后的查詢語句為:
SELECTSno,SageFROMStudentWHERESdept='IS'ANDSage<20;2024/1/12查詢視圖(續)[例10]查詢選修了1號課程的信息系學生(涉及視圖和基本表的查詢)SELECTIS_Student.Sno,SnameFROMIS_Student,SCWHEREIS_Student.Sno=SC.SnoANDSC.Cno='1';2024/1/12
CREATEVIEWIS_StudentAS
SELECTSno,Sname,SageFROMStudentWHERESdept='IS';查詢視圖(續)視圖消解法的局限有些情況下,視圖消解法不能生成正確查詢。采用視圖消解法的DBMS會限制這類查詢
2024/1/12查詢視圖(續)[例11]在S_G視圖中查詢平均成績在90分以上的學生學號和平均成績SELECT*FROMS_GWHEREGavg>=90;
S_G視圖的子查詢定義:
CREATEVIEWS_G(Sno,Gavg)ASSELECTSno,AVG(Grade)FROMSCGROUPBYSno;2024/1/12查詢轉換將查詢語句與S_G視圖的定義相結合:SELECTSno,AVG(Grade)FROMSCWHEREAVG(Grade)>=90GROUPBYSno;因WHERE子句不可用聚集函數,這種轉換不合理,出現語法錯誤正確:SELECTSno,AVG(Grade)FROMSCGROUPBYSnoHAVINGAVG(Grade)>=90;2024/1/123.5視圖3.5.1定義視圖3.5.2查詢視圖3.5.3更新視圖3.5.4視圖的作用2024/1/123.5.3更新視圖用戶角度:更新視圖與更新基本表相同DBMS實現視圖更新的方法視圖消解法,轉換為對基本表的操作指定WITHCHECKOPTION子句后
DBMS在更新視圖時會進行檢查,防止用戶通過視圖對不屬于視圖范圍內的基本表數據進行更新2024/1/12更新視圖(續)[例12]將信息系學生視圖IS_Student中學號0903122的學生姓名改為“劉辰”。UPDATEIS_StudentSETSname='劉辰'WHERESno='0903122';轉換后的語句:UPDATEStudentSETSname='劉辰'WHERESno='0903122'ANDSdept='IS';2024/1/12更新視圖(續)[例13]向信息系學生視圖IS_Student中插入一個新的學生記錄:95029,趙新,20歲INSERTINTOIS_StudentVALUES(‘95029’,‘趙新’,20);轉換為對基本表的更新:INSERTINTOStudent(Sno,Sname,Sage,Sdept)VALUES(‘95029','趙新',20,'IS');2024/1/12更新視圖(續)[例14]刪除信息系學生視圖IS_Student中學號為0903129的記錄DELETEFROMIS_StudentWHERESno='0903129';轉換為對基本表的更新:DELETEFROMStudentWHERESno='0903129'ANDSdept='IS';2024/1/12注:IS_Student視圖的定義CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROMStudentWHERESdept='IS'WITHCHECKOPTION;更新視圖(續)更新視圖的限制:一些視圖是不可更新的,因為對這些視圖的更新不能唯一地有意義地轉換成對相應基本表的更新例:視圖S_G為不可更新視圖。UPDATES_GSETGavg=90WHERESno=‘0903121’;這個對視圖的更新無法轉換成對基本表SC的更新2024/1/12注:視圖S_G的定義CREATEVIEWS_G(Sno,Gavg)ASSELECTSno,AVG(Grade)FROMSCGROUPBYSno;更新視圖(續)允許對行列子集視圖進行更新從單個基本表導出,只是去掉了基本表的某些行和列,且保留了主碼的視圖。對其它類型視圖的更新不同數據庫系統有不同限制2024/1/123.5視圖3.5.1定義視圖3.5.2查詢視圖3.5.3更新視圖3.5.4視圖的作用2024/1/121.視圖能夠簡化用戶的操作
當視圖中數據不是直接來自基本表時,定義視圖能夠簡化用戶的操作基于多張表連接形成的視圖基于復雜嵌套查詢的視圖2024/1/123.5.4視圖的作用2.視圖使用戶能以多種角度看待同一數據視圖機制能使不同用戶以不同方式看待同一數據,適應數據庫共享的需要3.視圖對重構數據庫提供了一定程度的邏輯獨立性例:假設數據庫邏輯結構發生改變學生關系Student(Sno,Sname,Ssex,Sage,Sdept)
“垂直”地分成兩個基本表:
SX(Sno,Sname,Sage)
SY(Sno,Ssex,Sdept)2024/1/123.視圖對重構數據庫提供了一定程度的邏輯獨立性(續)通過建立一個視圖Student:CREATEVIEWStudent(Sno,Sname,Ssex,Sage,Sdept)ASSELECTSX.Sno,SX.Sname,SY.Ssex,SX.Sage,SY.SdeptFROMSX,SYWHERESX.Sno=SY.Sno; 使用戶的外模式保持不變,從而對原Student表的查詢程序不必修改。3.視圖對重構數據庫提供了一定程度的邏輯獨立性(續)視圖只能在一定程度上提供數據的邏輯獨立性由于對視圖的更新是有條件的,因此應用程序中修改數據的語句可能仍會因基本表結構的改變而改變。2024/1/124.視圖能夠對機密數據提供安全保護對不同用戶定義不同視圖,使每個用戶只能看到他有權看到的數據第三章關系數據庫標準語言SQL3.1SQL概述3.2數據定義3.3查詢3.4數據更新3.5視圖3.6數據控制3.7小結2024/1/123.6數據控制概述3.6.1授權3.6.2收回權限小結2024/1/12概述 數據庫系統的特點之一,由DBMS提供統一的數據控制功能,包括:安全性控制完整性控制并發控制數據庫的恢復2024/1/12
安全性安全性:保護數據庫,防止不合法的使用所造成的數據泄露和破壞。保證數據安全性的主要措施存取控制:控制用戶只能存取他有權存取的數據規定不同用戶對于不同數據對象所允許執行的操作2024/1/12DBMS實現數據安全性保護的過程用戶或DBA把授權決定告知系統GRANT和REVOKEDBMS把授權的結果存入數據字典當用戶提出操作請求時,DBMS根據授權定義進行檢查,以決定是否執行操作請求2024/1/123.6.1授權GRANT語句的一般格式:GRANT<權限>[,<權限>]...[ON<對象類型><對象名>]TO<用戶>[,<用戶>]...[WITHGRANTOPTION];GRANT功能:將指定操作對象的指定操作權限授予指定的用戶。2024/1/12(1)操作權限2024/1/12(2)用戶的權限建表(CREATETAB)的權限:屬于DBADBA授予-->普通用戶基本表或視圖的屬主擁有對該表或視圖的一切操作權限接受權限的用戶:一個或多個具體用戶PUBLIC(全體用戶)2024/1/12(4)WITHGRANTOPTION子句指定了WITHGRANTOPTION子句:
獲得某種權限的用戶還可以把這種權限再授予別的用戶。沒有指定WITHGRANTOPTION子句:獲得某種權限的用戶只能使用該權限,不能傳播該權限不允許循環授權2024/1/12例題例1把查詢Student表的權限授給用戶U1
GRANTSELECTONTABLEStudent
TO
U1;2024/1/12例題(續)例2把對Student表和Course表的全部權限授予用戶U2和U3GRANTALLPRIVILIGES
ONTABLEStudent,CourseTOU2,U3;2024/1/12例題(續)例3把對表SC的查詢權限授予所有用戶
GRANTSELECT
ONTABLESC
TO
PUBLIC;2024/1/12例題(續)例4把查詢Student表和修改學生學號的權限授給用戶U4
GRANTUPDATE(Sno),SELECT ONTABLEStudent TOU4;2024/1/12例題(續
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年三醋酸纖維素膜項目建議書
- 2025辦公室租賃合同范本4
- 2025年解除商業租賃合同范本標準版
- 2025標準管理咨詢服務合同
- 2025辦公設備采購合同協議
- 2025標準版權許可合同樣式
- 2025中國鋼鐵產業陜西分公司集體合同
- 2025設備租賃合同版范本
- 2025蘇州市購房合同樣本
- 2025四川公共租賃住房租賃合同范本
- 商場運營部的培訓
- 四年級 人教版 數學《小數的意義》課件
- 《糖尿病與肥胖》課件
- 醫療糾紛防范與醫患溝通
- 服裝設計與工藝基礎知識單選題100道及答案
- 鋼結構施工管理培訓課件
- 護理MDT多學科聯合查房
- 易制毒化學品采購員崗位職責
- 《淺析我國綠色金融體系的構建》5600字(論文)
- 兒科病例分析課件
- 2024年同等學力人員申請碩士學位英語試卷與參考答案
評論
0/150
提交評論