视图的定义和维护功能1.视图的优点1)视图能够简化用户的操作。2)视图机制可以使用户以不同的方式看待同一数据。3)视图对数据库的重构提供了一定程度的逻辑独立性。4)视图可以对机密的数据提供安全保护。2.视图定义的格式一般格式为:CREATEVIEW〈视图名〉[(列名组)][WITHENCRYPTION]AS〈子查询〉[WITHCHECKOPTION];ENCRYPTION说明对视图定义进行加密WITHCHECKOPTION指出在视图上所进行的修改都要符合查询语句所指定的限制条件对SELECT语句有以下的限制:–①定义视图的用户必须对所参照的表或视图有查询权限,即可执行SELECT语句。–②不能使用COMPUTE或COMPUTEBY子句。–③不能使用ORDERBY子句。–④不能使用INTO子句。–⑤不能在临时表或表变量上创建视图。视图举例【例5-6】建立计算机系学生的视图。CREATEVIEW计算机系学生ASSELECT学号,姓名,年龄FROM学生WHERE所在系=‘计算机系’;视图举例【例5-7】由学生、课程和选课三个表,定义一个计算机系的学生成绩视图,其属性包括学号、姓名、课程名和成绩。CREATEVIEW学生成绩(学号,姓名,课程名,成绩)ASSELECT学生.学号,学生.姓名,课程.课程名,选课.成绩FORM学生,课程,选课WHERE学生.学号=选课.学号AND程.课程名=选课.课程号AND学生.所在系='计算机系';视图举例【例5-8】将学生的学号、总成绩、平均成绩定义成一个视图。CREATEVIEW学生成绩统计(学号,总成绩,平均成绩)ASSELECT学号,SUM(成绩),AVG(成绩)FROM选课GROUPBY学号视图举例CREATEVIEW借阅_计算机图书ASSELECT图书.*,借阅.*FROM图书,借阅WHERE图书.书号=借阅.书号AND图书.类别=‘计算机’3.视图的删除、查询和维护视图删除语句的一般格式为:DROPVIEW〈视图名〉;视图可以和基本表一样被查询,其使用方法与基本表相同,但利用视图进行数据增、删、改操作,会受到一定的限制。视图的创建使用企业管理器创建视图使用sql的createview语句创建视图使用视图创建向导来创建视图定义表别名的格式表名别名而不是表名.别名Transact-SQL的数据操纵功能及实例1.数据检索语句的语句格式SELECT〈查询列〉[INTO〈新表名〉][FROM〈数据源〉][WHERE〈元组条件表达式〉][GROUPBY〈分组条件〉][HAVING〈组选择条件〉][ORDERBY〈排序条件〉][COMPUTER〈统计列组〉][BY〈表达式〉]GROUPBY–选择列表只能包含分组依据列和聚合函数。【例6-24】查找类别中最高的图书定价不低于全部按类别分组的图书平均定价的2倍的图书。SELECTA.*FROM图书AGROUPBYA.类别HAVINGMAX(A.定价)>=ALL(SELECT2*AVG(B.定价)FROM图书BGROUPBYB.类别)COMPUTE子句产生汇总值,在结果集中后将汇总值放入摘要列,COMPUTE与BY配合,起到换行控制和分段小计的作用。COMPUTE〈统计函数组〉[BY〈分组项〉]–当COMPUTE不带可选的BY子句时,SELECT语句有两个结果集:每个组的第一个结果集是包含选择列表信息的所有明细行。第二个结果集有一行,其中包含COMPUTE子句中所指定的聚合函数的合计。–BY〈分组项〉表示在结果集中产生换行控制及分段小计。COMPUTEBY必须和ORDERBY配合使用。SELECTProductName,Amount,price,totalFROMProductsCOMPUTESUM(total)SELECTProductName,Amount,price,total,CountryFROMProductsORDERBYCountryCOMPUTESUM(total)BYCountry查询例子【例6-27】列出计算机类图书的书号、名称及价格,并求出各出版社这类书的总价格,最后求出全部册数和总价格。SELECT书号,名称,定价FROM图书WHERE类别=’计算机类’ORDERBY书号ASCCOMPUTECOUNT(*),SUM(定价)BY出版社COMPUTECOUNT(*),SUM(定价)比较COMPUTE和GROUPBY–GROUPBY生成单个结果集。每个组都有一个只包含分组依据列和显示该组子聚合的聚合函数的行。选择列表只能包含分组依据列和聚合函数。–COMPUTE生成多个结果集。一类结果集包含每个组的明细行,其中包含选择列表中的表达式。另一类结果集包含组的子聚合,或SELECT语句的总聚合。选择列表可包含除分组依据列或聚合函数之外的其它表达式。聚合函数在COMPUTE子句中指定,而不是在选择列表中。•INTO子句和FROM子句INTO子句将查询结果添加到创建表中。INTO不能与COMPUTE子句同时使用。如果创建表是临时表,在表名前加“#”字符。2.Transact-SQL查询实例设图书借阅数据库中包括:图书(书号,类别,出版社,作者,书名,定价);读者(书证号,姓名,单位,性别,电话);借阅(书号,读者书证号,借阅日期).【例6-22】将计算机类的书存入永久的计算机图书表,将借书日期在99年以前的借阅记录存入临时的超期借阅表。SELECT*INTO计算机图书FROM图书WHERE类别=’计算机’GOSELECT*INTO#超期借阅FROM借阅WHERE借阅日期’1999-01-01’GO2019/12/19数据库系统原理及应用机械工业出版社第8章数据库保护及SQLServer的数据库保护技术8.1数据库的安全性及SQLServer的安全管理8.2数据库完整性及SQLServer的完整性控制8.3数据库的并发控制及SQLServer的并发控制机制8.4数据库恢复技术与SQLServer的数据恢复机制为了防止数据库的恶意滥用,可以在下述不同的安全级别上设置各种安全措施。(1)环境级:对计算机系统的机房和设备加以保护,防止物理破坏。(2)职员级:对数据库系统工作人员,加强劳动纪律和职业道德教育,并正确的授予其访问数据库的权限。(3)操作系统级:防止未经授权的用户从操作系统层着手访问数据库。(4)网络级:由于数据库系统允许用户通过网络访问,因此,网络软件内部的安全性对数据库的安全是很重要的。(5)数据库系统级:检验用户的身份是否合法,检验用户数据库操作权限是否正确。8.1数据库的安全性及SQLServer的安全管理8.1数据库的安全性及SQLServer的安全管理数据库的安全性是指保护数据库,以防止不合法的使用造成的数据泄密、更改或破坏。8.1.1数据库安全性控制的一般方法用户DBMSOSDB用户标识和鉴别存取控制操作系统安全保护密码存储1.用户标识与鉴别(1)用输入用户名(用户标识号)来标明用户身份。(2)通过回答口令标识用户身份。(3)通过回答对随机数的运算结果表明用户身份。2.存取控制(1)存取机制的构成。1)定义用户权限,并将用户权限登记到数据字典中。用户权限是指用户对于数据对象能够执行的操作种类.定义用户权限的语言:数据控制语言DCL;2)当用户提出操作请求时,系统进行权限检查,拒绝用户的非法操作。(2)存取机制的类别。1)自主存取控制(DAC)。用户对于不同的对象有不同的存取权限;不同的用户对同一对象的存取权限也各不相同;用户可将自己拥有的存取权限转授给其他用户。2)强制存取控制(MAC)。每一个数据对象被标以一定的密级;每一个用户也被授予某一个级别的许可证;对于任意一个对象,只有具有合法许可证的用户才可以存取。3.自主存取控制方法(1)关系中的用户权限。用户权限主要包括数据对象和操作类型两个要素。定义用户的存取权限称为授权,通过授权规定用户可以对哪些数据进行什么样的操作。(2)SQL的数据控制功能。SQL的数据控制功能为GRANT语句(授权)和REVOKE语句(收权)。1)数据对象的创建者自动获得对于该数据对象的所有操作权限。2)获得数据操作权的用户可以通过GRANT语句把权限转授给其他用户。(3)授权机制的性能。1)用户权限定义中数据对象范围越小授权系统就越灵活。授权粒度越细,授权子系统就越灵活,但系统定义与检查权限的开销也会相应地增大。2)用户权限定义中能够谓词的授权系统比较灵活。(4)自主存取控制的不足之处。系统对权限的授予状况无法进行有效的控制可能造成数据的无意泄露。数据本身并无安全性标记。数据对象操作权限表、视图、列(TABLE)SELECT,INSERT,UPDATE,DELETE,ALLPRIVILEGE基本表(TABLE)ALTER,INDEX数据库(DATABASE)CREATETAB表空间(TABLESPACE)USE系统CREATEDBC格式:GRANT权限1[,权限2,…][ON对象类型对象名称]TO用户1[,用户2,…][WITHGRANTOPTION]功能:将指定数据对象的指定权限授予指定的用户。说明:其中,WITHGRANTOPTION选项的作用是允许获得指定权限的用户把权限再授予其他用户。1.授权语句1.授权语句系统授权的授权语句格式为:GRANT〈系统特权组〉To〈用户组〉|PUBLIC[WITHGRANTOPTION];1)PUBLIC指数据库的所有用户。2)WITHGRANTOPTION:获得权限的用户可以把该权限再授予别的用户。对象特权的授权格式为:GRANTALLPRIVILIGES|〈对象特权组〉ON〈对象名〉TO〈用户组〉|PUBLIC[WITHGRANTOPTION];1)ALLPRIVILIGES指所有的对象特权。2)对象名指操作的对象标识,它包括表名、视图名和过程名等。1.隐含特权系统内置权限,是用户不需要进行授权就可拥有的数据操作权。2.系统特权又称为语句特权,相当于数据定义语句DLL的语句权限。系统特权是允许用户在数据库内部实施管理行为的特权,它主要包括创建或删除数据库、创建或删除用户、删除或修改数据库对象等。3.对象特权对象特权类似于数据库操作语言DML的语句权限,它指用户对数据库中的表、视图、存储过程等对象的操作权限。例子【例5-51】把修改学生学号和查询学生表的权力授予用户王平。GRANTUPDATE(学号),SELECTON学生TO王平;【例5-52】把建立数据库和备份数据库的权力赋给用户王平。GRANTCREATEDATABASE,BACKUPDATABASETO王平;2.收权语句REVOKE语句的一般格式为:REVOKE〈权限组〉|ALLPRIVILIGES[ON〈对象名〉]FROM〈用户名组〉|PUBLIC;其中:ON子句用于指定被收回特权的对象;ALLPRIVILIGES指收回所有特权;PUBLIC指所有用户。【例5-53】将用户王平的可以在学生表中修改学生学号的权利收回。REVOKEUPDATE(学号)ON学生FROM王平;3.拒绝访问语句拒绝访问语句的一般格式为:DENYALL[PRIVILIGES]|〈权限组〉[ON〈对象名〉]TO〈用户组〉|PUBLIC;其中:ON子句用于说明对象特权的对象名;对象名指的是表名、视图名、视图和表的字段名或者过程名。4.强制存取控制方法强制存取控制方法(MAC)是系统所采取的强制存取检查手段,它不是用户能直接感知或进行控制的。(1)主体、客体及敏感度标记。主体是系统中的活动实体,它包括DBMS所管理的实际用户和代表用户的各进程。客体是系统中的被动实体,包括文件、基表、索引、视图等。对于主体和客体,DBMS为它们每个实例设置了一个敏感度标记。例如绝密、机密、可信、公开等。主体的敏感度标记称为许可证级别,客体的敏感度标记称为密级。4.强制存取控制方法(2)主体对客体的存取规则。1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客