MySQL视图的建立与使用

学习点微信


    1.什么是视图?less

    2.为何要使用视图?编辑器

    3.视图应该怎么使用呢?函数



1.什么是视图?


    视图是MySQL的一种虚拟表,实际的表咱们能够看到每一行的数据,而视图是另外一种形式的表,他能够将任何的查询结果变成一种虚拟的表方便下一次进行查询。


2.为何要使用视图?


    1.可重用
学习

    2.简化复杂的SQLspa

    3.使用表的组成部分而不是整个表.net

    4.保护数据,能够给用户授予表的特定部分的访问权限而不是整个表的访问权限blog


3.怎么使用视图?


      例如以下两张表,表中能够看出班级表和学生表两个表关系是1对多的,外键在学生方


  

    假如我如今要查询班级为三国演义的全部学生应该怎么查询?可能你想到了用内链接Inner join 或者外链接的Left join或rigth join,而后查询结果以下所示。


  

    结果显然意见是没有错误的,张飞和关羽都被查询出来了.可是你会发现这样写重用性太差了,若是我又要查询水浒传班那么又要编写这么长的一条两表链接SQL,而视图的优势就在于此可重用性,可让用户少写不少重复的SQL.接下来咱们开始建立视图并使用视图来对比一下。


  

    结果能够看出来视图建立之后咱们少写了不少代码,且重用性也很强,其实视图就至关于给查询的结果取了一个别名,且这个别名包含查询的结果,咱们下一次用的使用直接用别名就好了也就是视图。


4.视图更新的注意点


    迄今为止全部试图都是和SELECT语句使用的,而后视图是否能够更新呢?得视状况而定.ci

    一般,视图是可更新的(即,能够对他们进行INSERT,UPDATE和DELETE)可是更新视图将更新基表,由于视图自己没有数据若是对视图进行增删改其实是对基表进行增删改.get

    可是,并非全部视图都是可更新的,若是MySQL不能正确地肯定被更新的基数据,则不容许更新,若是视图定义中有如下操做,则不能更新视图;   

    1.分组(使用GROUP BY和HAVING)

    2.联结

    3.子查询

    4.并

    5.聚合函数

    6.DISTINCT

    7.导出(计算)列








本文分享自微信公众号 - 大猫的Java笔记(damaoJava)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。