欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > MySQL视图

MySQL视图

2025/10/21 20:25:38 来源:https://blog.csdn.net/m0_70054514/article/details/145146793  浏览:    关键词:MySQL视图

视图:

一种虚拟存在的表,视图中的数据并不数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的

通俗的讲,视图只保存了查询的sql逻辑,不保存查询结果

#创建
create [or replace] view 视图名称[(列名列表)] as select语句 [with[cascaded|local]check option]#查看创建视图的语句
show create view 视图名字#查看视图数据
select * from 视图名字#修改
create [or replace] view 视图名称[(列名列表)] as select语句 [with[cascaded|local]check option]
alter view 视图名[(列名列表)] as select语句 [with[cascaded|local] check option]删除
drop view [if exists] 视图名称 [,视图名称]

视图的检查选项:

当使用with check option子句创建视图时,mysql会通过视图检查正在更改的每一行,例如插入,删除,更新,以使其符合视图的定义。mysql允许基于另一个视图创建视图,它还会检查依赖视图中的规则以保持一致性,为了确定检查的范围,mysql提供了两个选项:cascaded和local,默认cascaded

如下图所示,此时向视图里面插入一条数据实际上是在address表中插入数据

当插入不满足条件的数据时,会插入主表中,并不会出现在视图中

当创建视图时加上with cascaded check option,会出现检查选项失败,阻止插入

如下面,v2添加了检查选项,此时不仅检查v2,也要检查v1是否满足条件

若插入18,会成功,因为v3没有检查选项,此时会检查v2和v1;插入28,不会成功

Local:

向v1插入数据,不会检查;向v2插入数据,会检查当前是否满足,然后递归去找v1,是否满足v1的检查选项

视图的更新:

要是视图可更新,视图中的行与基础表中的行之间必须存在一对一的关系,如果视图包含以下任意一项,则该视图不可更新:

  1. 聚合函数或窗口函数(count(),max(),min()等)

  2. Distinct

  3. Group by

  4. Having

  5. union或union all

作用:

1.简单:

简化用户对数据的理解,简化操作,经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作指定全部的条件

2.安全:

数据库可以授权,但不能授权到数据库的特定行和特定列上。通过视图用户只能查询和修改他们所见到的数据

3.数据独立:

帮助用户屏蔽真实表结构变化带来的影响

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词