【编程学习】关于SQL视图我们需要了解什么
【编程学习】关于SQL视图我们需要了解什么
6Young视图要点
视图是一种虚拟存在的表,并且是动态生成的,只保存了SQL逻辑,不保存查询结果,它具有以下的一些特征:
- 虚拟表、和普通表一样使用
- 临时性:临时组建的表格,
- 可以重复利用
当我们遇到多个地方用到同样的查询结果或者该查询结果使用的SQL语句较复杂等情况时,我们就可以用视图来处理。
由此很容易让我们产生思考,既然视图并不保存数据,当我们修改视图中的数据时,会发生什么?
先来说结论:更新视图里面的数据,视图的更新实际上是对基本表增加或者删除记录,一般情况下都不建议对视图进行操作。
不管是update、delete还是insert,在常规情况下的修改都会直接修改原表中的数据,但是有一些特殊情况:
- 比如原表t有一列:column,在视图中,我们就create view v1 as select column c1, column c2 from t;此时v1中,有c1、c2两列全部对应原表的column列,此时如果insert(100,200),插入不一致的列,会有冲突导致插入失败。
总之,会导致数据不满足表定义限制时的修改就会失败。
其他不可更新的视图类型
视图的可更新性和视图中查询的定义有关系,以下6种类型的视图不可更新:
- 包含:分组函数,distinct,group by, having, union, union all
- 常量视图:select ‘john’ name;
- select 中包含子查询
- select 中包含 join
- select from一个不能更新的视图
- where子句的子查询引用了from子句中的表
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果