暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysql高阶用法之视图

程序猿小左 2021-11-11
662
我们先来看一个查询语句(仅做示例,未提供相关数据)
SELECT stu_name FROM view_students_info;
单从表面上看起来这个语句是和正常的从数据表中查询数据是完全相同的,但其实我们操作的是一个视图。所以从SQL的角度来说操作视图与操作表看起来是完全相同的,那么为什么还会有视图的存在呢?视图到底是什么?视图与表有什么不同呢?

什么是视图

视图是一个虚拟的表,不同于直接操作数据表,视图是依据SELECT语句来创建的(会在下面具体介绍),所以操作视图时会根据创建视图的SELECT语句生成一张虚拟表,然后在这张虚拟表上做SQL操作。由于视图中存储的仅仅是 sql 语句,所以查询视图数据的时候仍然是执行的获取视图数据的 sql 语句

视图与表有什么区别

用一句话非常凝练的概括视图的区别: “是否保存了实际的数据”。所以视图并不是数据库真实存储的数据表,它可以看作是一个窗口,通过这个窗口我们可以看到数据库表中真实存在的数据。所以我们要区别视图和数据表的本质,即视图是基于真实表的一张虚拟的表,其数据来源均建立在真实表的基础上。视图相当于把查询结果转化成一个新表(虚拟存在的表),以后可以在这个新表上查询;
数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。所以一旦基本表中发生数据变化,从视图中查询出的数据也就随之改变了;

下面让我们来看一张图:

图片来源:《sql基础教程第2版》

总结视图与表的关系:“视图不是表,视图是虚表,视图依赖于表”。

1、创建或者修改视图

创建视图的语法为:

CREATE VIEW <视图名称>(<列名1>,<列名2>,...) AS <SELECT语句>
其中SELECT 语句需要书写在 AS 关键字之后。SELECT 语句中列的排列顺序和视图中列的排列顺序相同, SELECT 语句中的第 1 列就是视图中的第 1 列, SELECT 语句中的第 2 列就是视图中的第 2 列,以此类推。而且视图的列名是在视图名称之后的列表中定义的。需要注意的是视图名在数据库中需要是唯一的,不能与其他视图和表重名。

视图不仅可以基于真实表,我们也可以在视图的基础上继续创建视图。

图片来源:《sql基础教程第2版》

示例:

#加上OR REPLACE参数,如果已经存在该视图,则可以直接替换该视图
#column_list列表的字段要与select查询返回的字段一样,可以起别名
create OR REPLACE
VIEW test_view(t_sellerid,t_name,t_nickname)
as
SELECT sellerid,name,nickname FROM tb_seller;

修改视图的语法为:

ALTER VIEW view_name (<列名1>,<列名2>......) AS select_statement

示例:

alter VIEW test_view(t_sellerid,t_name) 
as
SELECT sellerid,name FROM tb_seller;

修改视图也可以使用创建的语法,只需要加上OR REPLACE参数即可!

2、查看视图

如果需要查询某个视图的定义,可以使用 SHOW CREATE VIEW 命令进行查看。因为视图本身也是一张表,所以查询视图数据的命令与查询表是一样的;

#查看视图的定义
show create view test_view;

#查看视图的数据
SELECT * from test_view;

3、删除视图

DROP VIEW [IF EXISTS] view_name [view_name...] 

示例 , 删除视图test_view:

drop VIEW if EXISTS test_view;

4、视图与表的区别

视图与表的区别:

  1. 视图的创建和删除,不会影响到表

  2. 视图是已经编译好的SQL语句,是基于SQL语句的结果集的可视化的表,而表不是

  3. 视图用户只能查询或修改他们所能见到得到的字段与数据

  4. 视图是虚拟存在的,不占磁盘空间。而表是实际存在的并且是存储在磁盘空间中

为什么要选择视图,而不直接操作表?

  • 安全:视图可以不给用户接触数据表,从而不知道表结构。用户只能查询或修改他们所能见到得到的数据,

  • 简单:对很复杂的表(或很复杂并且需要频繁用到的查询)建立视图,可以直接过滤掉大部分字段与结果集,用户直接在此视图上操作可以大大提高用户的操作效率;

文章转载自程序猿小左,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论