mysql视图能用参数吗 mysql视图可以传参数吗_mysql 视图


本部分主要讲解mysql数据库中的进阶知识和实际操作3:视图。


一、视图简介

1.视图概念:


mysql视图能用参数吗 mysql视图可以传参数吗_mysql 视图_02


  • 查出来的结果保存一下,就是一个视图:


mysql视图能用参数吗 mysql视图可以传参数吗_数据_03


2.视图的特性:


mysql视图能用参数吗 mysql视图可以传参数吗_mysql视图能用参数吗_04


  • 视图数据都是基于基表的,基表变,视图变;
  • 视图多用于给客户看,这样客户改不了原始数据;

3.视图的作用:


mysql视图能用参数吗 mysql视图可以传参数吗_mysql 视图_05


  • 提升性能,是因为之前有些限制条件salary>2000的已经创建好了,不用再查,直接在这个视图上操作;

二、视图创建/修改/删除

2.1 创建视图

2.1.1 视图和表都是数据库对象


mysql视图能用参数吗 mysql视图可以传参数吗_mysql视图能用参数吗_06


  • 创建好之后,在这里查看视图:


mysql视图能用参数吗 mysql视图可以传参数吗_mysql 视图_07


  • 再直接从视图取数:【就不用再写复杂的查询;提高查询效率;数据比较独立】


mysql视图能用参数吗 mysql视图可以传参数吗_mysql 视图_08


2.1.2 创建不同的视图【视图名称应该不同】

  • 建议先写视图的select的部分


mysql视图能用参数吗 mysql视图可以传参数吗_视图和表可以同名吗_09


2.1.3 修改视图名称


mysql视图能用参数吗 mysql视图可以传参数吗_mysql 视图_10


2.1.4 创建视图的其他参数

  • 加上参数:with check option


mysql视图能用参数吗 mysql视图可以传参数吗_mysql视图能用参数吗_11


  • 运行结果:


mysql视图能用参数吗 mysql视图可以传参数吗_mysql视图能用参数吗_12


  • 此时再从视图中取数据【上面给的参数不同,取数的机制不同】:

2.3 视图机制


mysql视图能用参数吗 mysql视图可以传参数吗_mysql视图_13


  • 替代式:写的东西到时候会在内部被转成SQL语句

创建的视图是emp_s_v,又写了select * from emp_s_v,内部相当于是这样运行的select * from (select * from emp where salary >2000) t ;

  • 具化式:内部是先得到>2000的数据表放在内存,再外层from是从内存的表里取的

2.4 具体讲解每个参数

  • 参数添加的位置:光标处


mysql视图能用参数吗 mysql视图可以传参数吗_mysql视图能用参数吗_14


merge:处理方式替代式,可以直接更新真实表中的数据;

你改了视图里的数据,真实表里的数据也会更改;


mysql视图能用参数吗 mysql视图可以传参数吗_mysql视图能用参数吗_15


  • temptable: 具化式,由于数据存在临时表中,所以不可进行更新操作


mysql视图能用参数吗 mysql视图可以传参数吗_mysql视图能用参数吗_16


最后一句是指,undefined是一步到位直接继续拿

2.5 总结


mysql视图能用参数吗 mysql视图可以传参数吗_mysql 视图_17


mysql视图能用参数吗 mysql视图可以传参数吗_数据_18


  • 运行了上图语句,更新视图时,这个数据必须是大于2000的


mysql视图能用参数吗 mysql视图可以传参数吗_数据_19



三、视图不可更新部分【只要视图中的数据不是直接来源于基表,就不能直接修改,如:运算后的数据】

3.1可以更改的部分


mysql视图能用参数吗 mysql视图可以传参数吗_mysql视图_20


  • 此时去改视图的数据,原表的数据也更改了,因为用了merge关键字,但是也有一些不能改的部分


mysql视图能用参数吗 mysql视图可以传参数吗_视图和表可以同名吗_21


3.2 不可更改的例子


mysql视图能用参数吗 mysql视图可以传参数吗_数据_22


  • 生成的avg就不能改:


mysql视图能用参数吗 mysql视图可以传参数吗_视图和表可以同名吗_23