Oracle视图

视图可以理解为数据库中一张虚拟的表。

它是建立在已有表的基础上, 赖以建立的这些表称为基表。

通过一张或者多张基表进行关联查询后组成一个虚拟的逻辑表。

查询视图,本质上是对表进行关联查询。

 

视图的本身是不包含任何数据,只是一个查询结果,当基表的数据发生变化时,视图里面的数据也会跟着发生变化。向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的SELECT语句。视图向用户提供基表数据的另一种表现形式。

 

视图它可以使复杂的数据简单化,还可以对表结构设计的补充,控制数据的访问,避免重复访问相同的数据,增加了安全性。

 

创建视图的语法如下:

 

CREATE [OR REPLACE] VIEW view [(aliad[,alias]...)]

AS [WITH READ ONLY CONSTRAINT]

 

OR REPLACE:如果视图已经存在,则替换旧视图。

WITH READ ONLY:默认不填的,用户是可以通过视图对基表执行增删改操作,但是有很多在基表上的限制(比如:基表中某列不能为空,但是该列没有出现在视图中,则不能通过视图执行 insert 操作,或者基表设置了某些约束,这时候插入视图或者修改视图的值,有可能会报错), WITH READ ONLY 说明视图是只读视图,不能通过该视图进行增删改操作。但是在现实开发中,基本上不通过视图对表中的数据进行增删改操作。

 

视图也分成几个类别:

 

简单视图是单个表并且不包含函数或表达式的视图,可以在该视图上可以执行DML语句(即可执行增、删、改操作)。

 

复杂视图就是指那些包含函数、表达式或者分组数据的视图,在该视图上执行DML语句时必须要符合特定条件。通常我们在定义复杂视图时必须为函数或表达式定义别名。

 

连接视图指那些基于多个表建立的视图,一般来说不会在该视图上执行INSERT、UPDATE、DELETE操作。

 

只读视图就是只允许进行SELECT操作的视图,在该视图时指定WITHREADONLY选项。在这种视图上不能执行INSERT、UPDATE、DELETE的操作。

 

 

CHECK约束视图在视图上定义CHECK约束,在该视图上执行INSERT或UPDATE操作时,数据必须符合查询结果。

 

-- 创建简单视图:

CREATE VIEW   empvu

AS SELECT  employee_id, last_name, salary

FROM    employees;

 

--查询结果:

 

CREATE VIEW 子句中各列的别名应和子查询中各列相对应。

 

当视图定义中包含以下元素之一时不能使用delete:

--组函数

--GROUP BY 子句

--DISTINCT 关键字

--ROWNUM 伪列

 

当视图定义中包含以下元素之一时不能使用update:

--组函数

--GROUP BY子句

--DISTINCT 关键字

--ROWNUM 伪列

--列的定义为表达式

 

当视图定义中包含以下元素之一时不能使insert:

--组函数

--GROUP BY 子句

--DISTINCT 关键字

--ROWNUM 伪列

--列的定义为表达式

--表中非空的列在视图定义中未包括

 

删除视图只是删除视图的定义,并不会删除基表的数据

 

-- 删除简单视图:

DROP VIEW empvu;

 

--查询结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值