含义:
虚拟表,和普通的表一样使用;是mysql 5.1 版本出现的新特性,是通过表动态生成的数据,只保存了SQL逻辑,不保存查询结果
好处:
① 重用SQL语句
② 简化复杂的SQL操作,不必知道它的查询细节
③ 保护数据,提高安全性
示例:
//查询姓张的学生名和专业名
//使用视图前
select stuName,majorName
from stuinfo s
inner join major m on s.majorid=m.id
where s.stuName like '张%';
//创建视图
create view v1
as
select stuName,majorName
from stuinfo s
inner join major m on s.majorid=m.id;
//使用视图后
select * from v1 where stuName like '张%';
创建视图的语法:
create view 视图名
as
查询语句(一般是较复杂的SQL语句);
视图的修改:
//方式一
create or replace view v2
as
查询语句;
//意思是如果视图v2存在就修改,不存在就创建
//方式二
alter view 视图名
as
查询语句;
视图的删除:
drop view 视图名,视图名...;
查看视图:
desc 视图名;
show create view 视图名;
视图的更新:
创建的视图支持普通表同样方法的增删改查
以下情况不支持增删改查:
① 包含以下关键词的SQL语句:分组函数、distinct、group by、having、union、union all;
② select中包含子查询
③ join 语句
④ from一个不能更新的视图
⑤ where子句的子查询引用了from子句中的表
⑥ 常量视图