MySQL——视图
1. 视图的概念
数据库中的视图指的是一个虚拟表,其内容由查询定义。同真实的表一样,视图也是由行与列构成的。视图的数据来源由SQL语句查询得到,不存储数据。
1. 视图的创建方法
1 -- 格式: create view 视图名称 as SQL查询; 2 3 -- 说明: 4 5 -- 1) Create view 关键字 6 7 -- 2) 视图名称: 就是虚拟表名 8 9 -- 3) As 关键字 10 11 -- 4) SQL查询, 即: select查询语句 通过视图可以有选择的显示字段. 12 Create view v_age as select * from student where age<30;
3. 查看视图创建语句
1 Show create view 视图名称 \G
4 查看视图结构
1 Desc 视图名称
5. 显示所有视图
1 select * from information_schema.views \G
6. 修改视图
1) 方法一:
1 alter view 视图名称 as select查询;
2) 方法二:
1 Create or replace view 视图名称 as select查询;
7. 更新视图中数据
先更新原来的数据表的数据,在查看视图中的数据
更新原来的表后,再查看(视图查找不到原来表被修改的数据的信息,所以会少一条数据)
注意: 通过视图修改,则是修改的原数据表中的内容. 此时 视图中的数据与原始表数据是同步的.
建议: 一般不通过视图修改数据.
8. 删除视图
1 Drop view 视图名称
9. 视图算法
Navicat的使用方法:
概述: 指的是一个视图是在什么时候执行,依据哪些方式执行
1) Merge合并
合并的执行方式,每当执行的时候,先将视图的sql语句与外部查询视图的sql语句,合并在一起,最终执行;
1 create ALGORITHM= Merge view 视图名称 as SQL查询;
2) Temptable临时表
临时表模式,每当查询的时候,将视图所使用的select语句生成一个结果的临时表,再在当前的临时表内进行查询。(也就是先执行视图)
1 create ALGORITHM= TEMPTABLE view 视图名称 as SQL查询;
3) Merge, Temptable算法的差异:
实例: 统计表: tb_phone , 同类手机的最高价格的产品?
10. 视图的应用场景
1) 隐藏某些字段,保护数据
2) 应用复杂的SQL语句进行简化语句输入