视图可以理解为数据库中的虚拟表。
基于现有表创建,这些表称为基表。
在一个或多个qfdlc表中执行相关查询后,配置虚拟逻辑表。
查询视图本质上是将查询与表相关联。
视图本身不包含数据,只是查询结果,当基表中的数据发生更改时,视图中的数据也会发生更改。 为视图提供数据内容的语句是SELECT语句,视图可以理解为保存的SELECT语句。 视图为用户提供了基本表数据的另一种表示形式。
视图简化了复杂的数据,补充了表结构设计,控制了对数据的访问,避免了对同一数据的重复访问,并提高了安全性。
创建视图的语法如下:
create [ or replace ] view view [ (aliad [,alias].]
as [ with只读约束]
OR REPLACE :如果视图已存在,则替换旧视图。
WITH READ ONLY :默认情况下不输入。 用户可以通过视图对基表执行添加/删除操作,但基表有很多限制。 例如,基表中的列不能为空,但如果该列未显示在视图中,则无法通过视图执行insert操作。 或者,基表中设置了某些约束。 此时,如果插入或更改视图的值,可能会报告错误。 但是,在现实的开发中,基本上不进行通过视图追加或删除表中的数据的操作。
视图也分为几个类别。
简单视图是不包含函数或表达式的单个表的视图,可以执行DML语句。 这意味着可以执行添加、删除和更改操作。
复杂视图是包含执行DML语句时必须满足特定条件的函数、表达式或分组数据的视图。 通常,在定义复杂视图时,必须定义函数或表达式的别名。
连接视图是基于多个表创建的视图,通常不在此视图中执行INSERT、UPDATE或DELETE操作。
只读视图是只允许选择操作的视图,指定WITHREADONLY选项。 在这些视图中,无法执行插入、更新和删除操作。
CHECK约束视图为视图定义CHECK约束。 在此视图中执行插入或更新操作时,数据必须与查询结果匹配。
-创建简单视图:
创建视图EMP vu
AS SELECT employee_id,last_name,salary
来自员工;
-查询结果:
CREATE VIEW子句中每一列的别名必须与子查询中的每一列相对应。
如果视图定义包含以下元素之一,则delete:不可用
-组函数
--GROUP BY子句
--DISTINCT关键字
--ROWNUM伪列
如果视图定义包含以下元素之一,则update:不可用
-组函数
--GROUP BY子句
--DISTINCT关键字
--ROWNUM伪列
-列的定义是表达式
如果视图定义包含以下元素之一,则insert:不可用
-组函数
--GROUP BY子句
--DISTINCT关键字
--ROWNUM伪列
-列的定义是表达式
-视图定义中不包括表中的非空列
删除视图只会删除视图定义,而不会删除基表中的数据
-删除简单视图:
DROP VIEW empvu;
-查询结果: