MySQL中的视图(view)是一种虚拟表,其内容由查询定义,是一个逻辑表,本身并不包含数据。视图看起来和真实的表完全相同,但其中的数据来自定义视图时用到的基本表,并且在打开视图时动态生成。
视图可以在基本表上定义,也可以使用其他视图定义。与直接操作基本表相比,视图具备以下优点:
(1)简化操作:通过视图可以使用户将注意力集中在他所关心的数据上。使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件。
(2)提高数据的安全性:在设计数据库时可以针对不同的用户定义不同的视图,使用视图的用户只能访问他们被允许查询的结果集。
(3)数据独立:视图的结构定义好之后,如果增加新的关系或对原有的关系增加新的字段对用户访问的数据都不会造成影响。
创建的关键字 | 是否实际占用物理空间 | 使用 | |
视图 | create view | 没有(很少一部分) | 增删改(一般不能) |
表 | create table | 占有 | 增删改查 |
一、创建视图的语法
create view 视图名 as 查询语句(select *****)
1、OR REPLACE:表示该语句能够替换已有视图;
2、ALGORITHM:可选参数,表示视图选择的算法,默认算法是UNDEFINED;
3、view_name:要创建的视图名称;
4、column_list:可选参数,表示视图的字段列表。如果省略,则使用select语句中的字段列表;
5、AS select_statement:创建视图的select语句;
6、WITH CHECK OPTION:表示更新视图时要保证该视图的WHERE子句为【真】。比如:定义视图create view v1 as select * from salary>5000;如果要更新视图,则必须保证salary字段的值在5000以上,否则报错;
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
二、查看视图
利用show tables查看视图名称
利用desc查看视图的字段信息
利用show table status语句查看视图的基本信息
利用show create view命令查看视图的详细信息
三、修改视图
使用create or replace view命令修改视图
使用alter view命令修改视图
四、更新视图数据
更新单表视图
select * from 表名;
更新多表视图
create view 表名 as select *******
五、删除视图
drop view [if exists] 表名;
drop view 表名;