目录
11.1.1 视图的含义
视图是一个虚拟表,是从数据库中一个或多个表中导出来的表。视图还可以从已经存在的视图的基础上定义。
11.1.2 视图的作用
● 简单性:将经常使用到的查询定义为表,简单;
● 安全性:只能修改和查询所看见的数据;
● 逻辑数据独立性:拜托真实表结果的变化带来的影响。
11.2.1 创建视图的语法形式
基于已存在的表和查询语句;
创建视图使用CREATE VIEW语句,基本语法格式如下:
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS SELECT_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
视图属于数据库,默认在当前数据库创建新视图,若想在其他数据库创建,则将名称改为db_name.view_name.
11.2.2 在单表上创建视图
MySQL可以在单个数据表上创建视图。
11.2.3 在多表上创建视图
MySQL中也可以在两个或者两个以上的表上创建视图,可以使用CREATE VIEW语句实现。
11.3.1 DESCRIBE/DESC 视图名 语句查看视图基本信息
11.3.2 SHOW TABLE STATUS语句查看视图基本信息
SHOW TABLE STATUS LIKE '视图名';
11.3.3 使用SHOW CREATE VIEW语句可以查看视图详细定义。
SHOW CREATE VIEW 视图名;
11.3.4 在views表中查看视图详细信息
在MySQL中,information_schema数据库下的views表中存储了所有视图的定义。通过对views表的查询,可以查看数据库中所有的视图的详细信息。
SELECT * FROM information_schema.views;
11.4 修改视图属性
11.4.1 CREATE OR REPLACE VIEW语句修改视图
11.4.2 ALTER语句修改视图
ALTER语句是MySQL提供的另外一种修改视图的方法。
ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS SELECT_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
11.5 更新视图内容
更新视图是指通过视图来插入、更新、删除表中的数据,因为视图是一个虚拟表,其中没有数据。通过视图更新的时候都是转到基本表进行更新的,如果对视图增加或者删除记录,实际上是对其基本表增加或者删除记录。
Update,insert, delete。
Update view_name SET var_name= new_value;
Insert into 表名/视图名 values (键值对);
Delete from 表名/视图名 条件;
Ps:当视图中包含有如下内容时,视图的更新操作将不能被执行:
(4)视图中不包含基表中被定义为非空的列。
(1)在定义视图的SELECT语句后的字段列表中使用了数学表达式。
(2)E定义视图的SELECT语句后的字段列表中使用聚合函数。
(3)在定义视图的SELECT语句中使用了DISTINCT, UNION, TOP, GROUP BY或HAVING子句。
11.6 删除视图
当视图不再需要时,可以将其删除,删除一个或多个视图可以使用DROP VIEW语句,删除视图必须拥有DROP权限。
DROP VIEW [IF EXISTS]
view_name [, view_name] ...
[RESTRICT | CASCADE] 限制和条件