📜  MySQL视图

📅  最后修改于: 2020-11-17 02:22:32             🧑  作者: Mango

MySQL视图

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

MySQL允许我们以两种方式创建视图:

  • MySQL命令行客户端
  • MySQL工作台

让我们详细讨论两者。

MySQL命令行客户端

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

句法

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

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

参数:

视图语法包含以下参数:

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

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

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

让我们借助示例了解它。假设我们的数据库有一个表课程,并且我们将基于该表创建一个视图。因此,以下示例将创建一个VIEW名称“ trainer”,该名称将创建一个虚拟表,该虚拟表是通过从表课程中获取数据而创建的。

CREATE VIEW trainer AS  
SELECT course_name, trainer   
 FROM courses;  

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

查看创建的VIEW

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

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视图

我们可以使用DROP VIEW语句删除现有的VIEW。

句法:

以下是用于删除视图的语法:

DROP VIEW [IF EXISTS] view_name;  

参数:

view_name:它指定我们要删除的VIEW的名称。

如果存在:这是可选的。如果我们不指定此子句并且VIEW不存在,则DROP VIEW语句将返回错误。

例:

假设我们要删除上面创建的视图“ trainer”。执行以下语句:

DROP VIEW trainer;  

成功执行后,需要验证视图是否可用,如下所示:

MySQL使用JOIN子句创建视图

在这里,我们将看到包含多个表并使用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.一旦选择“创建视图”选项,它将显示以下屏幕,我们可以在其中编写自己的视图。

4.完成脚本编写后,单击“应用”按钮,我们将看到以下屏幕:

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

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

为什么我们使用View?

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

简化复杂的查询

它允许用户简化复杂的查询。如果使用复杂查询,则可以基于该查询创建一个视图,以使用简单的SELECT语句,而无需再次键入复杂查询。

提高可重用性

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

数据安全帮助

它还允许我们仅向用户显示授权信息,并隐藏诸如个人和银行信息之类的基本数据。通过仅向他们创作必要的数据,我们可以限制用户可以访问的信息。

启用向后兼容性

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