【Oracle】常用对象之视图

一、什么是视图?

首先,认识下视图的概念:

  • 视图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操作,在平时使用视图开发时要额外注意。当然,我们更新了基表的数据,一定可以更新视图查询的内容。

猜你喜欢

转载自blog.csdn.net/qq_29119581/article/details/114690162