天天看点

视图

视图(view)实际上是一张或者多张表上的预定义查询,这些表称为基表。从视图中

查询信息与从表中查询信息的方法完全相同。只需要简单的

select…from 即可。

视图具有以下优点:

1.

可以限制用户只能通过视图检索数据。这样就可以对最终用户屏蔽建表时底层的基

表。

2.

可以将复杂的查询保存为视图。可以对最终用户屏蔽一定的复杂性。

3.

限制某个视图只能访问基表中的部分列或者部分行的特定数据。这样可以实现一定

的安全性。

4.

从多张基表中按一定的业务逻辑抽出用户关心的部分,形成一张虚拟表。

语法结构:创建视图

create [or replace]

[{force|noforce}] view view_name

as

select查询

[with read only

constraint]

语法解析:

1. or replace:如果视图已经存在,则替换旧视图。

force:即使基表不存在,也可以创建该视图,但是该视图不能正常使用,当基表

创建成功后,视图才能正常使用。

noforce:如果基表不存在,无法创建视图,该项是默认选项。

4. with read

only:默认可以通过视图对基表执行增删改操作,但是有很多在基表上

的限制(比如:基表中某列不能为空,但是该列没有出现在视图中,则不能通过视

图执行

insert 操作),with read only

说明视图是只读视图,不能通过该视图进行

增删改操作。现实开发中,基本上不通过视图对表中的数据进行增删改操作。

案例 3:基于 emp 表和 dept

表创建视图

代码演示:视图

sql> create or replace view empdetail

2 as

select empno,ename,job,hiredate,emp.deptno,dname

4 from emp join dept on

emp.deptno=dept.deptno

5 with read only

6 /

view created

sql> select * from empdetail; ①

empno ename job hiredate

deptno dname

7369 smith clerk 17-12 月-80 20 research

7499 allen salesman 20-2 月 -81 30 sales

7521 ward

salesman 22-2 月 -81 30 sales

7566 jones manager 02-4 月

-81 20 research

7654 martin salesman 28-9 月 -81 30

sales

7698 blake manager 01-5 月 -81 30 sales

7782

clark manager 09-6 月 -81 10 accounting

7788 scott analyst

19-4 月 -87 20 research

7839 king president 17-11 月-81

10 accounting

7844 turner salesman 08-9 月 -81 30 sales

7876 adams clerk 23-5 月 -87 20 research

7900 james

clerk 03-12 月-81 30 sales

7902 ford analyst 03-12 月-81

20 research

7934 miller clerk 23-1 月 -82 10 accounting

14 rows selected

代码解析:

对视图可以像表一样进行查询。该视图中隐藏了员工的工资。

删除视图可以使用“drop view 视图名称”,删除视图不会影响基表的数据