十七、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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月18日 23时57分24秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【Leetcode刷题篇】leetcode99 恢复二叉搜索树
2019-04-26
【Leetcode刷题篇】leetcode451根据字符出现频率排序
2019-04-26
【Leetcode刷题篇】leetcode703 数据流中的第k大元素
2019-04-26
【Leetcode刷题篇】leetcode378 有序矩阵中第K小的元素
2019-04-26
【Leetcode刷题篇】前K个高频元素
2019-04-26
【Leetcode刷题篇】leetcode373 查找和最小的K对数字
2019-04-26
【Leetcode刷题篇】leetcode367 有效的完全平方数
2019-04-26
【Leetcode刷题篇】剑指offer-数值的整数次方
2019-04-26
【Leetcode刷题篇】面试题01.06 字符串压缩
2019-04-26
【Leetcode刷题篇】leetcode443 压缩字符串
2019-04-26
【面试篇】数据结构-线性表
2019-04-26
【面试篇】数据结构-树形结构
2019-04-26
【面试篇】数据结构-哈希表
2019-04-26
【Leetcode刷题篇】leetcode88 合并两个有序数组
2019-04-26
【Leetcode刷题篇】剑指offer51 数组中的逆序对
2019-04-26
【Leetcode刷题篇】剑指offer55-平衡二叉树
2019-04-26
【Leetcode刷题篇】leetcode98 判断一棵树是否为二叉搜索树
2019-04-26
Java中arraylist和数组的相互转换
2019-04-26
【Leetcode刷题篇 】leetcode147 对链表进行插入排序
2019-04-26
【Leetcode刷题篇】leetcode148 排序链表
2019-04-26