视图:
可进行的操作:选去、联接、insert、update、delete
oracle中有四种典型的视图:关系视图、内嵌视图、对象视图、物化视图
视图作用:强化安全、增强性能、隐藏复杂性、提供抽象、定制数据显示
1、关系视图:
a)with read only约束用来定义只能进行选取操作的视图
create view view_name as
select ....
with read only
b)with check option
c)alter view view_name compile
当我们改变数据库表的定义时,基于该表的视图变为无效,可以通过如下sql语句证实:
select object_name,status from user_objects
where object_name='VIEW_NAME'
alter view view_name compile允许我们对视图进行手动编译
但这不是必须的,因为当我们使用select对视图进行查询时oracle会自动对其进行重新编译
d)force选项 create force view view_name as
允许我们创建无效视图
e)desc user_updatable_columns
了解哪些列可更新
2、内嵌视图:就是嵌入到父查询中的查询
a)示例:查询各部门人数及所占公司总人数的百分比(使用oracle中的hr模式)
select department_name,count(*),
to_char((count(*)/total_emp.cnt)*100,'90.99')||'%' pct
from departments d,employees e,
(select count(*) cnt from employees) total_emp
where d.department_id=e.department_id
group by department_name,total_emp.cnt
b)前五名问题:选取公司的前五名员工
select last_name,hire_date from employees
where rownum<6 order by hire_date
行编号rownum会在order by 子句之前就指定给被选取的行
使用如下带内嵌视图的查询才能得到正确结果:
select last_name,hire_date from
(select last_name,hire_date from employees order by hire_date)
where rownum <= 5
3、对象视图:
4、物化视图:在数据库中存储的查询结果