目录

一、什么是视图

二、视图的优点

三、视图缺点

四、视图的操作

4.1、创建视图

4.2、使用视图

4.3、查看视图

4.4、更新视图 

4.5、删除视图


一、什么是视图

在数据库中,视图是根据执行的 SQL 语句的结果所形成的一张虚拟表。

视图中包含行和列,以及真实的数据,它和物理表没有什么实质性的差别。我们操作视图也就相当于操作真实表。

在视图中,也是可以使用所有的 DQL 语句。

视图和物理表的在使用方式上完全相同,但是视图是不占用物理空间,它是一张逻辑表。

二、视图的优点

(1)视图可以上用户或程序员只能看到他们所需要的数据,而不需要把表中所有的信息都暴露出 来。这样就可以增强数据的安全性。

(2)我们可以把经常需要做多表查询的这些数据定义到视图中,这样做就简化了SQL查询语句的编写。

(3)视图只限于数据的查询。

三、视图缺点

(1)操作视图会比操作物理表慢,所以尽量避免对大型数据表创建视图。

(2)尽量不要创建嵌套视图,因为它比较耗性能。

(3)尽量在视图中只返回所需要的信息,不要在视图中使用不需要的访问表。

四、视图的操作

4.1、创建视图

语法格式:

create [or replace] [algorithm = {uniqued|merge|temptable}] 
view 视图名称[(字段列表)] as sql执行语句 
[with [cascaded | local] check option]

说明:

(1)选项 WITH [CASCADED | LOCAL] CHECK OPTION 决定了是否允许更新数据使记录不再满足视图的条件。

(2)LOCAL : 只要满足本视图的条件就可以更新。

CASCADED : 必须满足所有针对该视图的所有视图的条件才可以更新。 默认值。

示例:创建基本工资高于 10000 的员工信息的视图表。

CREATE VIEW t_employee_view AS SELECT e.eid,ename,basic_salary salary 
FROM t_employee e JOIN t_salary s USING(eid) 
WHERE s.basic_salary>10000;

mysql推荐使用视图吗 mysql 视图优缺点_视图的操作

4.2、使用视图

使用视图的方式和使用真实的物理表的方式一样,也是使用 DQL 语句来进行查询。

语法格式:

select 字段列表 
from 视图名称 
[where 条件] [group by 分组字段] 
....

示例:查询视图表 t_employee_view 中所有数据。

select * from t_employee_view;

mysql推荐使用视图吗 mysql 视图优缺点_数据库_02

4.3、查看视图

我们查看表是使用 show tables 命令,但是从 MySQL 5.1 版本开始,使用 show tables 这个命令时不仅会显示表的名字,还会显示视图的名字。

show tables;

mysql推荐使用视图吗 mysql 视图优缺点_视图的操作_03

4.4、更新视图 

语法格式:

ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] 
VIEW view_name [(column_list)] 
AS select_statement 
[WITH [CASCADED | LOCAL] CHECK OPTION]

示例:我们希望向 t_employee_view 视图中添加 gender 列

alter view t_employee_view as 
SELECT e.eid,ename,gender,basic_salary salary 
FROM t_employee e JOIN t_salary s USING(eid) 
WHERE s.basic_salary>10000;

执行完上面的语句后,就能够成功更新我们原有的视图结构。

再执行查询来验证:

select * from t_employee_view;

mysql推荐使用视图吗 mysql 视图优缺点_视图优缺点_04

4.5、删除视图

删除视图可以使用 drop view 命令来完成。

语法格式:

drop view [if exists] 视图名称;

例如:删除上面创建的视图

drop view t_employee_view;

注意:删除视图不会删除原有数据。