1 概述
一种虚拟存在的表,行和列的数据来自定义视图的查询中使用的表,并且在使用视图时动态生成,只保存了SQL逻辑,不保存查询结果。和普通表使用方式一样。
MySQL5.0.1版本出现的新特性,是通过表动态生成的数据。
应用场景:
- 多个地方用到同样的查询结果。
- 该查询结果使用的SQL语句较复杂。
示例:
CREATE VIEW
my_vi
AS
SELECT
studentname,majorname
FROM
students
INNER JOIN
major m
ON
s.majorid = m.majorid
WHERE
s.majorid = 1;
优点:
- 重用SQL语句。
- 简化复杂的SQL操作,不必知道它的查询细节。
- 保护数据,提高安全性。
2 创建视图
语法:
CREATE VIEW
视图名
AS
查询语句;
3 修改视图
修改视图的查询语句。
3.1 方式一
语法:
CREATE [OR REPLACE] VIEW
视图名
AS
查询语句;
3.2 方式二
语法:
ALTER VIEW
视图名
AS
查询语句;
4 删除视图
语法:
DROP VIEW
视图名1,
视图名2,
...
视图名n;
5 查看视图
语法:
SHOW CREATE VIEW 视图名;
以上查看方式可以查看,建图语句。也可以用查看表结构的语句查看视图,但是只能显示视图的字段。
6 视图的更新
具备以下特点的视图不允许更新:
- 包含如下关键字的SQL语句:分组函数、distinct、group by、having、union或者union all。
- 常量视图。
- select中包含子查询。
- 用到JOIN的查询语句。
- FROM一个不能更新的视图。
- WHERE子句的子查询引用了FROM子句中的表。
6.1 插入
语法:
INTSERT INTO
视图名
VALUES(值1,值2,...,值n)
6.2 修改
语法:
UPDATE
视图名
SET 属性名1 = 值1,属性名2 = 值2,...,属性名n = 值n;
6.3 删除
语法:
DELETE FROM
视图名
WHERE
筛选条件;
7 视图与表的区别
| 创建语法的关键字 | 是否占用实际物理空间 | 使用 | |
|---|---|---|---|
| 视图 | CREATE VIEW | 只保存了SQL逻辑 | 一般不能增删改 |
| 表 | CREATE TABLE | 保存了数据 | 能增删改查 |

MySQL视图是一种虚拟存在的表,根据查询逻辑动态生成数据,用于重用SQL语句、简化复杂操作并提高数据安全性。创建视图、修改和删除视图各有其特定语法,但某些特定条件的视图不允许更新。视图与表的主要区别在于,视图不存储实际数据,仅保存查询逻辑。

5025

被折叠的 条评论
为什么被折叠?



