目录
一、什么是视图
二、视图的优点
三、视图缺点
四、视图的操作
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;
4.2、使用视图
使用视图的方式和使用真实的物理表的方式一样,也是使用 DQL 语句来进行查询。
语法格式:
select 字段列表
from 视图名称
[where 条件] [group by 分组字段]
....
示例:查询视图表 t_employee_view 中所有数据。
select * from t_employee_view;
4.3、查看视图
我们查看表是使用 show tables 命令,但是从 MySQL 5.1 版本开始,使用 show tables 这个命令时不仅会显示表的名字,还会显示视图的名字。
show tables;
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;
4.5、删除视图
删除视图可以使用 drop view 命令来完成。
语法格式:
drop view [if exists] 视图名称;
例如:删除上面创建的视图
drop view t_employee_view;
注意:删除视图不会删除原有数据。