一、视图的定义
视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,可以通过它对表里面的数据进行查询和修改。
是存储的查询,可以视为虚拟表,用来存放表,保证数据表的安全性。
二、视图的作用
(1)可以限制用户只能通过视图检索数据,对最终用户屏蔽建表时底层的基表(保证数据表的安全性)
(2)可以将复杂的查询保存为视图,对最终用户屏蔽一定的复杂性
(可以将经常使用到的需要多表联查或者其他联合查询的结果集保存在视图中,需要使用的
时候直接查询视图)
(3)限制某个视图只能访问基表中的部分列或者部分行的特定数据(对表的操作权限进行限制)
(4)从多张基表中按一定的业务逻辑抽出用户关心的部分,形成一张虚拟表。
三、视图的分类
视图可分为简单视图和复杂视图,它们的区别如下:
1、简单视图只从单表里获取数据,复杂视图从多表;
2、简单视图不包含函数和数据组,复杂视图包含;
3、简单视图可以实现DML操作,复杂视图不可以。
四、视图的语法
--创建视图语法:
--语法1:
create [or replace] [{force|noforce}] 视图名称
as
select 查询语句
[with read only constraint]
--简单语法:
create or replace view 视图名称 as select * from 表名;
--查询视图
select * from 视图名称;
--查询视图的定义
select view_name,text from user_views;
---修改视图
通过OR REPLACE 重新创建同名视图即可。
语法解析:
1.or replace:如果视图已经存在,则替换旧视图。
2.force:即使基表不存在,也可以创建该视图,但是该视图不能正常使用,当基表
创建成功后,视图才能正常使用。
3.noforce:如果基表不存在,无法创建视图,该项是默认选项。
4.with read only:默认可以通过视图对基表执行增删改操作,但是有很多在基表上
的限制(比如:基表中某列不能为空,但是该列没有出现在视图中,则不能通过视
图执行 insert 操作),with read only 说明视图是只读视图,不能通过该视图进行
增删改操作。现实开发中,基本上不通过视图对表中的数据进行增删改操作。
五、视图的使用案例
前提
scott用户没有权限创建视图,如果想创建关于emp表、dept表等表的视图,sys与system用户下却没有这些表,所以需要在system用户下为scott用户赋视图权限,步骤如下:
- 运行中输入cmd,确定;
- 输入sqlplus,回车;
- 输入system用户,回车;
- 输入system密码,回车;
- 输入 grant create view to scott;,回车,完成。
案例1:创建视图存储员工编号和员工姓名
--创建视图
create or replace view view001 as select empno,ename from emp;
--查询视图
select * from 视图名称;
select * from view001;
--查询视图的定义
select view_name,text from user_views;
案例2:创建一个只读视图
create or replace view view002 as select empno,ename from emp
with read only;