第3章关系数据库标准语言SQL(3)[高教书苑]_第1页
第3章关系数据库标准语言SQL(3)[高教书苑]_第2页
第3章关系数据库标准语言SQL(3)[高教书苑]_第3页
第3章关系数据库标准语言SQL(3)[高教书苑]_第4页
第3章关系数据库标准语言SQL(3)[高教书苑]_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、刘安丰刘安丰() 1数据库原理及应用数据库原理及应用 数据库原理及应用数据库原理及应用 Principle and Application of Database 第三章第三章 关系数据库标准语言关系数据库标准语言SQLSQL (续)(续) 刘安丰刘安丰() 2数据库原理及应用数据库原理及应用 掌握掌握SQL的数据更新的数据更新 掌握掌握SQL的视图使用的视图使用 掌握掌握SQL的数据控制的数据控制 刘安丰刘安丰() 3数据库原理及应用数据库原理及应用 插入数据:插入数据:有插入单个元组、插入子查询结果两种方式有插入单个元组、插入子查询结果两种方式 。 插入单个元组插入单个元组 语句格式:语句

2、格式: INSERT INTO (,) VALUES ( , ) 功能:功能:将新元组插入指定表中。将新元组插入指定表中。 其中:其中:INTO子句指定要插入数据的表名及属性列,属性列的子句指定要插入数据的表名及属性列,属性列的 顺序可与表定义中的顺序不一致。若没有指定属性列,则表顺序可与表定义中的顺序不一致。若没有指定属性列,则表 示要插入的是一条完整的元组,且属性列属性与表定义中的示要插入的是一条完整的元组,且属性列属性与表定义中的 顺序一致;若指定部分属性列,则插入的元组在其余属性列顺序一致;若指定部分属性列,则插入的元组在其余属性列 上取空值。上取空值。VALUES子句提供的值必须与子

3、句提供的值必须与INTO子句在值的个子句在值的个 数和值的类型上匹配数和值的类型上匹配 。 刘安丰刘安丰() 4数据库原理及应用数据库原理及应用 例例1将一个新学生记录将一个新学生记录 (95020,陈冬,男,陈冬,男,IS,18岁)插入到岁)插入到Student表中。表中。 INSERT INTO Student VALUES (95020,陈冬陈冬,男男,IS,18); 例例2插入一条选课记录插入一条选课记录( 95020,1 )。 INSERT INTO SC(Sno,Cno) VALUES ( 95020 , 1 ); 新插入的记录在新插入的记录在Grade列上取空值。列上取空值。 插

4、入子查询结果插入子查询结果 语句格式语句格式 INSERT INTO ( , ) 子查询;子查询; 功能:功能:将子查询结果插入指定表中。将子查询结果插入指定表中。 其中:其中:INTO、SELECT子句的说明与插入单条元组类似。子句的说明与插入单条元组类似。 刘安丰刘安丰() 5数据库原理及应用数据库原理及应用 例例3对每一个系,求学生的平均年龄,并把结果存入数据库。对每一个系,求学生的平均年龄,并把结果存入数据库。 首先建表:首先建表: CREATE TABLE Deptage (Sdept CHAR(15) , Avgage SMALLINT); /* 定义系名和学生平均年龄定义系名和学

5、生平均年龄*/ 然后插入数据:然后插入数据: INSERT INTO Deptage(Sdept,Avgage) SELECT Sdept,AVG(Sage) FROM Student GROUP BY Sdept; 注意点:注意点:无论是插入单个元组,还是插入子查询结果,无论是插入单个元组,还是插入子查询结果, DBMS 在执行插入语句时会自动检查所插元组是否破坏表上已定义的在执行插入语句时会自动检查所插元组是否破坏表上已定义的 完整性规则完整性规则(实体完整性、参照完整性、用户定义的完整性实体完整性、参照完整性、用户定义的完整性): 对于有对于有NOT NULL约束的属性列是否提供了非空值

6、;约束的属性列是否提供了非空值; 对于有对于有UNIQUE约束的属性列是否提供了非重复值;约束的属性列是否提供了非重复值; 对于有值域约束的属性列所提供的属性值是否在值域范围内。对于有值域约束的属性列所提供的属性值是否在值域范围内。 刘安丰刘安丰() 6数据库原理及应用数据库原理及应用 修改数据:修改数据:有修改某一个元组的值、修改多个元组的值、带子有修改某一个元组的值、修改多个元组的值、带子 查询的修改三种方式,查询的修改三种方式, DBMS也会自动检查三类完整性规则。也会自动检查三类完整性规则。 语句格式语句格式 UPDATE SET =,= WHERE ; 功能:功能:修改指定表中满足修

7、改指定表中满足WHERE子句条件的元组。子句条件的元组。 其中:其中:SET子句指定修改方式、要修改的列和修改后的取值;子句指定修改方式、要修改的列和修改后的取值; WHERE子句指定要修改的元组,缺省表示修改表中所有元组子句指定要修改的元组,缺省表示修改表中所有元组 修改某一个元组的值修改某一个元组的值 例例4将学生将学生95001的年龄改为的年龄改为22岁。岁。 UPDATE Student SET Sage=22 WHERE Sno= 95001 ; 刘安丰刘安丰() 7数据库原理及应用数据库原理及应用 修改多个元组的值修改多个元组的值 例例5将所有学生的年龄增加将所有学生的年龄增加1岁

8、。岁。 UPDATE Student SET Sage= Sage+1; 将信息系所有学生的年龄增加将信息系所有学生的年龄增加1岁。岁。 UPDATE Student SET Sage= Sage+1 WHERE Sdept= IS ; 带子查询的修改语句带子查询的修改语句 例例6将计算机系全体学生的成绩置零。将计算机系全体学生的成绩置零。 UPDATE SC SET Grade=0 WHERE CS= (SELETE Sdept FROM Student WHERE Student.Sno = SC.Sno); 刘安丰刘安丰() 8数据库原理及应用数据库原理及应用 删除数据:删除数据:有删除

9、某一个元组的值、删除多个元组的值、带子有删除某一个元组的值、删除多个元组的值、带子 查询的删除三种方式。查询的删除三种方式。DBMS在执行删除语句时会检查所删元在执行删除语句时会检查所删元 组是否破坏表上已定义的参照完整性规则组是否破坏表上已定义的参照完整性规则(不允许删除或级联不允许删除或级联 删除删除)。 语句格式:语句格式:DELETE FROM WHERE ; 功能:功能:删除指定表中满足删除指定表中满足WHERE子句条件的元组。子句条件的元组。 其中:其中:WHERE子句指定要删除的元组,缺省表示要修改表中子句指定要删除的元组,缺省表示要修改表中 的所有元组。的所有元组。 删除某一个

10、元组的值删除某一个元组的值 例例7删除学号为删除学号为95019的学生记录。的学生记录。 DELETE FROM Student WHERE Sno=95019; 刘安丰刘安丰() 9数据库原理及应用数据库原理及应用 删除多个元组的值删除多个元组的值 例例8删除所有的学生选课记录。删除所有的学生选课记录。 DELETE FROM SC; 带子查询的删除带子查询的删除 例例9删除计算机系所有学生的选课记录。删除计算机系所有学生的选课记录。 DELETE FROM SC WHERE CS= (SELETE Sdept FROM Student WHERE Student.Sno=SC.Sno);

11、数据更新与数据一致性:数据更新与数据一致性:DBMS在执行插入、删除、更新语句在执行插入、删除、更新语句 时必须保证数据库一致性:即必须有事务的概念和原子性、必时必须保证数据库一致性:即必须有事务的概念和原子性、必 须有完整性检查和保证。须有完整性检查和保证。 刘安丰刘安丰() 10数据库原理及应用数据库原理及应用 视图的特点视图的特点 视图是视图是RDBMS提供给用户以多种角度观察数据库中数据的重提供给用户以多种角度观察数据库中数据的重 要机制。要机制。 虚表,是从一个或几个基本表虚表,是从一个或几个基本表(或视图或视图)导出的表。导出的表。 只存放视图的定义,不会出现数据冗余。只存放视图的

12、定义,不会出现数据冗余。 基表中的数据发生变化,从视图中查询出的数据也随之改变。基表中的数据发生变化,从视图中查询出的数据也随之改变。 基于视图的内容:基于视图的内容: 定义视图定义视图 查询视图查询视图 更新视图更新视图 视图的作用视图的作用 刘安丰刘安丰() 11数据库原理及应用数据库原理及应用 定义视图定义视图 建立视图建立视图 语句格式:语句格式:CREATE VIEW ( ,) AS WITH CHECK OPTION; 功能:功能:DBMS将视图的定义存入数据字典,并不执行其中的将视图的定义存入数据字典,并不执行其中的 SELECT语句,查询视图时,按其定义从基本表中将数据查出语句

13、,查询视图时,按其定义从基本表中将数据查出 说明:说明:组成视图的属性列名或全部省略或全部指定。若全部省组成视图的属性列名或全部省略或全部指定。若全部省 略,则该视图由子查询中略,则该视图由子查询中SELECT目标列中的诸字段组成;但目标列中的诸字段组成;但 下述三种情况必须明确指定组成视图的所有列名:某个目标列下述三种情况必须明确指定组成视图的所有列名:某个目标列 是集函数或列表达式、多表连接时选出了几个同名列作为视图是集函数或列表达式、多表连接时选出了几个同名列作为视图 的字段、需要在视图中为某个列启用新的更合适的名字。的字段、需要在视图中为某个列启用新的更合适的名字。 刘安丰刘安丰()

14、12数据库原理及应用数据库原理及应用 常见的视图形式常见的视图形式 行列子集视图行列子集视图 WITH CHECK OPTION的视图的视图 基于多个基表的视图基于多个基表的视图 基于视图的视图基于视图的视图 带表达式的视图带表达式的视图 分组视图分组视图 一类不易扩充的视图一类不易扩充的视图 刘安丰刘安丰() 13数据库原理及应用数据库原理及应用 行列子集视图:行列子集视图:从单个基本表导出,建立的视图只是去掉了基从单个基本表导出,建立的视图只是去掉了基 本表的某些行和某些列,但保留了码。本表的某些行和某些列,但保留了码。 例例1建立信息系学生的视图。建立信息系学生的视图。 CREATE V

15、IEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= IS; WITH CHECK OPTION视图:视图:表示对视图进行增删改操作时表示对视图进行增删改操作时 不得破坏视图定义中的谓词条件不得破坏视图定义中的谓词条件(即子查询中的条件表达式即子查询中的条件表达式)。 例例2建立信息系学生的视图,并要求透过该视图进行的更新操作建立信息系学生的视图,并要求透过该视图进行的更新操作 只涉及信息系学生。只涉及信息系学生。 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FRO

16、M Student WHERE Sdept= IS WITH CHECK OPTION; 刘安丰刘安丰() 14数据库原理及应用数据库原理及应用 对对IS_Student视图的更新操作:视图的更新操作: 修改操作:修改操作:DBMS自动加上自动加上Sdept= IS的条件。的条件。 删除操作:删除操作:DBMS自动加上自动加上Sdept= IS的条件。的条件。 插入操作:插入操作:DBMS会自动检查会自动检查Sdept属性值是否为属性值是否为IS ,如果不是,则拒,如果不是,则拒 绝该插入操作;如果没有提供绝该插入操作;如果没有提供Sdept属性值,则自动定义属性值,则自动定义Sdept为为I

17、S。 基于多个基表的视图基于多个基表的视图 例例3建立信息系选修了建立信息系选修了1号课程的学生视图。号课程的学生视图。 CREATE VIEW IS_S1(Sno,Sname,Grade) AS SELECT Student.Sno,Sname,Grade FROM Student,SC WHERE Sdept= IS AND Student.Sno=SC.Sno AND SC.Cno= 1; 刘安丰刘安丰() 15数据库原理及应用数据库原理及应用 基于视图的视图:视图可建立在一个或多个已定义的视图上。基于视图的视图:视图可建立在一个或多个已定义的视图上。 例例4建立信息系选修了建立信息系选

18、修了1号课程且成绩在号课程且成绩在90分以上的学生视图。分以上的学生视图。 CREATE VIEW IS_S2 AS SELECT Sno,Sname,Grade FROM IS_S1 WHERE Grade=90; 带表达式的视图:必须明确定义组成视图的各个属性列名。带表达式的视图:必须明确定义组成视图的各个属性列名。 例例5定义一个反映学生出生年份的视图。定义一个反映学生出生年份的视图。 CREATE VIEW BT_S(Sno,Sname,Sbirth) AS SELECT Sno,Sname,2005-Sage FROM Student; 由于视图中的数据并不实际存储,所以可根据需要设

19、置一些派生属性列由于视图中的数据并不实际存储,所以可根据需要设置一些派生属性列(也也 称虚拟列称虚拟列),如本例中的,如本例中的Sbirth 。 刘安丰刘安丰() 16数据库原理及应用数据库原理及应用 分组视图:带有集函数和分组视图:带有集函数和GROUP BY子句查询的视图。子句查询的视图。 例例6将学生的学号及他的平均成绩定义为一个视图。将学生的学号及他的平均成绩定义为一个视图。 CREAT VIEW S_G(Sno,Gavg) AS SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno; 一类不易扩充的视图:一类不易扩充的视图:以以 SELECT * 方式

20、创建的视图,其可扩方式创建的视图,其可扩 充性差,应尽可能避免。充性差,应尽可能避免。 例例7将将Student表中所有女生记录定义为一个视图。表中所有女生记录定义为一个视图。 CREATE VIEW F_Student1(stdnum,name,sex,age,dept) AS SELECT * FROM Student WHERE Ssex=女女; 缺点:缺点:修改基表修改基表Student的结构后,的结构后,Student表与表与F_Student1 视图的映象关系被破坏,导致该视图不能正确工作。视图的映象关系被破坏,导致该视图不能正确工作。 刘安丰刘安丰() 17数据库原理及应用数据库

21、原理及应用 解决方法:为基表解决方法:为基表Student增加属性列不会破坏增加属性列不会破坏Student基表基表 与与F_Student2视图的映象关系。视图的映象关系。 CREATE VIEW F_Student2 (stdnum,name,sex,age,dept) AS SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student WHERE Ssex=女女; 删除视图删除视图 语句格式:语句格式:DROP VIEW ; 功能:功能:从数据字典中删除指定的视图定义。视图删除后,由该从数据字典中删除指定的视图定义。视图删除后,由该 视图导出的其他视图定义仍

22、在数据字典中,但这些视图已不能视图导出的其他视图定义仍在数据字典中,但这些视图已不能 使用,必须使用使用,必须使用DROP VIEW显式删除。基表删除后,由该基显式删除。基表删除后,由该基 表导出的所有视图定义没有被删除,但却无法使用,必须使用表导出的所有视图定义没有被删除,但却无法使用,必须使用 DROP VIEW显式删除。显式删除。 例例88删除视图删除视图IS_S1。 DROP VIEW IS_S1; 刘安丰刘安丰() 18数据库原理及应用数据库原理及应用 查询视图:查询视图:视图定义后,用户可以象对基本表一样对视图进行视图定义后,用户可以象对基本表一样对视图进行 查询。查询。DBMS实

23、现视图查询时,首先进行有效性检查,检查所实现视图查询时,首先进行有效性检查,检查所 查询的表、视图是否存在。若存在,则从数据字典中取出视图查询的表、视图是否存在。若存在,则从数据字典中取出视图 的定义,把定义中的子查询和用户的查询结合起来,转换成等的定义,把定义中的子查询和用户的查询结合起来,转换成等 价的对基本表的查询,然后再执行修正了的查询。这一转换过价的对基本表的查询,然后再执行修正了的查询。这一转换过 程称为视图消解程称为视图消解(View Resolution)。 刘安丰刘安丰() 19数据库原理及应用数据库原理及应用 例例1在信息系学生的视图中找出年龄小于在信息系学生的视图中找出年

24、龄小于20岁的。岁的。 SELECT Sno,Sage FROM IS_Student WHERE Sage20; IS_Student视图的定义视图的定义 (视图定义例视图定义例1)为:为: CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= IS; 采用视图消解法转换后的查询语句为:采用视图消解法转换后的查询语句为: SELECT Sno,Sage FROM Student WHERE Sdept= IS AND Sage=90=90分的学生学号和平均成绩。分的学生学号和平均成绩。 SELECT

25、 * FROM S_G WHERE Gavg=90; S_G视图定义如下:视图定义如下: CREATE VIEW S_G (Sno,Gavg) AS SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno; 错误的转换:错误的转换: SELECT Sno,AVG(Grade) FROM SC WHERE AVG(Grade)=90 GROUP BY Sno; 正确的转换:正确的转换:SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno HAVING AVG(Grade)=90; 刘安丰刘安丰() 21数据库原理及应用数据库原理及应用

26、 更新视图:更新视图:通过视图实现插入、删除和修改数据。由于视图是通过视图实现插入、删除和修改数据。由于视图是 不实际存储数据的虚表,因此对视图的更新最终要转换为对基不实际存储数据的虚表,因此对视图的更新最终要转换为对基 本表的更新。本表的更新。 DBMS实现对视图的更新也是采用视图消解法。实现对视图的更新也是采用视图消解法。 用户指定用户指定WITH CHECK OPTION子句后,子句后,DBMS在更新视图时在更新视图时 会进行检查,防止用户通过视图对不属于视图范围内的基本表会进行检查,防止用户通过视图对不属于视图范围内的基本表 数据进行更新。数据进行更新。 例例1将视图将视图IS_Stu

27、dent中学号中学号95002的学生姓名改为刘辰。的学生姓名改为刘辰。 UPDATE IS_Student SET Sname= 刘辰刘辰 WHERE Sno= 95002; 转换后的语句:转换后的语句:UPDATE Student SET Sname= 刘辰刘辰 WHERE Sno= 95002 AND Sdept= IS; 刘安丰刘安丰() 22数据库原理及应用数据库原理及应用 例例2向信息系学生视图向信息系学生视图IS_S中插入一个新的学生记录:中插入一个新的学生记录:95029, 赵新,赵新,20岁。岁。 INSERT INTO IS_Student VALUES(95029,赵新赵新

28、, 20); 转换为对基本表的更新:转换为对基本表的更新: INSERT INTO Student(Sno,Sname,Sage,Sdept) VALUES(95029,赵新赵新,20,IS ); 例例3删除视图删除视图CS_S中学号为中学号为95029的记录。的记录。 DELETE FROM IS_Student WHERE Sno= 95029; 转换为对基本表的更新:转换为对基本表的更新: DELETE FROM Student WHERE Sno= 95029 AND Sdept= IS; 刘安丰刘安丰() 23数据库原理及应用数据库原理及应用 更新视图的限制:更新视图的限制:一些视图

29、是不可更新的,因为对这些视图的一些视图是不可更新的,因为对这些视图的 更新不能唯一地有意义地转换成对相应基本表的更新。更新不能唯一地有意义地转换成对相应基本表的更新。 例视图例视图S_G为不可更新视图:为不可更新视图: CREATE VIEW S_G (Sno,Gavg) AS SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno; 对于如下更新语句用消解法无法将其转换成对基本表对于如下更新语句用消解法无法将其转换成对基本表SC的更新的更新 UPDATE S_G SET Gavg=90 WHERE Sno= 95001; 实际系统对视图更新的限制实际系统对视图更

30、新的限制 允许对行列子集视图进行更新。允许对行列子集视图进行更新。 对其他类型视图的更新不同对其他类型视图的更新不同DBMSDBMS有不同的限制。有不同的限制。 刘安丰刘安丰() 24数据库原理及应用数据库原理及应用 一般一般DBMS对视图更新的限制:对视图更新的限制: 若视图是由两个以上基本表导出的,则此视图不允许更新。若视图是由两个以上基本表导出的,则此视图不允许更新。 若视图的字段来自字段表达式或常数,则不允许对此视图执行若视图的字段来自字段表达式或常数,则不允许对此视图执行 INSERT和和UPDATE操作,但允许执行操作,但允许执行DELETE操作。操作。 若视图的字段来自集函数,则

31、此视图不允许更新。若视图的字段来自集函数,则此视图不允许更新。 若视图定义中含有若视图定义中含有GROUP BY子句,则此视图不允许更新。子句,则此视图不允许更新。 若视图定义中含有若视图定义中含有DISTINCT短语,则此视图不允许更新。短语,则此视图不允许更新。 一个不允许更新的视图上定义的视图也不允许更新。一个不允许更新的视图上定义的视图也不允许更新。 若视图定义中有嵌套查询,并且内层查询的若视图定义中有嵌套查询,并且内层查询的FROM子句中涉及子句中涉及 的表也是导出该视图的基本表,则此视图不允许更新。的表也是导出该视图的基本表,则此视图不允许更新。 刘安丰刘安丰() 25数据库原理及

32、应用数据库原理及应用 例将例将SC中成绩在平均成绩之上的元组定义成一个视图中成绩在平均成绩之上的元组定义成一个视图GOOD_SC: CREATE VIEW GOOD_SC AS SELECT Sno,Cno,Grade FROM SC WHERE Grade (SELECT AVG(Grade) FROM SC); 由于导出视图由于导出视图GOOD_SC的基本表是的基本表是SC,内层查询中涉及的,内层查询中涉及的 表也是表也是SC,所以视图,所以视图GOOD_SC是不允许更新的。是不允许更新的。 视图的作用视图的作用 能够简化用户的操作:能够简化用户的操作:当视图中数据不是直接来自基本表时,当

33、视图中数据不是直接来自基本表时, 如基于多张表连接形成的视图、基于复杂嵌套查询的视图、含如基于多张表连接形成的视图、基于复杂嵌套查询的视图、含 导出属性的视图等,定义视图能够简化用户的操作。导出属性的视图等,定义视图能够简化用户的操作。 使用户能以多种角度看待同一数据:使用户能以多种角度看待同一数据:视图机制能使不同用户以视图机制能使不同用户以 不同方式看待同一数据,适应数据库共享的需要。不同方式看待同一数据,适应数据库共享的需要。 刘安丰刘安丰() 26数据库原理及应用数据库原理及应用 对重构数据库提供了一定程度的逻辑独立性:对重构数据库提供了一定程度的逻辑独立性:关系数据库中数关系数据库中

34、数 据库的重构往往是不可避免的,重构数据库最常见的是将一个据库的重构往往是不可避免的,重构数据库最常见的是将一个 基本表垂直地分成多个基本表。基本表垂直地分成多个基本表。 例如,将学生关系例如,将学生关系Student(Sno,Sname,Ssex,Sage,Sdept) 垂直地分成垂直地分成SX(Sno,Sname,Sage)和和SY(Sno,Ssex,Sdept)两两 个关系,这时原表个关系,这时原表Student为为SX表和表和SY表自然连接的结果。表自然连接的结果。 可以建立一个视图可以建立一个视图Student: CREATE VIEW Student(Sno,Sname,Ssex,

35、Sage,Sdept) AS SELECT SX.Sno,SX.Sname,SY.Ssex,SX.Sage,SY.Sdept FROM SX,SYWHERE SX.Sno=SY.Sno; 这样,尽管数据库的逻辑结构改变了,但应用程序不必修改,这样,尽管数据库的逻辑结构改变了,但应用程序不必修改, 因为新建立的视图定义了用户原来的关系,使用户的外模式保因为新建立的视图定义了用户原来的关系,使用户的外模式保 持不变,用户的应用程序通过视图仍然能够查找数据。持不变,用户的应用程序通过视图仍然能够查找数据。 刘安丰刘安丰() 27数据库原理及应用数据库原理及应用 能够对机密数据提供安全保护:能够对机密

36、数据提供安全保护:对不同用户定义不同视图,使对不同用户定义不同视图,使 每个用户只能看到他有权看到的数据。通过每个用户只能看到他有权看到的数据。通过WITH CHECK OPTION可以对关键数据定义操作时间限制。可以对关键数据定义操作时间限制。 例建立例建立1号课程的选课视图,并要求透过该视图进行的更新操号课程的选课视图,并要求透过该视图进行的更新操 作只涉及作只涉及1号课程,同时对该视图的任何操作只能在工作时间号课程,同时对该视图的任何操作只能在工作时间 进行。进行。 CREATE VIEW IS_SC AS SELECT Sno,Cno,Grade FROM SC WHERE Cno=

37、1 AND TO_CHAR(SYSDATE,HH24) BETWEEN 9 AND 17 AND TO_CHAR(SYSDATE,D) BETWEEN 2 AND 6 WITH CHECK OPTION; 刘安丰刘安丰() 28数据库原理及应用数据库原理及应用 概述:概述:由由DBMS提供统一的数据控制功能是提供统一的数据控制功能是DBS的特点之一。的特点之一。 数据控制的概念:数据控制的概念:又称数据保护,包括数据的安全性控制、完又称数据保护,包括数据的安全性控制、完 整性控制、并发控制、恢复。整性控制、并发控制、恢复。 SQL语言的数据控制功能:语言的数据控制功能:SQLSQL语言提供了数

38、据控制功能,能语言提供了数据控制功能,能 够在一定程度上保证数据库中数据的完全性、完整性,并提供够在一定程度上保证数据库中数据的完全性、完整性,并提供 了一定的并发控制及恢复能力。了一定的并发控制及恢复能力。 完整性:完整性:指数据库中数据的正确性与相容性。指数据库中数据的正确性与相容性。SQL语言定义完语言定义完 整性约束条件的功能主要体现在整性约束条件的功能主要体现在CREATE TABLE和和ALTER TABLE语句中,可以在这些语句中定义码、取值唯一的列、语句中,可以在这些语句中定义码、取值唯一的列、 不允许空值的列、外码不允许空值的列、外码(参照完整性参照完整性)及其他约束条件。及

39、其他约束条件。 并发控制:并发控制:当多个用户并发地对数据库进行操作时,对他们加当多个用户并发地对数据库进行操作时,对他们加 以控制、协调,以保证并发操作的正确执行和数据库的一致性以控制、协调,以保证并发操作的正确执行和数据库的一致性 。SQL语言并发控制的功能主要体现在支持事务、事务开始、语言并发控制的功能主要体现在支持事务、事务开始、 事务结束、事务提交等概念。事务结束、事务提交等概念。 刘安丰刘安丰() 29数据库原理及应用数据库原理及应用 恢复:恢复:当发生各种类型的故障导致数据库处于不一致状态时,当发生各种类型的故障导致数据库处于不一致状态时, 将数据库恢复到一致状态的功能。将数据库

40、恢复到一致状态的功能。SQL语言恢复的功能主要体语言恢复的功能主要体 现在提供事务回滚现在提供事务回滚UNDO 、重做、重做REDO等概念。等概念。 安全性安全性( (本节主要讨论本节主要讨论) ):保护数据库,防止不合法的使用所造保护数据库,防止不合法的使用所造 成的数据泄露和破坏。保证数据安全性的主要措施是存取控制成的数据泄露和破坏。保证数据安全性的主要措施是存取控制 ,控制用户只能存取他有权存取的数据规定不同用户对于不同,控制用户只能存取他有权存取的数据规定不同用户对于不同 数据对象所允许执行的操作。数据对象所允许执行的操作。 DBMS实现数据安全性保护的过程:实现数据安全性保护的过程:

41、 用户或用户或DBA把授权决定告知系统,这是由把授权决定告知系统,这是由SQL的的GRANT和和 REVOKE语句来完成的。语句来完成的。 DBMS把授权的结果存入数据字典。把授权的结果存入数据字典。 当用户提出操作请求时,当用户提出操作请求时,DBMS根据授权定义进行检查,以决根据授权定义进行检查,以决 定是否执行操作请求。定是否执行操作请求。 刘安丰刘安丰() 30数据库原理及应用数据库原理及应用 授权:授权:SQL语言用语言用DRANT语句向用户授予操作权限。语句向用户授予操作权限。 一般格式:一般格式: GRANT GRANT , ON ON TO TO , WITH GRANT OP

42、TION;WITH GRANT OPTION; 功能:功能:将对指定操作对象的指定操作权限授予指定的用户。将对指定操作对象的指定操作权限授予指定的用户。 说明:说明: WITH GRANT OPTIONWITH GRANT OPTION子句:子句:若指定了该子句,则获得某种权限若指定了该子句,则获得某种权限 的用户还可以把该权限再授予别的用户;若没有指定该子句,的用户还可以把该权限再授予别的用户;若没有指定该子句, 则获得某种权限的用户只能使用该权限,不能传播该权限。则获得某种权限的用户只能使用该权限,不能传播该权限。 刘安丰刘安丰() 31数据库原理及应用数据库原理及应用 SELECT,IN

43、SERT,UPDATE,DELETE,ALL PRIVILEGESSELECT,INSERT,UPDATE,DELETE,ALL PRIVILEGES对象类型对象类型对对 象象 SELECT,INSERT,UPDATE,DELETE,ALL PRIVILEGESSELECT,INSERT,UPDATE,DELETE,ALL PRIVILEGESTABLETABLE属性列属性列 SELECT,INSERT,UPDATE,DELETE,ALTER, INDEX,ALL PRIVILEGES TABLETABLE基本表基本表 SELECT,INSERT,UPDATE,DELETE,ALL PRIVI

44、LEGESSELECT,INSERT,UPDATE,DELETE,ALL PRIVILEGESTABLETABLE视视 图图 CREATETABCREATETABDATABASEDATABASE数据库数据库 常见操作权限常见操作权限 用户的权限:用户的权限:对数据库可以有对数据库可以有建表建表(CREATETAB)(CREATETAB)的权限,该权的权限,该权 限属于限属于DBADBA,可由,可由DBADBA授予普通用户。基本表或视图的属主拥有对授予普通用户。基本表或视图的属主拥有对 该表或视图的一切操作权限。该表或视图的一切操作权限。接受权限的用户可以是接受权限的用户可以是一个或多个一个或多

45、个 具体用户,也可以是具体用户,也可以是PUBLIC(PUBLIC(全体用户全体用户) )。 刘安丰刘安丰() 32数据库原理及应用数据库原理及应用 例例1把查询把查询Student表权限授给用户表权限授给用户U1。 GRANT SELECT ON TABLE Student TO U1; 例例2把对把对Student表和表和Course表的全部权限授予用户表的全部权限授予用户U2和和U3。 GRANT ALL PRIVILIGES ON TABLE Student, Course TO U2,U3; 例例3把对表把对表SC的查询权限授予所有用户。的查询权限授予所有用户。 GRANT SELECT ON TABLE SC TO PUBLIC; 例例4把查询把查询Student表和修改学生学号的权限授给用户表和修改学生学号的权限授给用户U4。 GRANT UPDATE(Sno), SELECT ON TABLE Student TO U4; 例例5把对表把对表SC的的INSERT权限授予权限授予U5用户,并允许他再将此权用户,并允许他再将此权 限授予其他用户。限授予其他用户。 GRANT INS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论