这是我第九篇MySQL的教程,本篇主要是介绍什么是视图,以及如何使用,什么情况下来使用视图,以及如何使用视图来简化SQL的编码。
什么是视图,文档是这样解释的,视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询。为了理解给出的定义,先看下面一个例子。
这条SQL语句检索了3个表的数据,这条SQL的含义是为了来查询出某个特定产品被那个客户购买了。任何需要使用这条SQL语句的结果集的人,都必须理解相关表的结构,并且还要知道通过哪些字段来创建联表的查询条件。这只是对一个特定的产品进行检索,如果想改另外一个产品,那么你需要修改WHEWE后面的查询条件了。
现在问题来了,假如你可以把这整个查询封装起来,起一个你一眼就能看懂的一眼就能知道含义的表名。就和Java里面的utils工具类一样。那么你就可以做到循环轻松地使用这个你封装好的SQL语句了。看下面例子。
这个productcustomers表其实就是你起好有特定含义的虚拟表的名字。这就是一个视图,作为视图它不包含表中应该有的任何列或者数据,它包含的只是一个SQL查询的语句而已。他和第一条SQL是等价的。至于这个视图是如何创建的别着急往后看。
对视图有了一个模糊的影响我们来了解一下,为什么要使用视图,还是那句话,我们不做无用功,习视图不能简化我的开发节省时间我是不会去学习 他的。接下来了解一下视图的应用场景。他有以下好处。
表基本相同的方式利用他们。比如SELECT操作,比如GROUP BY操作。甚至能够进行添加和更新数据。只要我们知道视图只是用来包装一些SQL语句知道他们不包含任何数据就行。
在使用视图的时候也是存在一些规则和在里面。第一,视图不能取别名,视图的命名必须是唯一的。第二,视图可以创建多个,没有数量。第三,视图创建的时候需要相应的权限,使用对操作数据库用户的权限有。第四,视图不能包含索引,不能有默认值和触发器,至于什么是触发器后面的文章会有。
在理解和知道视图的规则之后我们来看一下,如何去创建一个视图,有几个简单的语法,第一视图是用CREATE VIEW语句来创建的,第二,使用SHOW CREATE VIEW viewname;来查看创建视图的语句。第三,使用DROP删除视图,语法为DROP VIEW viewname。最后一个就是跟新视图,你可以先删除后创建,这个是最简单的。
接下来就是干货了,视图最常用的应用就是隐藏复杂的SQL通常都是一些联表的查询,例子就是的来说明说明是视图的那个例子,视图可以来重新格式化检索出来的数据,按照你给定的格式。
假如你经常需要以这种格式返回数据,就是返回一列后面带有小括号的格式,那么你就不需要在每次需要执行联表查询的时候来创建一个视图,重复使用。接下就是怎么去创建一个视图了,具体的语法是这样的。可以看出视图的创建常容易的,而且很好用,正确的使用视图可以极大地简化开发的数据复杂度。
迄今为止所有的视图都是和SELECT语句使用的,然而视图能否跟新,答案是根据情况而定的,并非所有的视图都是可以跟新的,如果视图中有分组,连表,子查询,并,聚合函数,比如Min(),Count()Sun()等,这些视图是不可以更新的。而在大多数情况下,我们跟多的是把视图和SELECT配合使用,而不是去注重用视图去跟新数据库表的结构。所以视图里面很少包含INSERT、UPDATE和DELETE关键字的。
总结,视图是虚拟的表,它包含的不是数据而是根据需要检索数据的查询,视图提供了一种MySQL的SELECT语句层次的封装,可以用来简化数据处理以及重新定义格式化数据。或者对数据库进行最基础的,毕竟创建视图是需要权限的。小米的乱情人生