一、MySQL视图
视图:MySQL从5.0.1版本开始提供视图功能。一种虚拟存在的表,行和列的数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的,只保存了sql逻辑,不保存查询结果。
1、应用场景:
- -多个地方用到同样的查询结果
- -该查询结果使用的sql话句较复杂
2、视图的优点
- ·重用sql语句
- ·简化复杂的sql操作,不必知道它的查询细节
- ·保护数据,提高安全性 (给他人访问视图表,可以让原始表中的隐私数据字段得到有效保护)
#简单示例:查询grade>=60分同学的信息,并创建为一个视图
create view view_name1 as
select studentname,grade,maiorname from student as s
inner join maior as m on s.majorid=m.maiorid where s.grade>=60;
#再次查grade最大值
select max(grade) from view_name1;
#查询grade>=60,并且为前三的同学
select * from view_name1
order by grade desc
limit 3;
3、创建视图
- create view view_name as select ......[复杂查询语句]; #创建视图
- select * from view_name where..... #视图的使用和表一样
4、修改视图(修改逻辑)
- ① create or replace view 视图名 as 查询语句;
- ② alter view 视图名 as 查询语句;
5、删除视图
- 语法:drop view 视图名,视图名,...;
6、查看视图
- DESC 视图名;
- SHOW CREATE VIEW 视图名;
7、更新视图(更新数据)
- 注意简单的视图表同样可以执行增(INSERT INTO)删(DELETE FROM )改(UPDATE ... SET )语句的操作,用法和操作表一样,同时在试图中更新,原始表也随之被更新。
- 不可以更新的视图:① 包含以下关键字的sql语句:分组函数、distinct、group by、having、union或者union all ;②常量视图;③ Select中包含子查询;④ join;⑤ from一个不能更新的视图;⑥ where子句的子查询引用了from子句中的表。