数据库技术基础chp5课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《数据库技术基础chp5课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库技术 基础 chp5 课件
- 资源描述:
-
1、第第5 5章章 数据库管理数据库管理第第5章章 数据库管理数据库管理5.1 学习目标学习目标5.2 视图视图5.3 索引索引5.4 安全性安全性5.5 完整性完整性5.6 系统表系统表5.7 小结小结5.1 学习目标学习目标v学完本章后,读者应具备以下能力:理解视图的概念和作用。能建立视图,会使用视图实现数据的逻辑独立性。理解索引的概念和作用。掌握建立索引的一般规则,能利用索引改善查询性能。理解数据库的操作权限,掌握授权的方法。理解角色的概念,能利用角色简化权限管理。理解参照完整性的概念以及对SQL语句的影响。基本掌握用户定义完整性约束的方法。第第5章章 数据库管理数据库管理5.1 学习目标学
2、习目标5.2 视图视图5.3 索引索引5.4 安全性安全性5.5 完整性完整性5.6 系统表系统表5.7 小结小结5.2 视图视图v视图视图是从一个或多个表中导出的表,用户可以像对表一样对它进行查询,在SELECT语句中可以出现表的地方都可以出现视图。v视图是一个虚表虚表,在数据库中只存储视图的定义(一个SELECT语句)而不存放视图的数据,这些数据仍存放在导出视图的基本表中,直到用户使用视图时才去执行视图的定义,求出数据。5.2 视图(续)视图(续)5.2.1 建立视图建立视图 5.2.2 删除视图 5.2.3 查询视图 5.2.4 更新视图 5.2.5 视图的作用5.2.1 建立视图建立视
3、图vSQL语言用CREATE VIEW命令建立视图,其一般格式为:CREATE VIEW (,)AS WITH CHECK OPTION;v组成视图的列名可以全部省略或者全部指定。5.2.1 建立视图(续)建立视图(续)v下列三种情况下必须明确指定组成视图的所有列名:某个目标列不是单纯的列名,而是聚集函数或列表达式。多表连接时选出了几个同名列作为视图的列。需要在视图中为某个列启用更合适的名字。v子查询可以是任意复杂的SELECT语句,但通常不允许含有ORDER BY子句和DISTINCT短语。vWITH CHECK OPTION表示,对视图进行UPDATE和INSERT操作时,要保证更新后的元
4、组和新插入的元组满足视图定义中子查询的WHERE子句中的条件表达式。5.2.1 建立视图(续)建立视图(续)例例5.1 建立计算机学院学生的视图。CREATE VIEW Student_CS AS SELECT*FROM Student WHERE Sdept=计算机学院 例5.1在表Student上建立了视图Student_CS,但是没有明确指出视图Student_CS的列名,则构成视图的列与SELECT子句相同。即Student_CS有Sno、Sname、Sgender、Sage和Sdept共5个列,这5个列分别对应Student的Sno、Sname、Sgender、Sage和Sdept列
5、。CREATE VIEW语句的执行结果是在DBMS的数据字典中保存了视图名和SELECT语句。5.2.1 建立视图建立视图(续续)例例5.2 建立英语课(1156)成绩单的视图。CREATE VIEW English_Grade(Sno,Sname,Grade)ASSELECT Student.Sno,Sname,GradeFROM Student JOIN SC ON Student.Sno=SC.Sno AND SC.Cno=1156例2在表Student和SC上建立了视图English_Grade。它有3个列:Sno、Sname和Grade,分别对应表Student的Sno列、Sname
6、列和表SC的Grade列。因为SELECT语句中包含了Student表与SC表的同名列Sno,所以必须在视图名后面明确说明视图的各个列名。5.2.1 建立视图(续)建立视图(续)例例5.3 定义一个反映学生出生年份的视图。CREATE VIEW BT_S(Sno,Sname,Sbirthday)ASSELECT Sno,Sname,datepart(getdate(),year)SageFROM Student由于Student表的Sage列存放了学生的年龄,没有存放其出生年份,例5.3定义的视图由学号、学生姓名和学生出生年份三个列组成。getdate()返回系统日期,datepart函数求出
7、日期中的年份。由于SELECT子句中出现了表达式,则必须指明视图的列名。视图不仅可以建立在一个或多个表上,也可以建立在一个或多个已定义好的视图上,或建立在表与视图上。5.2.1 建立视图(续)建立视图(续)例例5.4 建立英语课的成绩在80分以上的学生的视图。CREATE VIEW English_Grade_80ASSELECT Sno,Sname,GradeFROM English_GradeWHERE Grade=80已经定义过的视图可以和表一样使用。例5.4中的FROM子句中出现了在例5.2定义过的视图English_Grade,因此,视图English_Grade_80是建立在视图E
8、nglish_Grade之上。5.2 视图视图 5.2.1 建立视图 5.2.2 删除视图删除视图 5.2.3 查询视图 5.2.4 更新视图 5.2.5 视图的作用5.2.2 删除视图删除视图v当不再需要一个视图时,可以删除它,语句格式为:DROP VIEW 例例5.5 删除视图Student_CS。DROP VIEW Student_CSDROP VIEW语句执行后,DBMS从数据字典中删除视图Student_CS和定义它的SELECT语句。例例5.6 删除视图English_Grade。DROP VIEW English_Grade5.2 视图视图 5.2.1 建立视图 5.2.2 删除
9、视图 5.2.3 查询视图查询视图 5.2.4 更新视图 5.2.5 视图的作用5.2.3 查询视图查询视图v定义视图以后,就可以像对表一样对视图进行查询。例例5.7 查找计算机学院年龄小于19岁的学生的姓名。视图Student_CS包含有计算机学院全体学生的信息,可以直接对视图进行查询。SELECT SnameFROM Student_CSWHERE Sage 19 5.2.3 查询视图(续)查询视图(续)v 对视图进行查询时,DBMS要进行视图消解工作,把对视图的查询转换为对基本表基本表(定义视图时涉及的表)的查询,即把对视图查询的一个SQL语句,转换为对基本表查询的SQL语句。v 视图消
10、解的基本过程分为个步骤:从数据字典中取出定义视图的子查询(SELECT语句)。用子查询的FROM子句替换要执行的SELECT的FROM子句。根据定义视图时,视图的列和基本表的列的对应关系,映射要执行的SELECT子句的列到基本表的列。将定义视图的子查询的WHERE子句的条件表达式合并到要执行的SELECT语句的WHERE子句中,逻辑关系是与关系。5.2.3 查询视图(续)查询视图(续)SELECT Sno,SageFROM Student_CSWHERE Sage 19 SELECT*FROM StudentWHERE Sdept=计算机学院SELECT Student.Sno,Student
11、.SageFROM StudentWHERE Sage=80这时,DBMS无法像前面例5.7那样得到一个等价的SELECT语句。DBMS采用第二种视图消解方法。先执行定义视图S_G的SELECT语句,得到了一个结果,把它作为一个临时表tmp_S_G,然后将上面的查询语句改写为:SELECT*FROM tmp_S_GWHERE Gavg=80同样可以得到正确结果。因此,我们可以把视图当作表一样进行查询,而不必关心DBMS如何进行处理。5.2 视图视图 5.2.1 建立视图 5.2.2 删除视图 5.2.3 查询视图 5.2.4 更新视图更新视图 5.2.5 视图的作用5.2.4 更新视图更新视图
12、v更新视图是指向视图中插入(INSERT)、删除(DELETE)和更新(UPDATE)数据。v对视图的更新操作也要通过视图消解转换为对表的更新操作。v不是所有的视图都是可更新的,因为有些视图的更新不能唯一有意义地转换成对相应表的更新。5.2.4 更新视图(续)更新视图(续)例如,例5.8定义的视图S_G是由“学号”和“平均成绩”两个属性列组成的,其中“平均成绩”一项是由Student表中对元组分组后计算平均值得来的。如果我们想把视图S_G中学号为2007012的学生的平均成绩改成90分,SQL语句如下:UPDATE S_GSET Gavg=90WHERE Sno=2007012但这个对视图的更
13、新是无法转换成对表SC的更新的,因为系统无法修改各科成绩,以使平均成绩成为90。所以S_G视图是不可更新的。5.2.4 更新视图(续)更新视图(续)v 行列子集视图行列子集视图 若一个视图是从单个表导出的,并且只是去掉了表的某些行和某些列,但保留了主码,则这类视图称为行列子集视图。v 应该指出的是,不可更新的视图与不允许更新的视图是两个不同的概念。前者指理论上已证明其是不可更新的视图。后者指实际系统中不支持其更新,但它本身有可能是可更新的视图。v 对于行列子集视图的更新,DBMS也要进行视图消解,把对视图的更新转换为对基本表的更新。5.2.4 更新视图(续)更新视图(续)例例.9 将计算机学院
14、的学生马翔的姓名改为马飞翔。UPDATE Student_CSSET Sname=马飞翔WHERE Sname=马翔DBMS进行视图消解后,得到下面的语句:UPDATE StudentSET Sname=马飞翔WHERE Sname=马翔 AND Sdept=计算机学院 5.2.4 更新视图(续)更新视图(续)例例5.10 计算机学院增加一个新生,学号为2007015,姓名为赵新,年龄为20岁。INSERTINTO Student_CS(Sno,Sname,Sage)VALUES(2007015,赵新,20)转换后的更新语句为:INSERTINTO Student(Sno,Sname,Sage
15、)VALUES(2007015,赵新,20)5.2.4 更新视图(续)更新视图(续)例例5.11 删除计算机学院学生赵新,学号是2007015。DELETEFROM Student_CSWHERE Sno=2007015转换为对表的删除操作:DELETEFROM StudentWHERE Sno=2007015 AND Sdept=计算机学院5.2.4 更新视图(续)更新视图(续)v要防止用户通过视图对数据库进行增删改时有意或无意地对不属于视图范围内(不满足子查询的过滤条件)的基本表数据进行操作,则在视图定义时要加上WITH CHECK OPTION子句。WITH CHECK OPTION短语
16、相当于在视图上施加了一个元组级约束条件,更新前后的元组必须满足定义视图的子查询的过滤条件。若操纵的元组不满足条件,则拒绝执行该操作。5.2.4 更新视图(续)更新视图(续)例例5.12 建立计算机学院学生的视图,要求进行更新操作前后的元组要保证满足视图的过滤条件(即Sdept列上的值是计算机学院)。CREATE VIEW Student_CSASSELECT*FROM StudentWHERE Sdept=计算机学院WITH CHECK OPTION由于在定义Student_CS视图时加上了WITH CHECK OPTION子句,所以以后对该视图进行插入、修改时,DBMS会自动检查插入的元组和
17、修改后的元组在Sdept列上的值是否等于计算机学院。例如,DBMS会拒绝执行下面的对视图进行修改的SQL语句。INSERTINTO Student_CS(Sno,Sname,Sage)VALUES(2007015,赵新,20)-新插入的元组在Sdept的值不等于计算机学院 UPDATE Student_CSSET Sdept=环境学院 -试图将Sdept的值由计算机学院更改为环境学院WHERE Sno=20070125.2 视图视图 5.2.1 建立视图 5.2.2 删除视图 5.2.3 查询视图 5.2.4 更新视图 5.2.5 视图的作用视图的作用5.2.5 视图的作用视图的作用v视图能够
18、简化用户的操作视图能够简化用户的操作v视图可以减少冗余数据视图可以减少冗余数据v视图对重构数据库提供了一定程度的逻辑独立性视图对重构数据库提供了一定程度的逻辑独立性v视图能够对机密数据提供安全保护视图能够对机密数据提供安全保护5.2.5 视图的作用(续)视图的作用(续)例如,将学生关系拆分为SX和SY两个关系:Student(Sno,Sname,Ssex,Sage,Sdept)SX(Sno,Sname,Sage)SY(Sno,Ssex,Sdept)这时,表Student为SX表和SY表自然连接的结果。如果建立一个视图Student:CREATE VIEW Student(Sno,Sname,S
19、sex,Sage,Sdept)ASSELECT SX.Sno,SX.Sname,SY.Ssex,SX.Sage,SY.SdeptFROM SX,SYWHERE SX.Sno=SY.Sno;尽管数据库的逻辑结构改变了,但应用程序并不必修改。当然,应用程序中修改数据的语句可能仍会因表结构的改变而改变。第第5章章 数据库管理数据库管理5.1 学习目标学习目标5.2 视图视图5.3 索引索引5.4 安全性安全性5.5 完整性完整性5.6 系统表系统表5.7 小结小结5.3 索引索引1.1 学习目标1.2 数据库系统的定义1.3 数据库系统的特点 123图5.2 图书目录和图书的关系5.3 索引(续)索
20、引(续)5.3.1 索引的基本概念索引的基本概念 5.3.2 索引的建立和维护索引的建立和维护5.3.1 索引的基本概念索引的基本概念v索引的定义索引的定义 索引是一个独立的、物理的数据库结构,基于表的一列或多列而建立,按照列值从小到大或从大到小排序,提供了一个新存取路径。20070122007014200711320072562007278SnoSnameSgenderSageSdept2007012马翔男19计算机学院2007113刘大方男18管理学院2007256史玉明女19管理学院2007278龚兵男19管理学院2007014张晓敏女18计算机学院图5.3 建立在表Student的列S
21、no上的索引5.3.1 索引的基本概念(续)索引的基本概念(续)图5.3的左面给出了在表Student中学号列上建立的索引,索引项的值按照从小到大的次序排序。表本身提供了一个存取路径,即顺序访问,按照元组存放的先后顺序逐个访问每个元组,2007012、2007113、2007256索引提供了另外一个存取路径,顺序访问索引,读出一条索引后,再根据指针读取表中的元组。按照索引提供的访问路径,访问元组的次序为2007012、2007014、2007113SnoSnameSgenderSageSdept2007012马翔男19计算机学院2007113刘大方男18管理学院2007256史玉明女19管理学
22、院2007278龚兵男19管理学院2007014张晓敏女18计算机学院0140121132562781130145.3.1 索引的基本概念(续)索引的基本概念(续)图5.4 树形式的索引图5.3中以线性表(数组)的形式表示索引。实际上,在数据库中,索引往往被组织成一棵B+树。在B+树中,所有的码都出现在B+树的叶子节点中,并按照码值从小到大的顺序组织成了一个链表。非叶子节点由n个码和n+1个指针组成,码和指针的排列次序为P0,K1,P1,K2,Pn,Kn,K1K2Kn,P0,P1,Pn指向了n+1个节点,指针Pi-1指向节点中的每个码的值都小于等于Ki。B+树的具体内容请读者参阅“数据结构”或
23、“数据库原理”的相关书籍。图5.3的索引被组织成一个2阶B+树的形式如图5.4(为了节省空间,节点中的码只给出了后3位)。B+树索引提供了另外一个存取路径,可以快速地定位表中的某个元组。例如,要读取元组2007014,首先在根节点中查找,然后根据指针P0,找到最左面的叶子节点,最后,根据叶子节点的指针,读取所需要的元组。B+树是一棵平衡树,从根节点到任何一个叶子节点的路径长度相同。因此,假设B+树的深度为L,读取表中任何一个元组需要读B+树中的L个节点。5.3.1 索引的基本概念(续)索引的基本概念(续)v索引的分类索引的分类 按照表中建立索引的那一列(或列组合)中的数据是否各不相同,可以将索
24、引分为唯一索引(UNIQUE)和非唯一索引(NOT UNIQUE)。按照索引的结构,可以将其划分为两大类,聚簇索引(Clustered Index)和非聚簇索引(Nonclustered index)。聚簇索引要求将表中的元组与索引键值以同样的物理顺序存储,非聚簇索引则无此要求。聚簇索引能提高某些类型的查询效率。每个表最多只能有一个聚簇索引。5.3.1 索引的基本概念(续)索引的基本概念(续)SnoSnameSgenderSageSdept2007012 马翔男19计算机学院2007113 刘大方 男18管理学院2007256 史玉明 女19管理学院2007278 龚兵男19管理学院20070
25、14 张晓敏 女18计算机学院student计算机学院管理学院图5.5 非唯一索引5.3.1 索引的基本概念(续)索引的基本概念(续)v建立索引的原则建立索引的原则 值得建立索引:记录有一定规模,而查询只局限于少数记录。索引用得上:索引列在WHERE子句中频繁使用。通常,下列情况需要在表中的某一列或某些列上建立索引:经常用作查询条件的列。需要频繁地按范围搜索的列。连接中频繁使用的列。在ORDER BY子句中经常使用的列。主关键字或外关键字的列。值是唯一的列(如IDENTITY)。先装数据,后建立索引。5.3.1 索引的基本概念(续)索引的基本概念(续)5.3 索引索引 5.3.1 索引的基本概
展开阅读全文