1.4 视图【view】
1、 视图是一张虚拟表,它表示一张表的部分或多张表的综合的结构。
2、 视图仅仅是表结构,没有表数据。视图的结构和数据建立在表的基础上。
1.4.1 创建视图
语法
1 | create [or replace] view 视图的名称 |
例题:
1 | mysql> create view vw_stu |
1 | 多学一招:因为视图是一个表结构,所以创建视图后,会在数据库文件夹中多一个与视图名同名的.frm文件 |
1.4.2 使用视图
视图是一张虚拟表,视图的用法和表的用法一样
1 | mysql> select * from vw_stu; |
1.4.3 查看视图的结构
语法:
1 | desc 视图名 |
例题
1 | mysql> desc vw_stu; |
1.4.4 查看创建视图的语法
语法:
1 | show create view 视图名 |
例题
1.4.5 显示所有视图
1 | #方法一: |
1.4.6 更改视图
语法:
1 | alter view 视图名 |
例题:
1 | mysql> alter view vw_stu |
1.4.7 删除视图
语法:
1 | drop view [if exists] 视图1,视图2,… |
例题
1 | mysql> drop view vw_stu; |
1.4.8 视图的作用
场景:找出语文成绩最高的男生和女生
1 | mysql> select * from (select * from stu order by ch desc) as t group by stusex; |
我们可以将子查询封装到视图中
1 | mysql> create view vw_stu |
可以将上面的子查询更改成视图,但是,结果和上面不一样
1 | mysql> select * from vw_stu group by stusex; |
原因:这是因为视图的算法造成的
1 | 1. merge:合并算法,将视图的语句和外层的语句合并后在执行。 |
解决:在创建视图的时候指定视图的算法
1 | create algorithm=temptable view 视图名 |
指定算法创建视图
1 | mysql> create algorithm=temptable view vw_stu |