视图概念:
视图属于数据库对象(包括表、视图、序列、索引、同义词、触发器)之一,
视图是一个虚表,建立在表的基础之上,可以来自单个表或者多个表。
视图创建
创建视图的语法:
create view myview
as
select 。。。from。。。emp with check option;
--举例创建视图myview
SQL> create view myview as select e.empno 员工编号,e.ename 员工姓名,e.job 工作, e.sal*12+nvl(e.comm,0) 薪资,e.deptno 部门编号,d.dname 部门名称 from em
p e,dept d where e.deptno=d.deptno and e.deptno=30;
create view myview as select e.empno 员工编号,e.ename 员工姓名,e.job 工作, e.sal*12+nvl(e.comm,0) 薪资,e.deptno 部门编号,d.dname 部门名称 from emp e,d
ept d where e.deptno=d.deptno and e.deptno=30
*
第 1 行出现错误:
ORA-01031: 权限不足
--所以需要在sys下,给scott授予创建视图权限;
SQL> conn /as sysdba;
已连接。
SQL> grant create view to scott;
授权成功。
--登录scott,再次创建视图;
SQL> create view myview as select e.empno 员工编号,e.ename 员工姓名,e.job 工作, e.sal*12+nvl(e.comm,0) 薪资,e.deptno 部门编号,d.dname 部门名称 from em
p e,dept d where e.deptno=d.deptno and e.deptno=30;
视图已创建。
--查询myview视图
SQL> select *from myview;
员工编号 员工姓名 工作 薪资 部门编号 部门名称
---------- ---------- --------- ---------- ---------- --------------
7521 QINJIALI SALESMAN 20300 30 SALES
7698 BLAKE MANAGER 53400 30 SALES
7844 TURNER SALESMAN 22800 30 SALES
7900 JAMES CLERK 16200 30 SALES
视图的优缺点:
优点:
1 简化查询;2 增加数据的安全性,可以将一些需要信息封装在视图中。
缺点:1 性能差 2 修改限制
操作视图:DML+Query(和表完全一致)
注意事项:某个用户在创建视图时,可能权限不足,所以需要授权;
通过sysdba授予scott创建视图的权限;
撤销:revoke create view from scott;
创建:grant create view to scott;
视图修改,会影响原表的数据!!!!!建议不做修改,只进行查询;
create view 视图名
as
select 语句 where…
with check option:限制对视图操作时,必须满足where子句条件;
b 强烈建议:
with ready only:视图只建议查看,不建议DML;因为对视图的操作会影响原表。
如果必须对视图进行DML,还需遵循一些严格的苛刻条件。
1 当视图中存在以下之一时,不能insert/update
出现group by\distinct\组函数\列的定义为表达式(sal+1000);
2 当视图中存在以下之一时,不能删除
group by\distinct\rownum伪列
–》强烈建议只查看,不要DML;