- 1、本文档共91页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
视图的更新 例:向计算机科学系学生视图CS_S插入一个新记录。 INSERT INTO CS_S VALUES (‘S9’, ‘杨力’,18); INSERT INTO S VALUES (‘S9’, ‘杨力’, ‘ CS’,18); 四、视图的用途(优点) 简化用户的操作 —— 视图机制使用户可以只注意他所关心的数据。 能使用户以多种角度看待同一数据 —— 视图机制为不同用户使用同一个数据库提供灵活性。 对重构数据库提供了一定程度的逻辑独立性 —— 在数据库的逻辑结构改变后,用新建立的视图定义用户原来的关系,使用户的外模式保持不变。 能够对机密数据提供安全保护 —— 视图机制可以对不同的用户定义不同的视图,使机密数据不出现在用户视图中,从而自动提供了对机密数据的保护。 4.6 SQL的数据控制 数据控制的两个主要方面: 一是控制用户对数据的存取权限 —— 安全性控制 保护数据库防止非法使用造成的数据泄露和破坏 二是控制数据的完整性 —— 提供完整性约束 数据的完整性是指数据库中数据的正确性和相容性 注意:数据控制也称数据保护,除包括数据的安全性控制和完整性控制外,还包括并发控制和数据库恢复。 本节仅讨论SQL的安全性控制功能 存取控制 数据库系统中保证数据安全性的主要措施: 存取控制 —— 规定用户对数据的存取权限 SQL语言为DBA和表主提供定义和回收这种权限的手段 授权语句的一般格式: GRANT 权限 [,权限] … [ ON 对象类型 对象名 ] TO 用户 [,用户] ... [ WITH GRANT OPTION ]; 语义:将指定对象的指定权限授予指定用户。 获得授权权限 PUBLIC 代表全体用户 不同对象类型允许的操作权限 授权与收回权限 授权例: GRANT SELECT ON TABLE 仓库 TO PUBLIC; GRANT SELECT,INSERT ON TABLE 职工 TO Zhao WITH GRANT OPTION; 收回权限语句的一般格式: REVOKE 权限 [,权限] … [ ON 对象类型 对象名 ] FROM 用户 [,用户] … ; 语义:收回指定用户在指定对象上的指定权限。 收回权限例: REVOKE INSERT ON TABLE 职工 FROM Zhao; 授权与收回权限举例 GRANT UPDATE(SN),SELECT ON TABLE S TO WANG; GRANT ALL PRIVILEGES ON TABLE S,C,SC TO ZHANG ; GRANT CREATETAB ON DATABASE S_C TO LI; GRANT SELECT ON TABLE SC TO PUBLIC; REVOKE UPDATE(SN) ON TABLE S FROM WANG; REVOKE SELECT ON TABLE SC FROM U2; 4.7 嵌入式SQL 把SQL嵌入到宿主语言中使用必须解决的三个问题: (1) 嵌入识别问题 宿主语言的编译程序如何区分主语句和SQL语句。 (2) 宿主语言与SQL语言的数据交互 SQL语句的结果提交宿主语言处理,宿主语言的数据交给SQL语句使用。 (3) 宿主语言的单记录与SQL的多记录问题 宿主语言一般只能在单记录方式下工作,一次处理一条记录;而SQL常常处理的是记录集合。 嵌入式SQL语句的识别 识别标记 —— 为区分SQL语句和主语句,对嵌入宿主语言的SQL语句常必须加前缀 EXEC SQL。SQL语句的结束标志随主语言不同而不同。 ? 以C作为主语言的嵌入式SQL语句: EXEC SQL SQL语句 ; ? 以COBOL作为主语言的嵌入式SQL语句: EXEC SQL SQL语句 END-EXEC ? PowerBuilder SQL语句 ; 嵌入式SQL语句的处理方法 预编译 (常用) 修改和扩展主语言使之能处理SQL语句 直接传递给DBMS(PowerBuilder) 嵌入式SQL语句与主语言之间的通信 在嵌入SQL语句的高级语言程序中 SQL语句负责操纵数据库 高级语言语句负责控制程序流程、预处理 两种计算模型之间的通信主要包括: – 向主语言传递
文档评论(0)