简述:
视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。对视图的修改会影响基本表。它使得我们获取数据更容易,相比多表查询。
使用场景:
创建试图的语句:
create view ViewName as + SQL查询语句
扩展:
视图的优缺点?
视图的优点
使用视图可以定制化一些数据,限制范围,过滤条件,从这个视图得到的数据因为都限制过滤定制化处理了,方便你去分析
聚合函数,多个表连接展示
合并分离的数据,分区试图
这个我要多说一下,类似于多个表并称成一个表。类似于三国赤壁里面的铁索连舟,主要特征是里面的关键词union。
尤其是很多表因为设计的问题,尤其是实际上很多结构相似表,比如说有的系统租聘订单,赠品单,销售订单虽然意义不同,但是里面很多字段差不多都是一个意思,比如交易时间,订单编号,交易客户等。但是呢,也有各自的比较有特色独有的字段,比如租聘的时间长短,赠品关联的订单等一大堆多余出来的字段,其实也可以会根据需求在视图展示出来。
保证数据安全
这个涉及到视图到底能不能修改和怎么修改,限制是什么后面我会单独讲。
视图的缺点
首先视图是一个虚表,很多在表上性能优化的手法可能就没有,而且数据库引擎要构建视图有一个过程,类似一个查询,视图的性能以及优化你就不要又太高的要求。你可以把他看作一个查询,而不是一个表真的优化也最好基于查询的优化来优化可能好一些。
修改限制
视图不好修改,我建议最好别对视图修改,有什么问题最好还是对组成视图的基表来操作,而且有的视图在某些数据库或者某些条件下是不能修改的。
视图能不能修改
这个问题其实没什么,但是很多博客抄来抄去,只提了一嘴“某些条件下”不能修改,到底是什么情况“才是某些条件呢”?甚至有的直接说不能,实际上是不严谨的。
首先视图是可以改的,但是在某些条件下是不能做某些更新操作,实际情况我整理搜集的如下:
l可以在简单视图中执行DML 操作
l当视图定义中包含以下元素之一时不能使用delete:
•组函数
•GROUPBY子句
•DISTINCT 关键字
ROWNUM 伪列
当视图定义中包含以下元素之一时不能使用update :
l组函数
lGROUP BY子句
lDISTINCT 关键字
lROWNUM 伪列
l列的定义为表达式
当视图定义中包含以下元素之一时不能使用insert :
l组函数
lGROUP BY 子句
lDISTINCT 关键字
lROWNUM 伪列
l列的定义为表达式
l表中非空的列在视图定义中未包括
引用:https://zhuanlan.zhihu.com/p/265466338
引用:https://www.cnblogs.com/init-qiancheng/p/14584899.html
支持小微:
腾讯云 搞活动了?玩服务器的可以搞搞。就这几天时间。
云服务器限时秒杀,1核2G 首年95元!
链接:https://curl.qcloud.com/RX2amrlR
右下角,您点一下在看图片
小微工资涨1毛
商务合作QQ:185601686





