MySQL 视图
1. 视图的定义
视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
2. 视图的常用操作
1.创建
CREATE VIEW 视图名 AS [DQL语句(SELECT)]
注:查看视图DESC 视图名或者SHOW CREAT VIEW 视图名,与查看表语法基本一致。
例如:
CREATE OR REPLACE VIEW v1 as select concat(lower(substr('Abc',1,1)),upper(substr('Abc', 2)) ) res;
2 视图的修改
#方式一 CREATE OR REPLACE VIEW 视图名 AS [DQL]
# 方式二 ALTER VIEW 视图名 AS [DQL]
3. 视图的删除
DROP VIEW 视图1,视图2,视图3
4. 视图支持数据插入
INSERT INTO 视图名 values(XXX, XXX, XXX);
注意:对视图进行DML(UPDATE|SELECT|DELETE)操作会影响原表的数据
具备以下特点的视图不允许更新:
1. 包含分组函数(group by)、distinct、having、union或者union all
2. 常量视图
3. SELECT包含子查询
4. 包含join的连接表查询
5. FROM A, A为一个没有更新权限的表
6. where子句的子查询引用了from子句中的表:
实际情况下,对视图进行更新操作是很少的,如果出现需要禁止视图的DML操作,可以考虑以上6种情况来创建视图。
3. 视图与表的对比
对存储而言,视图只是保存了SQL逻辑,而表是保存了数据;
对操作而言,视图一般不使用增删改,主要做查询使用;