友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

SQL 21日自学通(V3.0)(PDF格式)-第87章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






使用表或视图时限制的解决方法 



    假如你是以 JACK  的身份登录进行系统的  你从早些时候的内容中了解到如果你想查 



看表中的内容       你必须使用下边的语句 



INPUT 



    SQL》 SELECT * FROM Bryan。SALARIES 



OUTPUT 



       NAME             SALARY           AGE 



       JACK             35000            29 



       JILL             48000            42 



       JOHN             35000            55 



    如果你创建了一个名字叫 SELECT_VIEW  和视图  那么用户可以非常简单地使用这个 



视图 



INPUT/OUTPUT 



    SQL》 CREATE VIEW SALARY_VIEW AS SELECT * FROM Bryan。SALARIES 



    View created。 



    SQL》 SELECT * FROM SALARY_VIEW 



       NAME            SALARY          AGE 



       JACK            35000           29 



       JILL            48000           42 



       JOHN            35000 



分析 



    上边的查询返回的结果与使用用户名的返回结果是相同的 



用同义词取代视图 



    SQL  还提供了一种叫同义词的对象            同义词可以为表提供一个别名以将击键的次数减 



到最小    同义词有两种  公有的和私有的  任何一个具有 Resource  角色的用户都可以创建 



私有类型的同义词        与之相对应的是只有 DBA 角色的用户才能够创建公有类型的同义词 



    创建公有类型的同义词的语法如下 



SYNTAX 



    CREATE 'PUBLIC' SYNONYM 'schema。'synonym FOR 'schema。'object'@dblink' 



                                                                     250 


…………………………………………………………Page 251……………………………………………………………

SQL 21  日自学通(V1。0)                                                        翻译人    笨猪 



    针对前一个例子           你可以使用下边的语句来取得相同的效果 



INPUT/OUTPUT 



    SQL》 CREATE PUBLIC SYNONYM SALARY FOR SALARIES 



    Synonym created。 



    然后再以 JACK 的身份登录并输入 



INPUT/OUTPUT 



    SQL》 SELECT * FROM SALARY 



          NAME                 SALARY              AGE 



          JACK                 35000               29 



          JILL                 48000               42 



          JOHN                 35000               55 



使用视图来解决安全问题 



    假定你现在又改变主意了               你不想让 JACK 和 JILL  看到 SALARIES  表的全部内容 



你可以使用视图来达到只使他们看到属于他们自己的信息这一目的 



INPUT/OUTPUT 



    SQL》 CREATE VIEW JACK_SALARY AS 



        2    SELECT  *  FROM  BRYAN。SALARIES 



        3    WHERE  NAME  =  'JACK'; 



    View created。 



INPUT/OUTPUT 



    SQL》 CREATE VIEW JILL_SALARY AS 



        2    SELECT  *  FROM  BRYAN。SALARIES 



        3    WHERE  NAME  =  'JILL'; 



    View created。 



INPUT/OUTPUT 



    SQL》 GRANT SELECT ON JACK_SALARY TO JACK 



    Grant succeeded。 



INPUT/OUTPUT 



    SQL》 GRANT SELECT ON JILL_SALARY TO JILL 



                                                                                  251 


…………………………………………………………Page 252……………………………………………………………

SQL 21  日自学通(V1。0)                                                    翻译人    笨猪 



    Grant succeeded。 



INPUT/OUTPUT 



    SQL》 REVOKE SELECT ON SALARIES FROM JACK 



    Revoke succeeded。 



INPUT/OUTPUT 



    SQL》 REVOKE SELECT ON SALARIES FROM JILL 



    Revoke succeeded。 



    现在    以JACK 的身份登录并测试你为他创建的视图 



INPUT/OUTPUT 



    SQL》 SELECT * FROM Bryan。JACK_SALARY 



             NAME           SALARY     AGE 



             Jack           35000      29 



INPUT/OUTPUT 



    SQL》 SELECT * FROM PERKINS。SALARIES 



    ERROR at line 1: 



    ORA…00942: table or view does not exist 



    退出 JACK 登录并以 JILL 身份登录来测试 JILL 



INPUT/OUTPUT 



    SQL》 SELECT * FROM Bryan。JILL_SALARY 



          NAME        SALARY        AGE 



          Jill        48000         42 



ANALYSIS 



    你可以看到对 SALARIES  表的访问将完全受到视图的控制                       SQL 允许你创建这些视图 



并把它提供给你的用户  这项技术为你提供了相当大的灵活性 



    删除同义词的语法如下 



SYNTAX 



    SQL》 drop 'public' synonym synonym_name 



注   到现在为止  你应该明白保持有 DBA  角色的用户最少的重要性了吧                              因为具有这一 



    角色的用户可以运行数据库中的任何命令及操作  但是请注意                             在 ORACLE 和 Sybase 



    中你只有成为 DBA 角色的用户才可以从数据库中引入或导出数据 



                                                                              252 


…………………………………………………………Page 253……………………………………………………………

SQL 21  日自学通(V1。0)                                                翻译人   笨猪 



使用 WITH GRANT OPTION 子句 



    如果 JILL  想把她的 UPDATE 权限赋给 JACK 时需要谁来完成这项工作  最初你可能 



会认为应该由 JILL      来完成     因为她有 UPDATE 权限        她应该可以为其他用户受予这个权 



限  但是     如果你使用早些时候的 GRANT 语句  JILL 并不能为其他用户授权 



SQL》 GRANT SELECT; UPDATE(SALARY) ON Bryan。SALARIES TO Jill 



    下边是我们在今天早些时候讲过的 GRANT 语句的语法 



SYNTAX 



    GRANT {object_priv | ALL 'PRIVILEGES'} ' (column '; column'。。。) ' 



    '; {object_priv | ALL 'PRIVILEGES'} ' (column'; column' 。。。) ' ' 。。。 



    ON 'schema。'object TO {user | role | PUBLIC} '; {user | role | PUBLIC}' 。。。 



    'WITH GRANT OPTION' 



    看到在末尾的 WITH  GRANT  OPTION        语句了吗     当在给对象授权时如果使用了这个 



选项    那么该权限就可以被传给其他的用户                所以    如果你想让 JILL  具有给 JACK 授权的 



能力  那么你应该像下边这样使用 GRANT 语句 



INPUT 



    SQL》 GRANT SELECT; UPDATE(SALARY) 



        2    ON  Bryan。SALARIES  TO  JILL 



      3  WITH GRANT OPTION 



OUTPUT 



          Grant succeeded。 



      当以 JILL  的身份登录时就可以使用下边的语句 



INPUT/OUTPUT 



    SQL》 GRANT SELECT; UPDATE(SALARY) ON Bryan。SALARIES TO JACK 



        Grant succeeded。 



总结 


返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!