MySQL_视图Views _笔记

视图是基于 SQL 语句的结果集的可视化的表。

视图包含行和列,是一个虚拟表,其内容由查询定义,同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。

可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,也可以呈现数据,就像这些数据来自于某个单一的表一样。

视图总是显示最新的数据!每当用户查询视图时,数据库引擎通过使用视图的 SQL 语句重建数据。

SQL CREATE VIEW 语法

CREATE VIEW 视图表名 AS SELECT 原字段 FROM 原表名 WHERE 条件;

个人理解视图就是在原有的表基础上创了一个别名表,这张表会在数据库中显示,但是是虚拟的,这张表的数据全部来源于原表,直接查询这张表省去了原本的复杂查询语句,也适用于多表查询。

例子:

以下有两张表,用户信息和资产表,

userinfo,assets

其中userinfo表里有手机号,邮箱,区号,证件号等等字段信息,

assets表里有余额,总充值和消费等等字段。

SELECT userinfo.`tel`,assets.`balance` FROM

userinfo,assets

WHERE userinfo.`account`=assets.`account`

AND assets.`balance` > 0;

内链接查询,tel和balance字段,只要手机号和余额,通过account字段链接,并且余额大于0的的信息。得到查询结果如下:

每次这样查的就比较墨迹,就可以在这个基础上创建一个视图,a_balance。

得到视图

这里我是用了sqlyog工具,直接在数据库里查看是和表放在一起的

直接查询这张表就能得到和先前两表查询的同样结果了

这里是tel字段有设置的有点问题,手机和邮箱用了Unique,唯一约束,我应该连邮箱一起查的,算了,只是测试一下做个笔记能理解就行。

单表的视图和这个一样,无非是改变AS后面的查询语句。

通过视图也可以修改原表,但是只有从单表引过来的视图是可以的,这样的视图操作实际就相当于操作表。

删除视图:

DROP VIEW 视图表名;

删除视图不会影响原表,视图只是虚拟数据,可以创建多级视图,即在视图基础上继续创建视图。

当原表删除后,视图依旧在数据库内显示,不会同时删除,但是已经无法使用

当删除原表后再查询视图就会报错。

如果原样恢复表的话,视图依旧可以继续使用。

发布了60 篇原创文章 · 获赞 9 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_44697035/article/details/104333056