MySQL进阶之视图
什么是视图
视图可以理解为一个虚拟表,它并不是一个真实存储数据的容器,它更像是一个或多个表的查询结果的镜像
例如你需要操作表1和表2之间的数据,可以用视图将两表查询的结果组合成新的表格展示给你,这样你就能通过查看视图来获取特定的数据,而不用再频繁的操作原始表格数据
创建视图
create(or replace) view view_name as select * from table_name
create表示创建新的视图
replace表示替换已创建的视图,可以不写
view_name表示创建的视图名称
select之后跟着的是查询语句
示例中此时创建了两张class表,现在要用union
返回两表合并的结果 如下:
那么现在我想持久化的保存这个结果该怎么办呢?
直接创建视图:
-- 将查询语句直接复制到as后面
create view stu_view as select * from class1 union select * from class2;
注意:视图创建时不允许有相同字段(列),在进行多表查询时需要额外注意
查看视图
此时视图就已经创建好了
它和sql建表语句一样支持desc和select,你可以将他当做一张新的表格
-- 查询表数据
select * from stu_view;
-- 查看视图结构
desc stu_view;
更新视图
更新视图是指在原表的基础上进行增(insert into)、删(delete)、改(update)的操作,视图并不能直接修改数据,因为它只是一个虚拟表,并非用于存储数据
示例:当修改class2
的数据时视图stu_view
的内容也会跟着发生变化
-- 更新原表数据
update class2 set name="钱10" where name = "钱十";
-- 查看修改后的视图
select * from stu_view;
可以看到当原表内容发生变化时,视图的内容也会跟着修改
修改视图
修改视图的语句与创建基本一致
replace view_name as select condition;
replace修改视图规则
condition新的查询条件
删除视图
删除视图时,只能删除视图的定义,不会删除数据
-- 删除指定视图
drop view view_name;
-- 删除多个视图 view_name2指需要删除的其他视图
drop view View_name [,view_name2];