视图的建立,删除,查询,更新操作
前言:
由于视图最终是建立在表的基础上的,因此对视图的插入、修改、删除等各种操作最终会转化为基本表的操作,视图的更新和视图的查询一样,要通过视图消解,转化为对基本表的更新操作。
更新视图,查询视图,修改视图,删除视图的操作与基本表的规则一模一样,不过视图哟有更多的条件限制。
基本表的操作:https://blog.csdn.net/Dch19990825/article/details/90439500
1.建立视图
create view [(列名1,列名2...)]
as
子查询
[with check option] --这个选项决定在对视图的更新操作是否符个子查询的约束
- 创建视图VA包含SC表的sid,cid的属性
create view VA (sid,cid)
as
(
select sid,cid
from sc
)
with check option
2.删除视图
drop view 视图名
-
删除视图VA
drop view VA
3.查询视图
查询视图可以与基本表一起查询,格式与基本表的查询相同
--查询参与选课的学生的信息
select student.*
from VA ,Student
where VA.sid=student.sid
4.视图的更新
一般的数据库系统不支持以下几种的数据更新操作
- 由两个以上的基本表导出的视图
- 视图的字段来自表达式或聚集函数
- 视图中由分组子句或使用了distinct语句
- 视图定义中由嵌套查询,且内层查询涉及了与外层一样的改视图的基本表
- 在一个不允许更新的视图上定义的视图
一般的,行列子集视图是可更新的
如果需要确保任何通过视图的更新都必须符合视图的select语句中所设置的基本条件,可以通过在创建视图时带 with check option选项进行限制,这样在视图中进行增删改数据时,RDBMS都会检查视图定义的条件,若不满足条件,则拒绝执行该操作
例如在视图VA中添加(‘05’,‘04’)
insert into VA (sid,cid)
values('05','04')
之后在SC表中将多出一个记录(‘05’,‘04’,null)