mysql数据库,如何创建删除修改查询一个视图view?
发布于 作者:苏南大叔 来源:程序如此灵动~

说说mysql
中最简单基础的部分:视图view
。视图在mysql
的相关应用中,是比较常见的。使用的时候和普通的数据表是非常类似的,唯一有较大区别的地方是:视图有一定的概率是只读的,不能像数据表一样修改数据和删除数据。

苏南大叔的“程序如此灵动”博客,记录苏南大叔的编程经验文章。本文测试环境:win10
,mysql@5.7.26
。在本文中,你将了解到mysql
视图的使用方式。
基础数据表
视图是以普通的表为基础的,所以视图的前提是有普通的数据表。本文的测试数据表如下:

创建视图
确定已经有了基础的数据表之后,就可以把对基础表的select
语句转化为视图了。
可以建立一个仅仅涉及单表的视图:
这是一个最经典的带分类表的联合查询
这个视图还可以自定义字段名称,例如:

删除视图
当然,最简单的方法是在mysql
的各种可视化工具里面删除,比如:本文中苏南大叔使用的MYSQL-Front
可视化工具。但是,为了体现极客范儿以及更广泛的适用性,苏南大叔使用sql
命令来删除视图。
删除视图,虽然需要细心确认。但是,视图里面实际并没有存储数据,所以误删除了也不要特别担心。只要有建表语句就还可以瞬间恢复回来(包括所有的数据)。
修改视图
就是简单的把创建视图的create
换成了alter
。

对视图数据的增删改查
对于视图来说,把其属性想象成普通的表即可。理论上来说,经典的select
/update
/insert
/delete
语句,都是可以执行的。
但是,由于视图里面的数据只是其它表的一部分,或者多部分。所以,为了防止出现逻辑上的意外,只有数据来自同一个表的视图默认是可写的。
视图本身可能是只读的,
- 如果视图是以某一个视图为基础创建的,那么,这个视图大概率是可写的。
- 如果视图使用了聚合函数的话,那么,这个视图就必然是不可写的。
- 如果视图使用了多个表联合查询的话,那么,这个视图也是不可写的【最常见】。

最终的建议是:
可以主动或者被动的选择:只对视图执行select
语句,不执行update
/insert
/delete
语句,这是个非常好的选择。
关于视图只读的话题,后续会有新的文章进行描述。
参考文章
- https://newsn.net/say/mysql-left-join.html
- https://newsn.net/say/mysql-inner-join.html
- https://newsn.net/say/mysql-using.html
- https://newsn.net/say/mysql-having.html
结束语
更多mysql
的经验文章,可以参考苏南大叔的文章链接:


