数据库多表查询和将多表查询的脚本写成一个视图,进行查询,他们之间除了不用写那么多的SQL脚本外,还有没有其他的好处,例如:执行效率等。
解决方案 »
- 怎样把不同的机器上的ORACLE数据提取到第三台机器的ORACLE中?
- 空值处理
- 基础问题
- oracle update 多表关联
- SQL语句的DECODE函数如果匹配得到的值能通过SELECT语句传参吗?
- 看看这个表的范式
- 我的服务器是NT,在另外一台机器上orcalTNslistener80服务可以起来,为什么把orant目录下的东西考到另一台机器上orcalTNslistener80起不
- 请指导:oracle中如何执行日期时间相加操作?
- 同时熟悉sql server和oracle的大侠们评估一下:系统从sql server 迁移到oracle的工作量(详情见帖)
- 关于触发器无法更新多行问题
- oracle 编程中遇到一个问题
- ORACLE的CTC触发器
对视图进行查询时,oracle会将视图替换为定义中的sql语句.
视图的好处就是节省脚本,简化逻辑,以更符合人类思维方式.
比如 你select a,b,c from table for update可以修改数据
但是 select * from view for update 可能就不让你修改
所以 视图有时候对数据安全性比较好
-- 创建视图
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;