MySQL 视图

视图是没有值的数据库对象。其内容基于基表。它包含类似于真实表的行和列。在 MySQL 中,视图是由一个查询通过连接一个或多个表创建的虚拟表。它的操作与基表类似,但不包含自己的任何数据。视图和表有一个主要区别,即视图是建立在其他表(或视图)之上的定义。如果基础表中发生任何更改,相同的更改也会反映在视图中。

MySQL允许我们主要通过两种方式创建视图:

  1. MySQL 命令行客户端
  2. MySQL Workbench工作台

一、MySQL命令行客户端创建视图

我们可以使用CREATE VIEW和SELECT语句创建一个新视图。SELECT 语句用于从源表中获取数据以创建 VIEW。 

语法

以下是在 MySQL 中创建视图的语法:

CREATE [OR REPLACE] VIEW view_name AS    
SELECT columns    
FROM tables    
[WHERE conditions];    

参数说明

OR REPLACE:这是可选的。当 VIEW 已经存在时使用。如果不指定此子句且 VIEW 已存在,则 CREATE VIEW 语句将返回错误。

view_name:是指定要在 MySQL 中创建的 VIEW 的名称。

WHERE conditions:这也是可选的。它指定要包含在 VIEW 中的记录必须满足的条件。

示例

让我们借助一个例子来理解它。假设我们的数据库有一个course表,我们将基于这个表创建一个视图。因此,下面的示例将创建一个名为“ trainer ”的 VIEW,它创建一个通过从表 courses 中获取数据创建的视图。

CREATE VIEW trainer AS    
SELECT course_name, trainer     
 FROM courses;    

一旦 CREATE VIEW 语句执行成功,MySQL 将创建一个视图并将其存储在数据库中。

查看创建的视图

我们可以使用以下语法查看创建的视图:

SELECT * FROM view_name;    

让我们看看创建的 VIEW 看起来如何:

SELECT * FROM trainer;    

注意:必须知道视图不会物理存储数据。当我们为视图执行 SELECT 语句时,MySQL 使用视图定义中指定的查询并产生输出。由于这个特性,它有时被称为虚拟表。

二、MySQL更新视图

在 MYSQL 中,ALTER VIEW 语句用于修改或更新已经创建的 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语句删除现有的 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. 转到导航选项卡并单击 Schema 菜单。在这里,我们可以看到所有之前创建的数据库。选择 Schema 菜单下的任何数据库,例如testdb。它将弹出可以在以下屏幕中显示的选项。

2、接下来,我们需要右键点击查看选项,会出现一个新的弹窗:

3. 一旦我们选择“创建视图”选项,它将给出下面的屏幕,我们可以在其中编写自己的视图。

4.脚本编写完成后,点击Apply按钮,我们会看到如下画面:

5. 在此屏幕中,我们将查看脚本并单击数据库上的Apply按钮

6. 最后点击Finish按钮,完成视图创建。现在,我们可以验证如下视图:

六、为什么要使用视图?

MySQL 视图为用户提供了以下优势:

简化复杂查询

它允许用户简化复杂的查询。如果我们使用复杂查询,我们可以基于它创建一个视图来使用简单的 SELECT 语句,而不是再次输入复杂查询。

增加可重用性

我们知道 View 简化了复杂的查询并将它们转换为一行代码以使用 VIEWS。这种类型的代码更容易与我们的应用程序集成。这将消除在每个查询中重复编写相同公式的机会,使代码可重用且更具可读性。

数据安全帮助

它还允许我们仅向用户显示授权信息,并隐藏个人和银行信息等基本数据。我们可以通过仅向用户授权必要的数据来限制用户可以访问哪些信息。

启用向后兼容性

视图还可以在遗留系统中实现向后兼容性。假设我们想在不影响当前引用该表的应用程序的情况下,将一个大表拆分为许多较小的表。在这种情况下,我们将创建一个与真实表同名的视图,以便当前应用程序可以像引用表一样引用该视图。

热门文章

优秀文章