十七、Oracle学习笔记:视图操作和表复制
发布日期:2021-07-26 07:20:42 浏览次数:4 分类:技术文章

本文共 2338 字,大约阅读时间需要 7 分钟。

=======================================================================================================

视图:
1:为什么要使用视图
  (1)简化复杂查询
  (2)限制某些数据的访问。安全
2:视图是一张虚拟的表,对应了一个查询语句。操作视图里的数据,相当于
  操作基表中的数据。
3:视图可以进行DML
  (1)对视图进行insert,基表中一定会增加数据,视图中不一定显示。
  (2)复杂视图不能进行DML
  (3)对视图进行insert时,需要考虑基表中其他字段的非空约束。
  (4)delete,update只能操作视图中可见的数据。

=======================================================================================================

一、视图

1.概念
    视图其实是一张虚表,对应一个select语句,视图其实是一张表中的部分数据映射(投影)视图关键字view,对应的select语句中的表叫基表
2.作用
    (1)可以保护表中的其他数据
    (2)当频繁的操作一个查询语句时,将这个查询语句创建成视图。
3.视图的分类
    (1)简单视图
         对应的select语句是一个普通的查询语句,没有聚合函数,其他函数,以及子查询
    (2)复杂视图
         select语句中含有函数,排序,子查询等
    (3)连接视图
         select语句中设计到多张表
4.视图的创建

--格式:视图的创建  create [or replace] view viewName as subQuery--格式:视图的删除  drop view viewName--有些用户没有视图创建的权限必须授权,使用DBA进行授权:   grant create view to scott--练习:创建视图,要求包含10号部门的员工的所有信息          create or replace view v_emp_10 as select * from emp where deptno=10;--查看视图结构:desc view_name   desc v_emp_10;--练习:将每个部门的平均工资最高工资还有工资之和以及部门号,创建成一个视图  create or replace view v_emp_d as select deptno,avg(sal),max(sal),sum(sal) from emp group by deptno;

5:视图也能进行增删改DML操作,对视图的DML操作,其实就是对视图的DML操作
        原则1:视图中没有的字段,基表中的字段有非空约束,此时不能进行insert
        原则2:一个复杂视图,不能进行DML操作
        原则3:连接视图不能进行DML操作

--练习:向视图v_emp_10添加一条数据,9100,'zhangsan','clerk','11-11-16',7369,3000,100,10/20  insert into v_emp_10 values(9100,'zhangsan','clerk',7369,'11-11月-16',3000,100,10);  insert into v_emp_10 values(9101,'lisi','clerk',7369,'11-11月-16',3000,100,20);--通过上述案列,视图中可能查询不到视图中添加的数据           update v_emp_10 set sal=4000 where ename='zhangsan';   update v_emp_10 set sal=4000 where ename='lisi';--第二条数据执行不成功,因为视图中没有        --练习:通过视图删除李四的信息  delete from v_emp_10 where ename='lisi';        --总结:可以DML视图中的任何数据,但是视图中没有的数据,可能insert,不能delete,update.

               

6.视图与with check option
      当视图对应的select语句中使用了with check option时,此时就对视图做了限制,只能DML视图中的所限制条件中的数据

--练习:创建视图 v_emp_20,对应的是20号部门的员工编号,姓名,职位,月薪,部门号  create or replace view v_emp_20 as select empno,ename,job,sal,deptno from emp  where deptno=20 with check option;--练习:向视图中插入数据  9102,'wangwu','superman',2000,20;   --成功  9103,'laoliu','superhaha',2000,30;  --失败,报ORA-01402: 视图 WITH CHECK OPTION where 子句违规

7.视图与with read only;

     

--练习:创建v_emp_30视图,为30部门的所有员工信息,设置为只读  create view v_emp_30 as select * from emp where deptno=30 with read only;          

二、表复制

 create table emp_100 as select * from emp;

         

转载地址:https://blog.csdn.net/qq_38741971/article/details/81429315 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:十八、Oracle学习笔记:PLSQL操作(含游标的操作)
下一篇:十六、Oracle学习笔记:索引和约束(表字段快速查询和约束)

发表评论

最新留言

不错!
[***.144.177.141]2024年04月18日 23时57分24秒