学习点:
1.什么是视图?
2.为什么要使用视图?
3.视图应该怎么使用呢?
1.什么是视图?
视图是MySQL的一种虚拟表,实际的表我们可以看到每一行的数据,而视图是另一种形式的表,他可以将任何的查询结果变成一种虚拟的表方便下一次进行查询。
2.为什么要使用视图?
1.可重用
2.简化复杂的SQL
3.使用表的组成部分而不是整个表
4.保护数据,可以给用户授予表的特定部分的访问权限而不是整个表的访问权限
3.怎么使用视图?
例如如下两张表,表中可以看出班级表和学生表两个表关系是1对多的,外键在学生方。
假如我现在要查询班级为三国演义的所有学生应该怎么查询?可能你想到了用内连接Inner join 或者外连接的Left join或rigth join,然后查询结果如下所示。
结果显然意见是没有错误的,张飞和关羽都被查询出来了.但是你会发现这样写重用性太差了,如果我又要查询水浒传班那么又要编写这么长的一条两表连接SQL,而视图的优点就在于此可重用性,可以让用户少写很多重复的SQL.接下来我们开始创建视图并使用视图来对比一下。
结果可以看出来视图创建以后我们少写了很多代码,且重用性也很强,其实视图就相当于给查询的结果取了一个别名,且这个别名包含查询的结果,我们下一次用的使用直接用别名就行了也就是视图。
4.视图更新的注意点
迄今为止所有试图都是和SELECT语句使用的,然后视图是否可以更新呢?得视情况而定.
通常,视图是可更新的(即,可以对他们进行INSERT,UPDATE和DELETE)但是更新视图将更新基表,因为视图本身没有数据如果对视图进行增删改实际上是对基表进行增删改.
但是,并不是所有视图都是可更新的,如果MySQL不能正确地确定被更新的基数据,则不允许更新,如果视图定义中有以下操作,则不能更新视图;
1.分组(使用GROUP BY和HAVING)
2.联结
3.子查询
4.并
5.聚合函数
6.DISTINCT
7.导出(计算)列
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有