数据库多表查询和将多表查询的脚本写成一个视图,进行查询,他们之间除了不用写那么多的SQL脚本外,还有没有其他的好处,例如:执行效率等。

解决方案 »

  1.   

    没有.
    对视图进行查询时,oracle会将视图替换为定义中的sql语句.
    视图的好处就是节省脚本,简化逻辑,以更符合人类思维方式.
      

  2.   

    可能他的意思是说将视图的select权限只授予给指定用户,其它用户由于没有此视图的权限就没办法访问视图查询
      

  3.   

    权限问题应该是视图特有的 不用授权吧
    比如 你select a,b,c from table for update可以修改数据
    但是 select * from view for update 可能就不让你修改 
    所以 视图有时候对数据安全性比较好
      

  4.   

    举个简单的例子sqlplus hr
    -- 创建视图
    SQL> create view hr.empv as select first_name,last_name,hire_date from hr.employees;-- 创建测试帐户
    SQL> conn / as sysdba
    SQL> create user test_user identified by test;
    SQL> grant create session to test_user;
    -- 授予 test_user 帐户访问 hr.empv 视图的权限
    SQL> grant select on hr.empv to test_user;-- 以 test_user 帐户登陆
    SQL> conn test_user/test
    SQL> show user
    USER is "TEST_USER"
    -- 访问 hr.employees 表(拒绝)
    SQL> select * from hr.employees;
    select * from hr.employees
                     *
    ERROR at line 1:
    ORA-00942: table or view does not exist-- 访问 hr.empv 视图(通过视图限定用户可以访问/操作那些数据)
    SQL> select * from hr.empv;