Oracle视图

Oracle视图分为简单视图、复杂视图和连接视图。简单视图是基表的子集,复杂视图包含函数和分组操作,连接视图基于多表建立。创建视图后,查询视图会进行两次查询。不建议直接对视图进行DML操作,但对具有check option约束的视图,可以在其可见范围内进行操作。而read only约束的视图仅支持查询,保护基表数据不被非法修改。删除视图不影响基表数据。
摘要由CSDN通过智能技术生成

视图

简单视图:基于单表建立的,且不包含任何函数运算、表达式或分组函数,叫做简单视图,此时视图是基表的子集;
复杂视图:同样是基于单表,但包含了单行函数、表达式、分组函数或GROUP BY子句,叫做复杂视图;
连接视图:基于多表建立的。

  1. 创建视图:

    create view 视图名 AS 子查询;
  2. 查看视图:

     select * from v_emp_10;  ---------- (v_emp_10为视图名)

    先根据我们需要查询的视图所对应的sql将数据检索出来,
    然后再根据我们对视图查询的需求,检索视图查询出来的数据。
    所以使用视图查询是两次查询。

  3. 不推荐对视图进行DML操作,若要进行DML操作,也只是对简单视图进行操作。

  4. 对于创建具有check option约束的视图,在对其所做的修改,必须在视图的可见范围内;

    即:
    对于insert ,新增的记录仍能在视图中查询到;
    对于update,修改后的结果在视图中可见;
    对于delete,只能删除现有视图中可见的数据。

  5. 对于创建具有read only约束的视图,对其不能进行DML(增删改)操作,只能对其进行只读(查询)操作,保证了视图对应的基表数据不会被非法修改。

  6. 删除视图;

    drop view 视图名;

    由于视图只是对基表的查询定义,因此删除视图不会对基表数据产生影响。

eg:

  -------------------
  -----视图  view-----
  -------------------

--创建视图   create view  视图名  as  子查询;  
  create view v_emp_10
  as
  select empno ,ename,sal, deptno
  from emp
  where deptno=10;
--查看视图结构
desc v_emp_10;
--查询视图  
  select * from v_emp_10;

-- 重写已存在的视图 (给原来视图的列添加别名)
create or REPLACE view v_emp_10
  as
  select empno id ,ename name,sal salary, deptno
  from emp
  where deptno=10;
 --查询使用了别名的视图
 select id ,name, salary from v_emp_10;
 --通过数据字典中user_views查看视图相关信息
 select * from user_views;
--  通过 user_updatable_columns查看视图
 select * from user_updatable_columns where table_name='V_EMP_10';
 --通过user_objects查看视图名称
 select * from user_objects where object_type='VIEW';

-- 创建一个视图V_EMP_SALARY  复杂视图不允许进行DML操作
 CREATE VIEW v_emp_salary
AS
SELECT d.dname, avg(e.sal) avg_sal, sum(e.sal) sum_sal, 
max(e.sal) max_sal, min(e.sal) min_sal 
FROM emp e join dept d
ON e.deptno = d.deptno
GROUP BY d.dname;

select * from v_emp_salary;
--删除视图,   由于视图只是基表的一个查询定义,所以删除视图并不会基表有影响。
drop view v_emp_salary;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值