一、介绍
视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。
定义视图的时候所使用的这张表,我们也把这张表叫做基表,也叫基础表。
通俗的讲,视图只保存了查询的SQL逻辑,不保存查询结果。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。
二、语法
1). 创建
OR REPLACE
:用于替换
视图是一张虚拟表,最终的数据来源于as后面的select语句,select语句中我们需要去指定我们要从哪一张表中去查询数据;select中查询的表就是这个视图所关联的基表,也叫基础表。
CREATE [OR REPLACE] VIEW 视图名称[(列名列表)] AS SELECT语句 [ WITH [ CASCADED | LOCAL ] CHECK OPTION ]
2). 查询
查看创建视图语句:SHOW CREATE VIEW 视图名称;
查看视图数据(将视图作为一张表查询,表是怎么查询的,视图就怎么查):SELECT * FROM 视图名称 ......;
3). 修改
可以发现和创建视图时是一样的,创建视图时OR REPLACE可以加也可以不加,但是修改视图时主要在OR REPLACE,即将视图对应的内容替换掉。
方式一:CREATE [OR REPLACE] VIEW 视图名称[(列名列表)] AS SELECT语句 [ WITH [ CASCADED | LOCAL ] CHECK OPTION ]
方式二:ALTER VIEW 视图名称[(列名列表)] AS SELECT语句 [ WITH [ CASCADED | LOCAL ] CHECK OPTION ]
4). 删除
DROP VIEW [IF EXISTS] 视图名称 [,视图名称] ...
三、示例
-- 创建或替换视图
create or replace view stu_v_1 as select id,name from student where id <= 10;
创建成功后会看到,在tables表的下面会出现一个views,这个views指的就是我们所创建出来的视图,名字为 stu_v_1
,这个视图里面包含两个字段:id和name。
![image-20240719115724607](https://img-blog.csdnimg.cn/img_convert/18fe512f0edde96dbac649469934fcd7.png)
-- 查询视图
show create view stu_v_1;
此时我们就会看到我们创建视图的时候所执行的SQL语句。但是这个SQL语句和我们上面这一块稍微有一点点差异,这个里面所查询出来的SQL语句包含了在创建视图的时候我们所没有指定的一些默认的参数。
如果我们要查询视图中的数据,就跟操作表一样。
select * from stu_v_1;
-- 也可以在查询的时候加上条件
select * from stu_v_1 where id < 3;
-- 修改视图
create or replace view stu_v_1 as select id,name,no from student where id <= 10;
alter view stu_v_1 as select id,name from student where id <= 10;
-- 删除视图
drop view if exists stu_v_1;