MySQL 视图
视图是一个没有值的数据库对象。它的内容基于基础表。它包含行和列,类似于真实的表。在MySQL中,视图是通过一个查询连接一个或多个表创建的 虚表 。它的操作方式与基础表类似,但不包含任何自己的数据。视图和表之间的一个主要区别是,视图是在其他表(或视图)之上构建的定义。如果底层表发生任何变化,则视图中也会反映出相同的变化。
MySQL 允许我们以主要两种方式创建视图:
- MySQL命令行客户端
- MySQL Workbench
让我们详细讨论这两种方式。
MySQL命令行客户端
我们可以使用 CREATE VIEW 和 SELECT 语句来创建一个新视图。 SELECT语句 用于从源表中获取数据以创建视图。
语法
以下是在MySQL中创建视图的语法:
CREATE [OR REPLACE] VIEW view_name AS
SELECT columns
FROM tables
[WHERE conditions];
参数:
视图语法包含以下参数:
OR REPLACE :可选项。当一个视图已经存在时使用。如果不指定这个子句而视图已经存在,则CREATE VIEW语句将返回一个错误。
view_name :指定要在MySQL中创建的视图的名称。
WHERE conditions :也是可选项。指定必须满足以便将记录包括在视图中的条件。
示例
让我们通过一个示例来理解它。假设我们的数据库有一张表 course ,我们将根据这个表创建一个视图。因此,下面的示例将创建一个名为” trainer “的视图,它创建了一个虚拟表,从表courses中提取数据。
CREATE VIEW trainer AS
SELECT course_name, trainer
FROM courses;
一旦CREATE VIEW语句的执行成功,MySQL将会创建一个视图并将其存储在数据库中。
查看创建的视图
我们可以使用以下语法来查看创建的视图:
SELECT * FROM view_name;
让我们看一下创建的视图是什么样子:
SELECT * FROM trainer;
注意:必须知道一个视图并不会实际存储数据。当我们执行对视图的SELECT语句时,MySQL会使用视图定义中指定的查询并生成输出。由于具有这个特性,有时也称之为虚拟表。
MySQL更新视图
在MYSQL中,使用ALTER VIEW语句来修改或更新已创建的视图而不删除它。
语法:
以下是在MySQL中更新现有视图的语法:
ALTER VIEW view_name AS
SELECT columns
FROM table
WHERE conditions;
示例:
以下示例将通过添加新列来修改已创建的VIEW名称为”trainer”。
ALTER VIEW trainer AS
SELECT id, course_name, trainer
FROM courses;
一旦执行 ALTER VIEW 语句成功,MySQL将更新视图并将其存储在数据库中。我们可以使用SELECT语句查看被修改的视图,如下所示的输出:
MySQL删除视图
通过使用 DROP VIEW 语句,我们可以删除现有的视图。
语法:
以下是用于删除视图的语法:
DROP VIEW [IF EXISTS] view_name;
参数:
view_name : 它指定了要删除的VIEW的名称。
IF EXISTS : 这是可选的。如果我们不指定此子句并且VIEW不存在,DROP VIEW语句将返回错误。
示例:
假设我们要删除上面创建的视图 ” trainer “。执行以下语句:
DROP VIEW trainer;
执行成功后,需要验证视图是否可用,如下所示:
MySQL使用JOIN子句创建视图
这里,我们将看到视图创建的复杂示例,它涉及多个表并使用了 join 子句。
假设我们有两个示例表如下所示:
现在执行下面的语句,将创建一个包含连接语句的Trainer视图:
CREATE VIEW Trainer
AS SELECT c.course_name, c.trainer, t.email
FROM courses c, contact t
WHERE c.id = t.id;
我们可以使用下面图片中显示的SELECT语句来验证视图:
使用MySQL Workbench创建视图
要使用此工具在数据库中创建视图,首先需要启动 MySQL Workbench 并使用 用户名 和 密码 登录到MySQL服务器。它会显示以下屏幕:
现在按照以下步骤删除数据库:
1. 转到导航选项卡,然后点击 模式菜单 。在这里,我们可以看到所有以前创建的数据库。在模式菜单下选择任何数据库,例如 testdb 。它会弹出在下面的屏幕中显示的选项。
2. 接下来,我们需要右键点击“视图”选项,然后会弹出一个新的窗口:
3. 一旦我们选择“ Create View ”选项,它将显示以下屏幕,我们可以编写自己的视图。
4. 在完成脚本编写之后,点击 Apply 按钮,我们将会看到以下屏幕:
5. 在这个界面上,我们将会审查脚本并且在数据库上点击 Apply 按钮
6. 最后,点击 Finish 按钮完成视图的创建。现在,我们可以按如下方式验证视图:
为什么我们使用视图?
MySQL视图对用户提供以下优势:
简化复杂查询
它允许用户简化复杂查询。如果我们在使用复杂查询,我们可以基于它创建一个视图,而不是再次键入复杂查询,可以使用一个简单的SELECT语句。
增加可重用性
我们知道视图可以简化复杂查询并将其转换为一行代码以便于使用。这样的代码更容易与我们的应用程序集成。这将消除在每个查询中重复编写相同公式的机会,使代码可重用且更易读。
助于数据安全
它还允许我们将仅向用户显示经授权的信息,并隐藏个人和银行信息等重要数据。我们可以通过将仅有必要的数据授权给用户来限制他们可以访问的信息。
实现向后兼容性
视图还可以在旧系统中实现向后兼容性。假设我们想要将一个大表拆分成多个较小的表,而不影响引用该表的当前应用程序。在这种情况下,我们将创建一个与真实表同名的视图,使当前应用程序可以将视图引用为表。