本章我们将介绍MySQL 中的视图。

查看定义

视图 是来自一个或多个表的数据的特定外观。 它可以按特定顺序排列数据,突出显示或隐藏某些数据。 视图由存储的查询组成,该查询可作为由查询结果集组成的虚拟表访问。 与普通表不同,视图不构成物理模式的一部分。 它是根据数据库中的数据计算或整理的动态虚拟表。

视图是伪表。 它是一个存储查询,看起来像一个表。 它可以像表一样被引用。

视图可以将用户限制为特定的行或列,从而增强安全性。 它们可用于连接多个表中的列,使它们看起来像一个表。 它们可用于提供汇总信息。

有几个限制适用于视图。 这里是其中的一些:

SELECT 语句不能包含子查询

SELECT 语句不能引用系统或用户变量

定义中引用的任何表或视图都必须存在

无法创建临时视图

VIEW 不能与触发器关联

创建,修改和删除视图

在下一个示例中,我们创建一个简单的视图。 我们使用CREATE VIEW语法创建视图。

这是我们的数据,我们在该数据上创建视图。

我们创建一个视图CheapCars。 这些是价格低于 25000 的汽车。

视图是无法查询的数据库对象。 有三辆便宜的汽车。

我们可以重新定义视图。 假设我们现在认为如果汽车的价格低于 30000,则它会便宜。我们使用ALTER VIEW语句修改了我们的视图。

如果我们删除从中选择数据的表,对视图会发生什么?

查询视图时,我们收到上述错误。

当我们重新创建表时,视图将再次起作用。

最后,使用DROP VIEW语法删除视图。

寻找视图

我们将提到几种在 MySQL 数据库中查找视图的方法。

我们可以使用SHOW FULL TABLES语句列出数据库中的所有表。 在 Table_type 列中,我们可以看到它是表还是视图。

在 information_schema 数据库中,有一个TABLES表。 TABLE_NAME和TABLE_TYPE列为我们提供了有关表名及其类型的信息。

这是查找视图的最直接方法。 我们查询 information_schema 数据库的VIEWS表。

使用UNION创建视图

的UNION运算符用于结果集组合两个或更多SELECT语句。 每个选择必须具有相同的列数。

我们创建一个名为 FavoriteCars 的视图。 在此视图中,我们有三行被认为是最喜欢的。 三个SELECT语句与UNION运算符组合在一起。

这是视图中的SELECT。