您的位置:首页 > 数据库 > Oracle

ORACLE SQL 视图

2015-06-18 14:41 330 查看
第十一章:视图
视图:命名的sql语句,存储在数据字典中,视图本身不包含数据,视图的数据来源于
基表(创建视图时的子查询所关联的表)

授予scott用户创建试图的权限:
conn / as sysdba
grant create view to scott;

conn scott/tiger
create view v10
as
select empno,ename,sal,deptno
from emp --视图的基表
where deptno=10;

select * from v10;

查看视图的源代码
select text from user_views where view_name='V10';

select * from
(select empno,ename,sal,deptno
from emp
where deptno=10);

修改视图:
create or replace view v10
as
select empno,ename,sal,comm,deptno
from emp
where deptno=10;

create or replace view v
as
select deptno,job,sum(sal) total_sal
from emp
group by deptno,job
order by deptno;

对简单视图作delete的限制:
组函数
分组计算
有去重处理(distinct)
有rownum伪列

create or replace view v10
as
select rownum rn, empno,ename,sal,comm,deptno
from emp
where deptno=10;

对简单视图作update的限制:
组函数
分组计算
有去重处理(distinct)
有rownum伪列
带有计算表达式所生成的伪列

对简单视图作insert的限制:
组函数
分组计算
有去重处理(distinct)
有rownum伪列
带有计算表达式所生成的伪列
表中受非空约束作用的列在视图中没有包含

create or replace view v10
as
select empno,ename,sal,comm,deptno
from emp
where deptno=10;

insert into v10 values (7935,'ALEX',3500,null,20);

create or replace view v10
as
select empno,ename,sal,comm,deptno
from emp
where deptno=10
with check option; --不符合where条件的数据被屏蔽在视图之外

insert into v10 values (7935,'ALEX',3500,null,20);

create or replace view v10
as
select empno,ename,sal,comm,deptno
from emp
where deptno=10
with read only; --只读视图

create or replace view v20
as
select empno,ename,sal,comm,deptno
from emp_copy
where deptno=20
with read only;

ORA-00942: table or view does not exist

基表不存在的时候强制创建视图(force):
create or replace force view v20
(empno,first_name,salary,commission,department_id)
as
select empno,ename,sal,comm,deptno
from emp_copy
where deptno=20
with read only;

create or replace force view v20
as
select empno empno,
ename first_name,
sal salary,
comm commission,
deptno department_id
from emp_copy
where deptno=20
with read only;

删除视图:
drop view view_name;

内嵌视图:from 子句中包含的子查询
select * from
(select empno,ename,sal,comm,deptno from emp where deptno=10);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle 视图 view