1 视图概述
数据库中的视图是一个虚拟表,视图包含一系列带有名称的行和列数据。行和列数据来自自由定义视图查询所引用的表,并且在引用视图时动态生成。
视图是一个或者多个表中导出的,视图的行为与表非常相似,但是视图是一个虚拟表。在视图中用户可以使用SELECT语句查询数据,以及使用INSERT、UPDATE和DELETE修改记录。
2 创建视图
视图中包含了SELECT查询的结果,因此视图的创建基于SELECT语句和已存在的数据表,视图可以建立在一张表上,也可以建立在多张表上。
- 创建视图的语法形式:
create [or replace] view view_name [(column_list)] as select_statement;
3 查看视图
- 使用DESCRIBE语句查看视图基本信息:
describe view_name;
- 使用SHOW TABLE STATUS语句查看视图基本信息:
show table status like 'view_name';
- 使用SHOW CREATE VIEW语句查看视图详细信息:
show create view view_name;
- 在views表中查看视图详细信息:
select * from information_schema.views;
4 修改视图
- 使用CREATE OR REPLACE VIEW语句修改视图:语法格式同创建视图的语法
- 使用ALTER语句修改视图:
alter view view_name [(column_list)] as select_statement;
5 更新视图
更新视图是指通过视图表来插入、更新、删除表中的数据,因为视图是一个虚拟表,其中没有数据,通过视图更新的时候都是转到基本表上进行更新的,如果对视图增加或者删除记录,实际上是对其基本表增加或删除记录。其修改时的语法和基本的INSERT、UPDATE、DELETE语法一致,只需将表名替换为视图名即可。
当视图中包含有如下内容时,视图的更新操作将不能被执行:
- 视图中不包含基表中被定义为非空的列
- 在定义视图的SELECT语句后的字段列表中使用了数学表达式
- 在定义视图的SELECT语句后的字段列表中使用聚合函数
- 在定义视图的SELECT语句中使用了DISTINCT、UNION、TOP、GROUP BY或HAVING子句。
注意: 避免在视图上修改数据,只用作查询
6 删除视图
- 删除视图的语法格式:
drop view [if exists] view_name,...;