《数据库原理第2章.ppt》由会员分享,可在线阅读,更多相关《数据库原理第2章.ppt(86页珍藏版)》请在三一办公上搜索。
1、数据库系统基础,1,数据库基础理论,石油大学(北京)计算机系朱瑛,数据库系统基础,2,第二章 关系数据库,一、关系模型的基本概念二、关系运算三、关系数据库标准语言SQL,数据库系统基础,3,一、关系的数学定义1.域域是值的集合。如,实数集合、姓名集合、职称集合、性别集合等等都是域。对于一个确定的域来说,总能判断某个值是否在此域中。,2.1 关系模型的基本概念,数据库系统基础,4,2.笛卡尔积例:给出下面三个域D1=教师名=张辉,李晓云,王东D2=性别=男,女D3=职称=副教授,讲师,助教则它们的笛卡儿积也是一个域,表示为:D1D2D3=(张辉,男,副教授),(张辉,男,讲师),(张辉,男,助教
2、),(张辉,女,副教授),(张辉,女,讲师),,数据库系统基础,5,(张辉,女,助教),(李晓云,男,副教授),(李晓云,男,讲师),(李晓云,男,助教),(李晓云,女,副教授),(李晓云,女,讲师),(李晓云,女,助教),(王东,男,副教授),(王东,男,讲师),(王东,男,讲师),(王东,男,助教),(王东,女,副教授),(王东,女,讲师),(王东,女,助教),数据库系统基础,6,2.关系笛卡儿积D1D2.Dn中的任一个子集,可以构成在n个域D1,D2,.,Dn上的一个关系。例如,R=(张辉,男,副教授),(李晓云,女,讲师),(王东,男,助教)就是上面提到的笛卡儿积D1D2D3中的一个关
3、系。关系也可以写成二维表的形式:,数据库系统基础,7,数据库系统基础,8,4.数据库中关系的性质属性必须是同质的,即同一属性的各个值应是同类型的数据;各属性的排列次序无关紧要;同一关系中不能有完全相同的元组;各元组的次序可以交换;任一属性必须是原子的,它不可再分。,数据库系统基础,9,二、关系模型在关系模型中,实体及实体之间的联系均用关系二维表格表示。关系模型由三部分组成:数据结构、关系操作集合、关系的完整性。,数据库系统基础,10,1.数据结构一个数据库文件由文件结构与记录数据两部分组成。前者称为关系的“型”或“关系框架”,后者称为关系的“值”。一个关系数据库可以包含一组关系,也可以只有一个
4、关系。定义一个关系数据库,就是对它所包含的所有关系框架进行描述。例如,图书管理数据库有三个关系,其关系模式如下:,数据库系统基础,11,读者登记:姓名借书证号单位,借书登记:借书证号总编号借阅日期,图书资料登记:图书号、总编号、分类号、书名、作者、出版社、价格1)定义字段字段名 类型 宽度姓名 字符 10借书证号 字符 8,数据库系统基础,12,单位 字符 18图书号 字符 10总编号 字符 10分类号 字符 10书名 字符 20作者 字符 10出版单位 字符 18价格 数值 8借阅日期 日期 82)定义关系读者(姓名,借书证号,单位),数据库系统基础,13,图书(图书号,总编号,分类号,书名
5、,作者,出版单位,价格)借阅(借书证号,总编号,借阅日期)说明:加下划线的字段名为主码;如果一个关系中的属性或属性组并非该关系的关键字(主码),但它们是另外一个 关系的关键字(主码),则称其为该关系的外关键字(外部码)。,数据库系统基础,14,2.关系操作关系操作采用集合操作,即操作的对象和结果都是集合。关系模型中常用的关系操作包括:选择、投影、连接、除、并、交、差等查询操作和增、删、改操作两大部分。查询的表达能力是其中最主要的部分。,数据库系统基础,15,3.关系的完整性关系模型提供了丰富的完整性控制机制,允许定义三类完整性:实体完整性、参照完整性、用户定义的完整性。其中实体完整性和参照完整
6、性是关系模型必须满足的完整性约束条件,应该由关系系统自动支持。1)实体完整性基本关系的主属性不能取空值。一个基本关系通常对应现实世界的一个实体集。例如,学生关系对应于学生的集合。,数据库系统基础,16,现实世界中实体是可以区分的,即它们具有某种唯一性标识。关系模型中由主码作为唯一性标识。主码不能取空值。因为主码取空值说明存在某个不可标识的实体。2)参照完整性若基本关系R中含有与另一基本关系S的主码Ks相对应的属性组F(F称为R的外部码),则对于R中每个元组F上的值必须为:或者取空值(F的每个属性值均为空值);或者等于S中某个元组的主码值。关系S的主码Ks和F定义在同一个(或一组)域上,基本关系
7、R,S不一定是不同的关系。,数据库系统基础,17,例如,职工关系(职工号,姓名,部门号)和部门关系(部门号,部门名称)是两个基本关系。职工关系的主码是职工号,部门关系的主码是部门号。在职工关系中,部门号是它的外部码。职工关系中每个元组的部门号取值允许有两种可能:取空值。这说明这个职工尚未分配到某个部门;若非空值,则部门号的值必须是部门关系中某个元组中的部门号值,表示此职工不可能分配到一个不存在的部门中,即参照的部门关系中一定存在一个元组,它的主码值等于职工关系中的外部码值。这就是参照完整性。,数据库系统基础,18,3)用户定义的完整性实体完整性和参照完整性用于任何关系数据库系统。用户定义的完整
8、性则是针对某一数据库的约束条件,由应用环境决定。它反映某一具体应用所涉及的数据必须满足的语义要求。,数据库系统基础,19,总之,关系模型具有如下特点:关系必须规范化。即关系模型中每一个关系模式都必须满足一定的要求。模型概念单一。即关系模型中,无论是实体还是实体间的联系都用关系表示。集合操作。即关系模型中,操作对象和结果都是元组的集合。,数据库系统基础,20,2.2关系运算,关系是由若干个元组组成,每个元组有若干个属性。关系的基本运算有两类:一类是传统的集合运算(并、交、差等);一类是专门的关系运算(选择、投影、联接等)有些查询需要几个基本运算的组合。,数据库系统基础,21,一、传统的集合运算1
9、.并关系R和关系S的并记为RS,结果仍为n目关系。由属于R或属于S的元组组成。2.交关系R和关系S的交记为RS,结果仍为n目关系。由既属于R又属于S的元组组成。3.差关系R和关系S的差记为R-S,结果仍为n目关系。由属于R而不属于S的元组组成。,数据库系统基础,22,数据库系统基础,23,4.广义笛卡儿积两个分别为n、m目的关系R和关系S的笛卡儿积RS是一个(n+m)目元组的集合。元组的前n个分量R的一个元组,后m个分量是S的一个元组。若R有k1个元组,S有k2个元组,则RS有k1k2个元组。,数据库系统基础,24,二、专门的关系运算1.选择从关系中找出满足给定条件的诸元组称为选择。这是从行的
10、角度进行运算,即水平方向抽取元组。经过选择运算得到的结果元组可以形成新的关系,其关系模式不变,但其中元组的数目小于等于原来关系中元组的个数,它是原关系的一个子集。SELECT WHERE,数据库系统基础,25,数据库系统基础,26,例1.从图书中找出书名是“数据库导论”的书籍。SELECT 图书 WHERE 书名=“数据库导论”,数据库系统基础,27,例2.从图书中找出由高等教育出版社出版的,单价不超过20元的书籍。SELECT 图书 WHERE 出版单位=“高等教育出版社”AND 单价=20,数据库系统基础,28,2.投影从关系模式中挑选若干属性组成新的关系称为投影。这是从列的角度进行的运算
11、,相当于对关系进行垂直分解。经过投影运算得到一个新关系,其关系模式所包含的属性个数比原关系少,或者属性的排列顺序不同。PROJECT(属性1,属性2,.),数据库系统基础,29,例3.从图书中列出所有书的书名、作者、出版社、单价。PROJECT 图书(书名,作者,出版单位,单价),数据库系统基础,30,例4.从图书中找出藏书所涉及的所有出版社。PROJECT 图书(出版单位),数据库系统基础,31,3.联接将两个关系模式的属性名拼接成一个更宽的关系模式,生成新的关系中包含满足联接条件的元组。运算过程是通过联接条件来控制的,联接条件中将出现不同关系中的公共属性名,或者具有相同语义、可比的属性。联
12、接是对关系的结合。JOIN AND WHERE,数据库系统基础,32,联接运算比较费时间,尤其是在包括许多元组的关系之间联接更是如此。设关系R和S分别有m和n个元组,R与S的联接过程要访问mn个元组。先从关系R中的第一个元组开始,依次与关系S的各元组比较,符合条件的元组首尾相连纳入新关系,一轮共进行n次比较;再用关系R的第二个元组与关系S的各元组扫描,共需进行m轮扫描。如果m=500,n=50,关系R和关系S的联接过程需要进行25000次存取。由此可见,查询时应,数据库系统基础,33,考虑优化,以便提高查询效率。如果有可能,应当首先进行选择运算,使关系中元组个数尽量减少,能投影的先投影,使关系
13、中属性个数减少,然后再进行联接。,数据库系统基础,34,数据库系统基础,35,例5.根据表2.1和表2.2,查看借书证号为“160001”所借书的详情。JOIN 借阅AND 图书 WHERE 借阅(总编号)=图书(总编号)AND 借阅(借书证号)=“160001”,数据库系统基础,36,例6.根据表2.2和表2.3,查看借了书的读者的详情。R1=PROJECT 借阅(借书证号)R2=JOIN R1 AND 读者 WHERE R1(借书证号)=读者(借书证号)说明:联接过程中去掉重复属性的等值联接称为自然联接。,数据库系统基础,37,综上所述,关系数据库有如下特点:数据库中的全部数据及其相互联系
14、都被组织成关系(即二维表)的形式。关系数据库提供一种完备的高级关系运算,支持对数据库的各种操作。关系模型的逻辑结构和相应的操作完全独立于数据存储方式,具有高度的数据独立性,应用程序完全不必关心物理存储细节。关系模型有严格的数学理论,使数据库的研究建立在比较坚实的数学基础上。,数据库系统基础,38,2.3关系数据库标准语言,一、SQL概貌及其特点SQL是结构化查询语言(Structured Query Language)的缩写,它包括查询、定义、操纵和控制四个部分,是一种功能齐全的数据库语言。SQL的主要特点是:,数据库系统基础,39,一体化两种使用方式,统一的语法结构。高度非过程化。语言简洁,
15、易学易用。,数据库系统基础,40,SQL支持关系数据库三级模式结构,如图所示,用户,外模式,模式,存储,SQL,视图,V1,视图,V2,基本表,B1,基本表,B2,基本表,B3,基本表,B4,存储文件,S1,存储文件,S2,存储文件,S3,存储文件,S4,数据库系统基础,41,说明:基本表(Base table):本身独立存在的表,即实际存储在数据库中的表,而不是从其它表导出来。基本表可以有若干个索引。一个基本表可以跨一个或多个存储文件,而一个存储文件可以存放一个或多个基本表。一个存储文件与外存储器上的一个物理文件相对应。存储文件和相关索引组成了关系的内模式,即存储模式。基本表的集合组成关系模
16、式,即全局概念模式(数据的整体逻辑结构)。,数据库系统基础,42,视图(View):从一个或几个基本表或其它视图导出来的表。视图本身并不独立存储数据,系统只保存视图的定义。访问视图时,系统将按照视图的定义从基本表中存取数据。由此可见,视图是个虚表,它动态地反映基本表中的当前数据,这与数据的静态复制不同。从用户的观点出发,基本表和视图都是关系,用SQL一样访问。视图可以看作用户按照需要定义的外模式,即用户的局部数据逻辑结构。,数据库系统基础,43,二、SQL数据定义功能SQL的数据定义功能是指定义数据库的结构,包括三部分:定义基本表定义视图定义索引,数据库系统基础,44,1、定义基本表定义一个基
17、本表就是创建一个基本表,对表名(关系名称)及它所包括的各个属性名及其数据类型作出具体规定。CREATE TABLE 表名(属性名1 类型NOT NULL,属性名2 类型NOT NULL.)其它参数;,数据库系统基础,45,2、修改基本表修改基本表是指对已经定义的基本表增加新的属性名(列),扩展关系模式。ALTER TABLE 表名 ADD 列名 类型;3、删除基本表删除基本表是把表的定义、表中的数据、其上的索引以及以该基本表为基础所建立的所有视图全部取消,并释放所占用的内存空间。DROP TABLE 表名;,数据库系统基础,46,4、建立索引为了提高数据的检索效率,数据库管理员可以根据实际应用
18、情况为一个基本表建立若干个索引。CREATE UNIQUE INDEX 索引名 ON基本表名(列名次序,列名次序.)其它参数;5、删除索引删除索引的同时把有关索引的描述也从数据字典中删去。DROP INDEX 索引名;,数据库系统基础,47,三、SQL数据操纵功能1、SQL数据查询格式:SELECT 目标列 FORM 基本表(或视图)WHERE 条件表达式GROUP BY 列名1HAVING 内部函数表达式 ORDER BY 列名2ASC/DESC;作用:根据WHERE子句中的条件表达式,从基本表(或视图)中找出满足条件的元组,按,数据库系统基础,48,子句中的目标列,选出元组中的分量形成结果
19、表。如果有ORDER子句,则结果表要根据指定的列名2按升序或降序排列。GROUP子句将结果按列名1分组,每个组产生结果表中的一个元组,通常在每组中用库函数,分组的附加条件用HAVING短句给出,只有满足内部函数表达式的元组才予输出。说明:在条件表达式中除了常用的比较运算符外,可用的逻辑运算符和谓词有:AND 逻辑与;OR 逻辑或;NOT 逻辑非;IN 包含;NOT IN 不包含;EXISTS 存在;,数据库系统基础,49,查询类型:简单查询:只涉及一个关系。联接查询:涉及两个或几个关系嵌套查询:是指在SELECT-FROM-WHERE查询模块内部再嵌入另一个查询块,称为子查询,并允许多层嵌套。
20、使用库函数查询集合运算:求一个SELECT子查询的结果与另一个SELECT子查询结果的并、差、交。,数据库系统基础,50,举例,以一个简单的图书管理关系数据模型为基础,介绍SQL查询语句的使用方法。设,图书管理关系数据模型包括以下三个关系模式:图书(总编号,分类号,书名,作者,出版社,单价)读者(借书证号,姓名,性别,单位,职称,地址)借阅(借书证号,总编号,借阅日期,备注),数据库系统基础,51,1)简单查询例1:找出读者张平所在单位。SELECT 姓名,单位 FROM 读者 WHERE 姓名=“张平”;例2:查找高等教育出版社的所有图书及单价,结果按单价降序排列。SELECT 书名,出版单
21、位,单价 FROM 图书 WHERE 出版单位=“高等教育出版社”ORDER BY 单价 DESC;,数据库系统基础,52,2)联接查询例3:查找所有借阅了图书的读者姓名及所在单位。SELECT DISTINCT 姓名,单位 FROM 读者,借阅 WHERE 读者.借书证号=借阅.借书证号;说明:该查询的过程是:首先从读者中取出一个元组的借书证号与借阅中各元组的借书证号逐一比较,如果相等则输出姓名和单位。一轮结束后,继续下一轮的比较。,数据库系统基础,53,例4:查找价格在20元以上已借出的图书,结果按单价降序排列。SELECT*FROM 图书,借阅 WHERE 图书.总编号=借阅.总编号 A
22、ND 单价=20 ORDER BY 单价 DESC;说明:这里SELECT*代表图书和借阅两个关系联接后的所有属性。,数据库系统基础,54,3)嵌套查询例5:找出借阅了“程序设计”一书的读者姓名及所在单位。SELECT 姓名,单位 FROM 读者 WHERE 借书证号 IN(SELECT 借书证号 FROM 借阅 WHERE 总编号 IN SELECT 总编号 FROM 图书 WHERE 书名=“程序设计”);,数据库系统基础,55,说明:在执行嵌套查询时,每一个内层查询是在上一级外层处理之前完成的,即外层用到内层的查询结果。其查询过程是:从图书中找出书名为“程序设计”的书,并列出该书的总编号
23、。从借阅中列出借书证号,其条件是借阅.总编号出现在步骤列出的图书.总编号之中。从读者中列出姓名、单位,其条件是读者.借书证号出现在步骤列出的借阅.借书证号之中。,数据库系统基础,56,4)使用库函数查询SQL提供了常用的统计函数称为库函数。这些库函数使检索功能进一步增强。它们的自变量是表达式的值,是按列计算的,最简单的表达式就是属性,也就是列。SQL库函数有:计数函数 COUNT(*)计算元组个数;COUNT 对列的值计算个数;求和函数 SUM 对某一列的值求和(属性必须是数值类型);,数据库系统基础,57,计算平均值 AVG 对某一列的值计算平均值(属性必须是数值类型);求最大值 MAX 找
24、出一列值中的最大值;求最小值 MIN 找出一列值中的最小值;例6:求藏书总册数。SELECT“藏书总册数:”,COUNT(*)FROM 图书;例7:求科学出版社出版图书的最高价格、最低价格、平均价格。SELECT“最高:”,MAX(单价),“最低:”,MIN(单价),“平均:”,AVG(单价)FROM 图书 WHERE 出版单位=“科学出版社”;,数据库系统基础,58,5)集合运算关系是元组集合,可以进行传统的集合运算。集合运算包括并UNION、差MINUS、交INTERSECTION,求一个SELECT子查询的结果与另一个SELECT子查询结果的并、差、交。集合运算是以整个元组为单位的运算,
25、因此,这些子查询目标的结构与类型必须互相匹配。集合运算结果将去掉重复元组。,数据库系统基础,59,例8:设有一校友通讯录关系,包含姓名、职称和单位三个属性,相应的数据定义与读者关系一致。求校友与读者中具有教授、副教授职称人员的并集。SELECT 姓名,职称,单位 FROM 读者 WHERE 职称 IN(“教授”,“副教授”)UNION SELECT 姓名,职称,单位 FROM 校友WHERE 职称 IN(“教授”,“副教授”);,数据库系统基础,60,2.数据维护SQL的数据维护语句包括修改、删除、和插入三类。1)修改(UPDATE)格式:UPDATE 基本表 SET 列名=表达式,列名=表达
26、式.WHERE 条件表达式;作用:修改指定基本表中满足WHERE子句条件表达式的元组,把这些元组按SET子句中的表达式修改相应列上的值。若不写WHERE子句,则对所有元组修改。,数据库系统基础,61,例1:将所有图书的单价上调5%。UPDATE 图书 SET 单价=单价*1.05;例2:将借了图书总编号为“44698088”读者的职称改为“教授”。UPDATE 读者 SET 职称=“教授”WHERE“44698088”=(SELECT 总编号 FORM 借阅 WHERE 借阅.借书证号=读者.借书证号);这是一个具有子查询的修改。其过程是:先从借阅中取出借书证号,再从读者中取出借书证号,用借阅
27、.借书证号逐一与读者.借书证号进行比较,若为真,则从借阅中取出总编号,判断是否等于“44698088”,如果结果为真,则修改该读者的职称。,数据库系统基础,62,2)插入(INSERT)格式1:INSERT INTO 基本表(列名,列名.)VALUES(常量,常量.);格式2:INSERT INTO 基本表(列名,列名.)子查询;作用:第一种格式是向具体元组插入常量数据;第二种格式是把从子查询的结果输入到另一个关系中去。前者进行单元组(一行)插入,后者一次可插入多个元组。若基本表中有些列在插入语句中没有出现,则,数据库系统基础,63,这些列的值去空值HULL。当然在基本表定义中说明了NOT N
28、ULL的列在插入时不能取HULL。若插入语句中没有指出列名,则新元组必须在每个列上均有值。例3:向图书基本表中插入一个元组的部分字段。INSERT INTO 图书 VALUES(“446943”,“TP138”,“计算机基础”,“杨大华”,“高等教育出版社”,17.10);,数据库系统基础,64,例4:建立一个各单位借阅图书情况统计基本表,名称为DW_JSH,每隔一段时间,如一个月,向此基本表里追加一次数据。CREATE TABLE DW_JSH(单位 CHAR(20),借书人数 SMALLINT,借书次数 SMALLINT);INSERT INTO DW_JSH(单位,借书人数,借书人次)S
29、ELECT 单位,COUNT(DISTINCT 借书证号),COUNT(总编号)FROM 借阅,读者 WHERE 读者.借书证号=借阅.借书证号 GROUP BY 单位,数据库系统基础,65,3)删除(DELETE)格式:DELETE FROM 基本表 WHERE 条件表达式;作用:从指定基本表中删除满足条件的那些元组。没有WHERE子句时表示删去此基本表中的全部元组,但此基本表的定义仍在数据字典中。注意:删除的单位是元组,不是元组的部分属性。如果要删除属性,需要用UPDATE语句将某个元组的相应属性修改成空值。若想,数据库系统基础,66,从结构上取消某个属性,这是属于修改关系模式的问题,属于
30、数据定义操作而不是数据维护。例5:删除借书证号“160003”所借总编号为“445502”的借阅登记。DELETE FROM 借阅 WHERE 借书证号=“160003”AND 总编号=“445502”;例6:删除借书证号以16开头的所有读者登记和借阅登记。DELETE FROM 读者 WHERE 借书证号=“16%”;DELETE FROM 借阅 WHERE 借书证号=“16%”;删除同名属性时也要注意保持数据的一致性。,数据库系统基础,67,四、视图数据库系统中的基本表包含多个用户共享的数据,某一个具体应用可能只使用其中一部分数据,基本表的格式也可能不满足用户要求,可以从一个或几个基本表以
31、及已有的视图中导出适合具体应用的视图,用户对视图的查询与基本表一样。从用户观点看,基本表和视图都是关系。但由于视图是虚表,它并不对应一个存储的数据文件,因此通过视图对数据的修改有受到一定的限制。,数据库系统基础,68,建立视图有两个作用:可简化查询命令,即在定义视图时已经对数据作了一定范围的限定。可限制某些用户的查询范围,即通过对用户授权体现出来。,数据库系统基础,69,1、定义视图格式:CREATE VIEW 视图名(字段名,字段名.)AS子查询 WITH CHECK OPTION;说明:1)执行CREATE VIEW的结果是把视图的定义存入数据字典中。定义中的SELECT子句并不执行。2)
32、定义中的任选项WITH CHECK OPTION 表示对视图进行UPDATE和INSERT操作时要保证修改或插入的行满足视图定义中的谓词条件。,数据库系统基础,70,例1:建立石油大学经济管理学院的读者视图,名称为GL_READER。CREATE VIEW GL_READER AS SELECT 姓名,性别,职称,地址 FROM 读者WHERE 单位=“石油大学经济管理学院”WITH CHECK OPTION;说明:由于所建视图的属性名与子查询的SELECT子句相同,可省略不写。其WITH CHECK OPTION 的作用是当通过视图修改或插入元组时,元组必须满足视图定义的条件。,数据库系统基
33、础,71,例2:建立各个单位当前借阅图书情况的简单统计视图,名称为DW_READER。CREATE VIEW DW_READER(单位,借书人数,借阅人次)SELECT 单位,COUNT(DISTINCT 借书证号),COUNT(总编号)FROM 借阅,读者 WHERE 读者.借书证号=借阅.借书证号 GROUP BY 单位;,数据库系统基础,72,2、删除视图格式:DROP VIEW 视图名作用:从数据字典中删除视图的定义,由此视图导出的其它视图也将自动删除。说明:若导出此视图的基本表被删除,则此视图也将自动删除。例3:DROP VIEW GL_READER;,数据库系统基础,73,3、查询
34、视图视图的查询实际上是对基本表的查询,因此基本表的变化可以反映到视图上。例4:找出借书人数超过20人的单位。SELECT 单位,借书人数 FROM DW_READER WHERE 借书人数=20;,数据库系统基础,74,4、更新视图对视图的更新最终要转换成对基本表的更新(这里的更新,指INSERT、UPDATE和DELETE三类操作)。但并非所有视图都可以更新。若一个视图是从单个基本表导出,并且只是去掉了基本表的某些行和某些列(不包括码),我们称这类视图为行列子集视图。行列子集视图是可以更新的。,数据库系统基础,75,例5:在视图GL_READER中插入一个新元组。INSERT INTO GL
35、_READER VALUES(“杨阳”,“男”,“工程师”,“北京大学计算机系”);注意:并非由单个基本表导出的视图都可以更新,DB2系统对此有些规定:若视图的字段是来自字段表达式和常数,则不允许对此视图执行INSERT和UPDATE操作,但允许执行DELETE操作。若视图的字段是来自库函数,则此视图不允许更新。,数据库系统基础,76,若视图的定义中有GROUP BY子句,则此视图不允许更新。若视图的定义中有DISTINCT任选项,则此视图不允许更新。若视图的定义中有嵌套查询,并且嵌套查询的FROM子句中涉及的表也是导出该视图的基本表,则此视图不允许更新。若视图是由两个以上的基本表导出的,则此
36、视图不允许更新。一个不允许更新的视图上定义的视图也不允许更新。,数据库系统基础,77,视图有如下优点:视图对于数据库的重构造提供了一定程度的逻辑独立性。简化了用户观点。使用户把注意力集中在他所关心的数据上。视图机制使不同的用户能以不同的方式看待同一数据。视图机制对机密数据提供了自动的安全功能。,数据库系统基础,78,五、SQL数据控制功能SQL数据控制功能是指控制用户对数据的存取权利。数据库管理系统必须能:把授权的决定告知系统,这是由SQL的GRANT和REVOKE语句来完成。把授权的结果存入数据字典。当用户提出操作请求时,根据授权情况进行检查,以决定是执行操作请求还是拒绝之。,数据库系统基础
37、,79,1、授权格式:GRANT 权力,权力.ON 对象类型 对象名 TO 用户,用户.WITH GRANT OPTION;作用:把对指定对象的某些操作权力授予若干用户。说明:对不同类型的操作对象可有不同的操作权力,可以用表来说明。,数据库系统基础,80,数据库系统基础,81,例1:把查询和更新基本表读者的权力授予所有用户。GRANT SELECT,UPDATE ON TABLE 读者 TO PUBLIC;说明:系统为了防止滥用权力,WITH GRANT OPTION短语不能与PUBLIC同时使用。例2:把修改职称和查询视图GL_READER的权力授予张平。GRANT UPDATE(职称),S
38、ELETE ON TABLE GL_READER TO 张平;,数据库系统基础,82,2、回收权力格式:REVOKE 权力,权力.ON 对象类型 对象名 FROM 用户,用户.;例3:把用户张平修改职称的权力收回。REVOKE UPDATE(职称)ON TABLT GL_READER FROM 张平;例4:把用户杜明查询基本表图书的权力收回。REVOKE SELECT ON TABLE 图书 FROM 杜明;,数据库系统基础,83,本章小结,这一章介绍了关系模型。关系是一张二维表,表中的一 行是关系的一个元组,表中的一 列为关系中一个属性的具体值。应当掌握关系模型的特点和关系运算包括传统的集合
39、运算(并、交、差)和专门的关系运算(选择、投影、联接)。此外,关键字是一个很重要的概念,它是关系之间建立联系的手段。,数据库系统基础,84,这一章还介绍了关系数据库的标准语言,结构化查询语言SQL。以一个图书管理关系数据模型为基础,通过示例讲解SQL的使用方法。SQL的查询功能十分灵活,用SELECT FROM WHERE可以实现简单查询、联接查询、嵌套查询、使用库函数查询,并且能够进行集合运算。SQL支持关系数据库的三级模式结,数据库系统基础,85,构,它的体系结构体现了数据库的三级结构、两级独立的特点。SQL是一种功能齐全的数据库语言,它包括数据的查询、定义、操纵和控制四种功能。SQL数据定义功能包括:定义基本表、定义视图、定义同义词和建立索引。SQL数据操纵功能包括插入数据、更新数据和删除数据。SQL数据控制功能包括用户授权、回收权限。,数据库系统基础,86,作业,1,2,3,
链接地址:https://www.31ppt.com/p-6296390.html