《數(shù)據(jù)庫系統(tǒng)原理》PPT課件

上傳人:san****019 文檔編號:16519605 上傳時間:2020-10-05 格式:PPT 頁數(shù):62 大小:1.68MB
收藏 版權(quán)申訴 舉報 下載
《數(shù)據(jù)庫系統(tǒng)原理》PPT課件_第1頁
第1頁 / 共62頁
《數(shù)據(jù)庫系統(tǒng)原理》PPT課件_第2頁
第2頁 / 共62頁
《數(shù)據(jù)庫系統(tǒng)原理》PPT課件_第3頁
第3頁 / 共62頁

下載文檔到電腦,查找使用更方便

14.9 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《《數(shù)據(jù)庫系統(tǒng)原理》PPT課件》由會員分享,可在線閱讀,更多相關(guān)《《數(shù)據(jù)庫系統(tǒng)原理》PPT課件(62頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、2020/10/5,數(shù)據(jù)庫系統(tǒng)原理,,第5章 關(guān)系數(shù)據(jù)庫標準語言SQL,5.1 SQL概述及特點 5.2 數(shù)據(jù)定義語句 5.3 數(shù)據(jù)查詢語句 5.4 數(shù)據(jù)更新語句 5.5 嵌入式SQL 5.6 數(shù)據(jù)控制機制和語句,5.1 SQL概述及特點,1. SQL的主要功能(1) 數(shù)據(jù)定義功能 定義關(guān)系數(shù)據(jù)庫的模式、外模式和內(nèi)模式,以實現(xiàn)對基本表、視圖以及索引文件的定義、修改和刪除等操作。(2) 數(shù)據(jù)操縱功能 包括數(shù)據(jù)查詢和數(shù)據(jù)更新兩種數(shù)據(jù)操作語句:數(shù)據(jù)查詢指對數(shù)據(jù)庫中的數(shù)據(jù)查詢、統(tǒng)計、分組、排序操作;數(shù)據(jù)更新指數(shù)據(jù)的插入、刪除、修改等數(shù)據(jù)維護操作。(3) 數(shù)據(jù)控制功能 通過對數(shù)據(jù)庫用戶的授權(quán)和收權(quán)命令

2、來實現(xiàn)有關(guān)數(shù)據(jù)的存取控制,以保證數(shù)據(jù)庫的安全性。,2. SQL的特點,(1) SQL具有自含式和嵌入式兩種形式。(2) SQL具有語言簡潔、易學易用的特點。(3) SQL支持三級模式結(jié)構(gòu)。 全體基本表構(gòu)成了數(shù)據(jù)庫的模式。 視圖和部分基本表構(gòu)成了數(shù)據(jù)庫的外模式。 數(shù)據(jù)庫的存儲文件和它們的索引文件構(gòu)成了關(guān)系數(shù)據(jù)庫的內(nèi)模式。,SQL數(shù)據(jù)庫的體系結(jié)構(gòu),,,5.2 數(shù) 據(jù) 定 義,5.2 數(shù)據(jù)定義語句,5.2.1 基本表的定義和維護1. 定義基本表定義基本表語句的一般格式為: CREATE TABLE 庫名表名( 列名數(shù)據(jù)類型列級完整性約束條件 , 列名數(shù)據(jù)類型列級完整性約束條件 ,n ,表級完

3、整性約束條件 ,n );,,(1) SQL支持的數(shù)據(jù)類型,(2) 列級完整性的約束條件,針對屬性值設(shè)置的限制條件。 1) NOT NULL或NULL約束。NOT NULL約束不允許字段值為空,而NULL約束允許字段值為空。 2) UNIQUE約束。惟一性約束,即不允許列中出現(xiàn)重復的屬性值。 3) DEFAULT約束。默認值約束。 DEFAULT約束名默認值FOR列名 4) CHECK約束。檢查約束。CONSTRAINT約束名CHECK (約束條件表達式),(3) 表級完整性約束條件,涉及到關(guān)系中多個列的限制條件。1) UNIQUE約束。惟一性約束。2) PRIMARY KEY約束。定義主碼,

4、保證惟一性和非空性。 CONTRAINT約束名PRIMARY KEY CLUSTERED (列組)3) FOREIGN KEY約束。用于定義參照完整性。 CONTRAINT約束名FOREIGN KEY(外碼) REFERENCES被參照表名(與外碼對應(yīng)的主碼名),CREATE TABLE 學生(學號 CHAR(5) NOT NULL UNIQUE, 姓名 CHAR(8) NOT NULL,年齡 SMALLINT, 性別 CHAR(2),所在系 CHAR(20), DEFAULT C1 20 FOR 年齡, CONSTRAINT C2 CHECK(性別 IN (男,女))); C

5、REATE TABLE 課程(課程號 CHAR(5) PRIMARY KEY, 課程名 CHAR(20),先行課 CHAR(5)); CREATE TABLE 選課(學號 CHAR(5),課程號 CHAR(5), 成績 SMALLINT, CONSTRAINT C3 CHECK(成績 BETWEEN 0 AND 100), CONSTRAINT C4 PRIMARY KEY(學號,課程號), CONSTRAINT C5 FOREIGN KEY(學號) REFERENCES 學生(學號), CONSTRAINT C6 FOREIGN KEY(課程號) REFERENCES 課程

6、(課程號));,【例5-1】,建立基本表: 學生(學號,姓名,年齡,性別,所在系); 課程(課程號,課程名,先行課); 選課(學號,課程號,成績).,2. 修改基本表和刪除基本表,ALTER TABLE表名 ADD(新列名數(shù)據(jù)類型完整性約束 ,n) DROP完整性約束名 MODIFY(列名數(shù)據(jù)類型,n);(1) 使用ADD子句增加新列【例5-2】向課程表中增加“學時”字段。 ALTER TABLE 課程 ADD 學時 SMALLINT;(2) 使用MODIFY子句修改列的原定義(3) 使用DROP子句刪除指定的完整性約束條件【例5-3】刪除學生表中對年齡的默認值的定義。 ALTER TA

7、BLE 學生 DROP C1;刪除基本表的一般格式為: DROP TABLE表名;,5.2.2 索引的定義和維護,1. 索引的作用1) 使用索引可以明顯地加快數(shù)據(jù)查詢的速度。2) 使用索引可保證數(shù)據(jù)的惟一性。3) 使用索引可以加快連接速度。 2. 建立索引的原則1) 索引的建立和維護由DBA和DBMS完成。2) 大表應(yīng)當建索引,小表則不必建索引。3) 對于一個基本表,不要建立過多的索引。4) 根據(jù)查詢要求建索引。,3. 建立和刪除索引的格式,建立格式為:CREATE UNIQUE CLUSTER INDEX索引名 ON表名(列名次序,列名次序); 刪除索引格式為: DROP INDEX 索引名

8、; 【例5-4】為學生_課程數(shù)據(jù)庫中的學生、課程和選課三個表建立索引。其中,學生表按學號升序建立索引;課程表按課程號升序建惟一索引;選課表按學號升序和課程號降序建惟一索引。CREATE UNIQUE INDEX 學號 ON 學生(學號);CREATE UNIQUE INDEX 課程號 ON 課程(課程號);CREATE UNIQUE INDEX 選課號 ON 選課(學號 ASC,課程號 DESC);,5.2.3 視圖的定義和維護,1. 視圖的優(yōu)點1) 視圖能夠簡化用戶的操作。2) 視圖機制可以使用戶以不同的方式看待同一數(shù)據(jù)。3) 視圖對數(shù)據(jù)庫的重構(gòu)提供了一定程度的邏輯獨立性。4) 視圖可以對機

9、密的數(shù)據(jù)提供安全保護。 2. 視圖定義的格式一般格式為: CREATE VIEW視圖名(列名組) AS子查詢 WITH CHECK OPTION;,視圖舉例,【例5-6】建立計算機系學生的視圖。 CREATE VIEW 計算機系學生 AS SELECT 學號,姓名,年齡 FROM 學生 WHERE 所在系=計算機系; 【例5-7】由學生、課程和選課三個表,定義一個計算機系的學生成績視圖,其屬性包括學號、姓名、課程名和成績。 CREATE VIEW 學生成績(學號,姓名,課程名,成績)AS SELECT 學生.學號,學生.姓名,課程.課程名,選課.成績 FORM 學生,課

10、程,選課 WHERE 學生.學號=選課.學號 AND 程.課程名=選課.課程號 AND 學生.所在系=計算機系;,3. 視圖的刪除 、查詢和維護,視圖刪除語句的一般格式為: DROP VIEW視圖名; 視圖可以和基本表一樣被查詢,其使用方法與基本表相同,但利用視圖進行數(shù)據(jù)增、刪、改操作,會受到一定的限制。,5.3 數(shù)據(jù)查詢語句,5.3.1 數(shù)據(jù)查詢的基本語法 1. SELECT語句的語法 SELECT目標列組 FROM數(shù)據(jù)源 WHERE元組選擇條件 GROUP BY分列組HAVING 組選擇條件 ORDER BY排序列1排序要求1 ,n;,語法說明,(1) SELECT子句:指

11、明目標列(字段、表達式、函數(shù)表達式、常量)?;颈碇邢嗤牧忻硎緸椋罕砻?列名 (2) FROM子句:指明數(shù)據(jù)源。表間用“,”分割。數(shù)據(jù)源不在當前數(shù)據(jù)庫中,使用“數(shù)據(jù)庫名.表名”表示。一表多用,用別名標識。定義表別名:表名別名 (3) WHERE子句:元組選擇條件。 (4) GROUP BY子句:結(jié)果集分組。當目標列中有統(tǒng)計函數(shù),則統(tǒng)計為分組統(tǒng)計,否則為對整個結(jié)果集統(tǒng)計。子句后帶上HAVING子句表達組選擇條件(帶函數(shù)的表達式)。 (5) ORDER BY子句:排序。當排序要求為ASC時升序排序;排序要求為DESC時降序排列。,2. SELECT語句的操作符,(1) 算術(shù)操作符+(加號)、(

12、減號)、*(乘號)和 /(除號)。 (2) 比較操作符=(等于)、(大于)、=(大于等于)、!=(不等于)、(小于大于)、!(不大于)和 !<(不小于),共9種操作符。,,(3) 邏輯操作符,(4) 組合查詢操作符和其他SQL操作符,查詢1組合操作符查詢21) UNION:并查詢,并在結(jié)果集中去掉重復行。2) MINUS:差查詢操作。3) INTERSECT:交查詢操作。4) *:取全部字段。格式為: * 或表名.*5) ALL:全部。保留重復值(有統(tǒng)計函數(shù)時要求計算重復值)。 格式為: ALL字段或 ALL字段組6) DISTINCT:去掉重復值。在結(jié)果集中去掉重復值,或在統(tǒng)計函數(shù)中不計重

13、復值。 格式為: DISTINCT字段或 DISTINCT字段組,5.3.2 數(shù)據(jù)查詢實例,學生課程庫結(jié)構(gòu)為:學生(學號,姓名,年齡,所在系); 課程(課程號,課程名,先行課); 選課(學號,課程號,成績). 1. 簡單查詢:查詢過程中只涉及到一個表的查詢語句。【例5-9】求數(shù)學系學生的學號和姓名。 SELECT 學號,姓名 FROM 學生 WHERE 所在系=數(shù)學系;【例5-10】求選修了課程的學生學號。 SELECT DISTINCT 學號 FROM 選課;,例子,【例5-11】求選修C1課程的學生學號和成績,并要求對查詢結(jié)果按成績的降序排列,如果成績相同則按學號的升序排列

14、。 SELECT 學號,成績 FROM 選課 WHERE 課程號=C1 ORDER BY 成績 DESC,學號 ASC; 【例5-12】求選修課程C1且成績在8090之間的學生學號和成績,并將成績乘以系數(shù)0.8輸出。 SELECT 學號,成績*0.8 FROM 選課 WHERE 課程號 = C1 AND 成績 BETWEEN 80 AND 90;,例子,【例5-13】求數(shù)學系或計算機系姓張的學生的信息。 SELECT * FROM 學生 WHERE 所在系 IN ( 數(shù)學系,計算機系 ) AND 姓名 LIKE 張%; 【例5-14】求缺少了成績的學生的學號和課程號。 SELECT 學

15、號,課程號 FROM 選課 WHERE 成績 IS NULL;,2. 連接查詢,連接查詢中的連接條件通過WHERE子句表達,連接條件和元組選擇條件之間用AND(與)操作符銜接。 (1) 等值連接和非等值連接 表名1.列名1比較運算符表名2.列名2比較運算符:=、、=、<= 和!=;列名稱為連接字段?!纠?-15】查詢每個學生的情況以及他(她)所選修的課程。 SELECT 學生.*,選課.* FROM 學生,選課 WHERE 學生.學號=選課.學號;,例子,【例5-16】求學生的學號、姓名、選修的課程名及成績。 SELECT 學生.學號,姓名,課程名,成績 FROM 學生,課程,選課 WHERE

16、 學生.學號=選課.學號 AND 課程.課程號=選課.課程號; 【例5-17】求選修C1課程且成績?yōu)?0分以上的學生學號、姓名及成績。 SELECT 學生.學號,姓名,成績 FROM 學生,選課 WHERE 學生.學號=選課.學號 AND 課程號=C1AND 成績90;,例子,(2) 自身連接例如,課程表中的先行課是在上學期應(yīng)開設(shè)的,先行課的先行課,即間接先行課應(yīng)提前一學年開設(shè)。如果求查詢某門課的間接先行課或全部課程的間接先行課,就需要對課程表進行自身連接。,課程的先行關(guān)系鏈為:C5C4C3C2C1, 課程的間接關(guān)系鏈為:C5C3C1。,A,B,結(jié)果,【例5-18】,查詢每一門課的間接先行課。

17、 SELECT A.課程號,A.課程名,B.先行課 FROM 課程 A,課程 B WHERE A.先行課=B.課程號,(3) 外部連接,左外部連接操作是在結(jié)果集中保留連接表達式左表中的非匹配記錄;右外部連接操作是在結(jié)果集中保留連接表達式右表中的非匹配記錄。外部連接符號為“*=”,右外部連接符號為“=*”。外部連接中不匹配的分量用NULL表示。,職工表 部門表,連接的結(jié)果集,內(nèi)連接的結(jié)果集,左外部連接的結(jié)果集,內(nèi)連接: SELECT 職工.*,部門名稱,電話 FROM 職工,部門 WHERE 職工.所在部門= 部門.部門號; 左外部連接: SELECT 職工.*,部門名稱,電話

18、FROM 職工,部門 WHERE 職工.所在部門*= 部門.部門號; 右外部連接: SELECT 職工.*,部門名稱,電話 FROM 職工,部門 WHERE 職工.所在部門 =*部門.部門號;,【例5-19】,用SQL表達職工和部門之間的內(nèi)連接、左外部連接和右外部連接的語句,3. 嵌套查詢,使用IN操作符的嵌套查詢【例5-20】求選修了高等數(shù)學的學生學號和姓名。 SELECT 學號,姓名 FROM 學生 WHERE 學號 IN ( SELECT 學號 FROM 選課 WHERE 課程號 IN ( SELECT 課程號 FROM 課程 WHERE 課程名=高等數(shù)學 ));該題也可以使用

19、下面的連接查詢表達。 SELECT 學生.學號,姓名 FROM 學生,課程,選課 WHERE 學生.學號=課程.學號 AND 課程.課程號=選課.課程號 AND 課程.課程名=高等數(shù)學;,(2) 使用比較符的嵌套查詢,【例5-21】求C1課程的成績高于張三的學生學號和成績。 SELECT 學號,成績 FROM 選課 WHERE 課程號=C1 AND 成績 ( SELEC 成績 FROM 選課 WHERE 課程號=C1AND 學號= (SELECT 學號 FROM 學生 WHERE 姓名=張三));,,(3) 使用ANY或ALL操作符的嵌套查詢,格式為:字段比較符ANY|ALL

20、子查詢,例子,【例5-22】求其他系中比計算機系某一學生年齡小的學生。 SELECT * FROM 學生 WHERE 年齡 計算機系; 【例5-23】求其他系中比計算機系學生年齡都小的學生。 SELECT * FROM 學生 WHERE 年齡 計算機系;,(4) 使用EXISTS操作符的嵌套查詢,【例5-24】求選修了C2課程的學生姓名。 SELECT 姓名 FROM 學生 WHERE EXISTS (SELECT * FROM 選課 WHERE 學生.學號=學號 AND 課程號=C2); 【例5-25】求沒有選修C2課程的學生姓名。 SELECT 姓名 FROM 學生 WHERE N

21、OT EXISTS (SELECT * FROM 選課 WHERE 學生.學號=學號 AND 課程號=C2);,例子,【例5-26】查詢選修了全部課程的學生的姓名。 SELECT 姓名 FROM 學生 WHERE NOT EXISTS (SELECT * FROM 課程 WHERE NOT EXISTS (SELECT * FROM 選課 WHERE 學生.學號=學號 AND 課程.課程號=課程號));,例子,【例5-27】求至少選修了學號為“S2”的學生所選修的全部課程的學生學號和姓名。 SELECT 學號,姓名 FROM 學生 WHERE NOT EXISTS (

22、SELECT * FROM 選課 選課1 WHERE 選課1.學號=S2 AND NOT EXISTS (SELECT * FROM 選課 選課2 WHERE 學生.學號=選課2.學號 AND 選課2 .課程號=選課1.課程號);,4. 組合查詢,【例5-28】求選修了C1課程或選修了C2課程的學生學號。 SELECT 學號 FROM 選課 WHERE 課程號=C1 UNION SELECT 學號 FROM 選課 WHERE 課程號=C2 【例5-29】求選修C1課程,并且也選修C2課程的學生學號。 SELECT 學號 FROM 選課 WHERE 課程號=C1 INTERS

23、ECT SELECT 學號 FROM 選課 WHERE 課程號=C2;,【例5-30】求選修了C1課程但沒有選修C2課程的學生學號。,SELECT 學號 FROM 選課 WHERE 課程號=C1 MINUS SELECT 學號 FROM 選課 WHERE 課程號=C2;本例也可以用下面的EXISTS嵌套查詢表示。 SELECT 學號 FROM 選課 選課1 WHERE 課程號=C1 AND NOT EXISTS (SELECT 學號 FROM 選課 選課2 WHERE 選課1.學號=選課2.學號 AND 選課2.課程號=C2);,,5. 使用分組和SQL函數(shù)查詢,【例5-31】求學生的總?cè)藬?shù)。

24、 SELECT COUNT (*) FROM 學生;,例子,【例5-32】求選修了課程的學生人數(shù)。 SELECT COUNT(DISTINCT 學號) FROM 選課; 【例5-33】求課程和選修該課程的人數(shù)。 SELECT 課程號,COUNT(學號) FROM 選課 GROUP BY 課程號; 【例5-34】求選修課超過3門課的學生學號。 SELECT 學號 FROM 選課 GROUP BY 學號 HAVING COUNT(*)3;,5.4 數(shù)據(jù)更新語句,5.4.1 數(shù)據(jù)插入語句1. 使用常量插入單個元組格式為: INSERT INTO表名(屬性列1,屬性列2) VALUES (常量1,常

25、量2);,例子,【例5-35】將一個新學生記錄(學號:98010,姓名:張三,年齡:20,所在系:計算機系 )插入到學生表中。INSERTINTO 學生VALUES (98010,張三,20,計算機系); 【例5-36】插入一條選課記錄(學號:98011,課程號:C10,成績不詳)。 INSERT INTO 選課 (學號,課程號) VALUES (98011,C10);,2. 在表中插入子查詢的結(jié)果集,INSERT INTO表名(屬性列1,屬性列2) 子查詢;【例5-37】求每個系學生的平均年齡,把結(jié)果存入數(shù)據(jù)庫中。 CREATE TABLE 系平均年齡 (系名稱CHAR(20),

26、 平均年齡SMALLINT); INSERT INTO 系平均年齡 SELECT 所在系,AVG(ALL年齡) FROM 學生 GROUP BY 所在系;,5.4.2 數(shù)據(jù)修改語句,UPDATE表名 SET列名=表達式,列名=表達式,n WHERE條件;【例5-38】將學生表中全部學生的年齡加上2歲。 UPDATE 學生 SET 年齡=年齡+2;【例5-39】將選課表中的數(shù)據(jù)庫課程的成績乘以1.2。 UPDATE 選課 SET 成績= 成績*1.2 WHERE 課程號= (SELECT 課程號 FROM 課程 WHERE 課程名= 數(shù)據(jù)庫 );,5.4.3 數(shù)據(jù)刪除語句,

27、DELETE FROM表名 WHERE條件;【例5-40】刪除藝術(shù)系的學生記錄及選課記錄。 DELETE FROM 選課 WHERE 學號 IN (SELECT 學號 FROM 學生 WHERE 所在系=藝術(shù)系); DELETE FROM 學生 WHERE 所在系=藝術(shù)系;,5.5 嵌入式SQL,5.5.1 嵌入式SQL的特點1. 嵌入式SQL應(yīng)注意的問題1) SQL和主語言的配合問題。2) 合理選擇主語言。2. SQL嵌入主語言時必須解決的三個問題(1) 如何區(qū)別SQL和主語言(2) 使數(shù)據(jù)庫的工作單元與程序工作單元之間能夠通信1) 主語言通過主變量向SQL語句提供參數(shù)。 2

28、) SQL語句的當前工作狀態(tài)和運行環(huán)境數(shù)據(jù)要返饋給應(yīng)用程序。(3) 使用游標解決SQL一次一集合的操作與主語言一次一記錄操作的矛盾,5.5.2 不用游標的SQL語句,1. 幾種不需要使用游標的SQL語句(1) 用于說明主變量的說明性語句 SQL的說明性語句主要有兩條: EXEC SQL BEGIN DECLARE SECTION; EXEC SQL END DECLARE SECTION;(2) 數(shù)據(jù)定義和數(shù)據(jù)控制語句(3) 查詢結(jié)果為單記錄的查詢語句(4) 數(shù)據(jù)的插入語句和某些數(shù)據(jù)刪除、修改語句獨立的數(shù)據(jù)刪除和修改語句不需要使用游標;與查詢語句配合,刪除或修改查詢到的當前記錄的操作,與游標有

29、關(guān)。,2. 不用游標的查詢語句,EXEC SQL SELECT ALL|DISTINCT目標列表達式,n INTO主變量指示變量,n FROM表名或視圖名,n WHERE條件表達式;1) 在語句開始前要加EXEC SQL前綴。2) 該查詢語句中又擴充了INTO子句。3) 在WHERE子句的條件表達式中可以使用主變量。4) 由于查詢的結(jié)果集中只有一條記錄,該語句中不必有排序和分組子句。5) INTO子句中的主變量后面跟有指示變量時:結(jié)果列值為NULL,指示變量為負值,結(jié)果列不向該主變量賦值;傳遞正常,指示變量的值為0;主變量寬度不夠,則指示變量的值為數(shù)據(jù)截斷前的寬度。,例子,【例5-41

30、】查詢學號為主變量givesno、課號為主變量givecno的值的學生選課記錄。 EXEC SQL SELECT 學號,課程號,成績 INTO :Sno,:Cno,:grade :gradeid FROM 選課 WHERE 學號= :givesno AND 課程號= :givecno;3. 不用游標的數(shù)據(jù)維護語句(1) 不用游標的數(shù)據(jù)刪除語句【例5-42】刪除學號由主變量Sno決定的學生記錄。 EXEC SQL DELETE FROM 學生 WHERE 學號= :Sno;,(2) 不用游標的數(shù)據(jù)修改語句,【例5-43】將計算機系所有學生的年齡都加上主變量Raise。 EXEC S

31、QL UPDATE 學生 SET 年齡=年齡+:Raise WHERE 所在系=計算機系; 【例5-44】將計算機系學生的年齡置空。 Raiseid=-1 EXEC SQL UPDATE 學生 SET 年齡=年齡+:Raise :Raiseid; (3) 不用游標的數(shù)據(jù)插入語句 【例5-45】將學號為主變量Sno、課程號為Cno的選課記錄,插到庫中。 EXEC SQL INSERT INTO 選課 VALUES (:Sno, :Cno);,5.5.3 使用游標的SQL,(1) 定義游標命令 EXEC SQL DECLARE游標名CURSOR FOR子查詢

32、 FOR UPDATE OF字段名1,n;刪除和修改數(shù)據(jù)的語句中,WHERE為: WHERE CURRENT OF游標名【例5-46】定義按主變量DEPT查詢系里學生的游標。 EXEC SQL DECLARE SX CURSOR FOR SELECT * FROM 學生 WHERE 所在系= :DEPT;,(2) 打開、推進和關(guān)閉游標命令,EXEC SQL OPEN 游標名; 執(zhí)行對應(yīng)的查詢語句,并將游標指向結(jié)果集的第一條記錄前。打開的游標處于活動狀態(tài),可以被推進。 EXEC SQL FETCH游標名INTO主變量組; 將游標下移一行,讀出當前的記錄,將當前記錄的各數(shù)據(jù)項值放到I

33、NTO后的主變量組中。 EXEC SQL CLOSE 游標名; 【例5-47】打開SX游標。 DEPT= 計算機系 EXEC SQL OPEN SX; 【例5-48】將打開的指向系的游標向前推進。 EXEC SQL FETCH SX INTO :Sno,:Sname,:Sage,:Sdept;,5.6 數(shù)據(jù)控制機制和語句,5.6.1 數(shù)據(jù)控制機制 1. 授權(quán)定義 具有授權(quán)資格的用戶,如DBA或DBO,通過數(shù)據(jù)控制語言DCL,將授權(quán)決定告知數(shù)據(jù)庫管理系統(tǒng)。 2. 存權(quán)處理 DBMS把授權(quán)的結(jié)果編譯后存入數(shù)據(jù)字典中。 3. 查權(quán)操作 當提出操作請求時,系統(tǒng)在數(shù)據(jù)字典中查找該用戶的數(shù)據(jù)操作權(quán)限

34、,當擁有該操作權(quán)時執(zhí)行其操作,否則系統(tǒng)將拒絕其操作。,5.6.2 數(shù)據(jù)控制語句,1. 授權(quán)語句 GRANT系統(tǒng)特權(quán)組To用戶組| PUBLIC WITH GRANT OPTION;1) PUBLIC指數(shù)據(jù)庫的所有用戶。2) WITH GRANT OPTION:獲得權(quán)限的用戶可以把該權(quán)限再授予別的用戶。 GRANT ALL PRIVILIGES|對象特權(quán)組ON對象名 TO用戶組| PUBLIC WITH GRANT OPTION;1) ALL PRIVILIGES指所有的對象特權(quán)。2) 對象名指操作的對象標識,如表名、視圖名和過程名等。,例子,【例5-51】把修改學生學號和查詢學生表的權(quán)力授予用

35、戶王平。 GRANT UPDATE(學號),SELECT ON 學生 TO 王平; 【例5-52】把建立數(shù)據(jù)庫和備份數(shù)據(jù)庫的權(quán)力賦給用戶王平。 GRANT CREATE DATABASE, BACKUP DATABASE TO 王平;,2. 收權(quán)語句,REVOKE語句的一般格式為: REVOKE權(quán)限組|ALL PRIVILIGES ON對象名 FROM用戶名組| PUBLIC;其中:ON子句用于指定被收回特權(quán)的對象;ALL PRIVILIGES指收回所有特權(quán);PUBLIC指所有用戶 【例5-53】將用戶王平的可以在學生表中修改學生學號的權(quán)利收回。 REVOKE UPDATE(學號) ON 學生 FROM 王平;,3. 拒絕訪問語句,拒絕訪問語句的一般格式為: DENY ALL PRIVILIGES | 權(quán)限組 ON 對象名 TO 用戶組 | PUBLIC;其中:ON子句用于說明對象特權(quán)的對象名;對象名指的是表名、視圖名、視圖和表的字段名或者過程名。,本章結(jié)束,謝謝,

展開閱讀全文
溫馨提示:
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!