一、什么是视图?
首先,认识下视图的概念:
- 视图view是一种常用的数据库对象,可理解为用户从一个或多个表中通过查询语句创建的一个"虚拟表",而创建视图的表称为"基表";
- 视图不在数据库中存储数据,数据库只是在数据字典中存放着对视图的定义而已;
- 视图创建:Oracle视图可以通过表进行创建,也可以在视图上创建,理论上视图嵌套视图可以16层,但是视图嵌套层数超过3层时,性能下降非常严重;
- 视图受到的限制:视图通常不能被修改(注意和视图类型有关,下面重点说一下),视图不能创建索引。
是不是很简单啊,关于视图的优点就很明显了。最后,通过一张图总结下视图的优点:
二、视图的基本操作
视图的有关操作如下:
-- 创建视图语句(定义视图)
CREATE
-- [OR REPLACE]
VIEW VIEW_NAME
AS SELECT empno,ename,sal FROM BASE_TABLE
--[WITH READ ONLY]
--[WITH CHECK OPTION]
-- 使用视图进行查询
SELECT empno,ename,sal FROM VIEW_NAME
-- 查看视图的结构
DESC VIEW_NAME
-- 如果VIEW_NAME是非连接视图,且满足更新条件,以insert为例
INSERT INTO VIEW_NAME(empno,ename,sal) VALUES (50,'HR', 4500);
-- 删除整个视图
Drop VIEW_NAME
从视图定义语法来看,可以将视图分为:
- 连接视图:有多个表连接而创建的视图,该视图是不能进行更新操作的。
- 非连接视图:只有一个基表而创建的视图,通常该视图是可以进行更新操作的,从而更新基表的数据。
注意:如果细分,非连接视图又可以有简单视图,复杂视图,只读视图,检查约束视图,它们在满足一定条件时可以进行insert/update/delete操作,在平时使用视图开发时要额外注意。当然,我们更新了基表的数据,一定可以更新视图查询的内容。