一. 视图(VIEW)
视图 是一个虚拟表,是从数据库中一个或者多个表中导出来的表, 不保存任何数据。视图还可以从已经存在的视图的基础上定义.
视图的作用:
- 对复杂的SQL语句进行封装
- 对于数据库敏感信息的保护
注意:
- 视图时一个虚拟表, 不保存数据
- 视图在使用上和正常的数据表一样
- 视图不包含数据,所以每次使用视图时,都必须执行查询中所需的任何一个检索操作。如果用多个连接和过滤条件创建了复杂的视图或嵌套了视图,可能会发现系统运行性能下降得十分严重。因此,在部署大量视图应用时,应该进行系统测试。
1. 视图的创建
创建视图的语法格式:
CREATE VIEW 视图名 AS
<select statement>
例如:
CREATE VIEW 视图名
AS
select 字段名1,字段名2,字段名N from 表名
2. 查看视图的基本信息
-
DESCRIBE 语句查看视图基本信息:
desc 视图名;
-
SHOW TABLE STATUS 语句查看视图基本信息
SHOW TABLE STATUS LIKE '视图名';
-
SHOW CREATE VIEW 语句查看视图详细信息:
SHOW CREATE VIEW 视图名;
在MYSQL中,information_schema 数据库下的view表中存储了所有视图的定义。通过对VIEW表的查询,可以查看数据库中所有视图的详细信息。
select * from information_schema.views;
3. 修改视图
修改视图的语法:
ALTER VIEW 视图名
AS
<select statement>
4. 修改视图内容数据
更新视图是指通过插入、更新、删除表中的数据,因为视图是一个虚拟表,其中没有数据。通过视图更新的时候都是转到基本表进行更新的,如果对视图增加或者删除记录,实际上是对其基本表增加或者删除记录.
视图的增删改查命令语法和实体表一致
但是, 并非所有视图都是可以更新的. 基本上可以说, 如果MySQL不能确定被更新的基数据, 则不允许更新. 更具体地讲,如果视图包含以下结构中的任何一种,它就是不可更新的:
- 聚合函数 SUM()、MIN()、MAX()、COUNT() 等。
- DISTINCT 关键字。
- 分组(使用group by 和 having)
- UNION 或 UNION ALL 运算符。
- 子查询
- 联结
因此视图应该主要用来进行数据的检索, 而不是更新
5. 删除视图
删除视图的语法:
DROP VIEW [IF EXISTS]
视图名 [,视图名2]...;