含义:一种虚拟存在的表,行和列的数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的,只保存了SQL逻辑,不保存查询结果,和普通表一样使用
Mysq5.1版本出现的新特性,是通过表动态生成的数据
应用场景:(1)多个地方用到同样的查询结果
(2)该查询结果使用的SQL语句较复杂
例子:查询姓张的学生名和专业名
#未使用视图
SELECT stuname,majorname
FROM stuinfo AS s
INNER JOIN major AS m
ON s.majorid=m.id
WHERE s.stuname LIKE ‘张%’
#使用视图
CREATE VIEW v1
AS
SELECT stuname,majorname
FROM stuinfo AS s
INNER JOIN major AS m
ON s.majorid=m.id
SELECT * FROM v1 WHERE stuname LIKE ‘张%’
一、创建视图
语法:
CREATE VIEW 视图名
AS
查询语句;
视图的好处:(1)重用SQL语句
(2)简化复杂的SQL操作,不必知道它的查询细节
(3)保护数据,提高安全性
二、视图的修改
1、方式一
Create or replace view 视图名
AS
查询语句;
2、方式二
Alter view 视图名
As
查询语句;
三、视图的删除
语法:
Drop view 视图名,视图名,...;
四、视图的查看
DESC 视图名;
SHOW CREATE VIEW 视图名;
五、视图的更新
1、插入
INSERT INTO view VALUES(...);
2、修改
UPDATE view SET...;
3、删除
DELETE FROM view ...;
4、具备以下特点的视图不允许更新
(1) 包含以下关键字的SQL语句:分组函数、distinct、group by、having、union或者union all
(2) 常量视图
(3) SELECT中包含子查询
(4) JOIN
(5) FROM一个不能更新的视图
(6) WHERE子句的子查询引用了FROM子句中的表