设为首页 加入收藏

TOP

Oracle---视图
2019-05-11 00:30:59 】 浏览:45
Tags:Oracle--- 视图

视图:其实是一个虚表,对应一个select语句.

1.视图其实是表中数据映射(投影)

视图关键字view,对应的select语句中的表叫基表

2:作用:

1)可以保护表中其他数据
2)当频繁的操作一个语句时,将这个查询语句创建成视图,便于操作

3:视图的分类

(1)简单视图
对应的select语句是一个普通的语句,没有聚合函数,其他函数,以及子查询
(2)复杂视图:
select语句中含有函数、排序、子查询的视图
(3)连接视图
select语句中涉及到多张表

4:视图的创建:

create [or replace] view view_name as subQuery '语句';子查询
练习:创建视图 v_emp_10 对应的是10号部门员工信息
create or replace view v_emp_10 as select * from emp where deptno=10 ;
desc view_name

5:视图的创建:

有些用户没有创建视图的权限,必须授权
使用DBA进行授权
***1)先进入system 1234 数据库 ,2)再输入授权语句
授权语句: grant create view to 用户名(scott)
grant create view to v_emp_10

6:视图也可以进行DML操作 *增删改

原则1:视图中没有的字段,基表中的字段有非空操作,此时不能进行insert
原则2:复杂视图不能进行DML操作
原则3:连接视图不能进行DML操作

1)查询基表: 向视图插入数据,基表也会有数据!
select * from emp where deptno=10
select * from v_emp_10
再插入李四的数据, 向视图里。
insert into v_emp_10 values( 9101,'李四','clerk',7369,'11-11月-16',3000,100,10);
查询基表:视图与基表都会有数据
select * from emp where deptno=10
select * from v_emp_10
2)通过视图 v_emp_10 修改张三工资,基表和视图都改变
练习:通过视图 v_emp_10 修改张三工资,基表和视图都改变
update v_emp_10 set sal=4000 where ename='张三'
select * from emp
select * from v_emp_10
练习:通过视图删除李四的信息
delete from v_emp_10 where ename='李四'
select * from v_emp_10 李四已删除
select * from emp where deptno=10 李四已删除
总结:可以DML增删改视图中的任何数据,视图中没有的数据,可能insert,不能delete,update

7:视图与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; 对20号进行了限定

8:视图与with read only;

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

insert into v_emp_20 values(9102,'王五','superman',2000,20)//只能读,不能插入

9. 复制表:

create table copy-table as select * from emp



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇据说都能看懂的才是程序员! 下一篇大数据平台Linux基础环境配置

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目