📅  最后修改于: 2020-11-17 02:22:32             🧑  作者: Mango
视图是没有值的数据库对象。它的内容基于基表。它包含与实际表相似的行和列。在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中,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语句查看更改后的视图,如输出所示:
我们可以使用DROP VIEW语句删除现有的VIEW。
句法:
以下是用于删除视图的语法:
DROP VIEW [IF EXISTS] view_name;
参数:
view_name:它指定我们要删除的VIEW的名称。
如果存在:这是可选的。如果我们不指定此子句并且VIEW不存在,则DROP VIEW语句将返回错误。
例:
假设我们要删除上面创建的视图“ trainer”。执行以下语句:
DROP VIEW trainer;
成功执行后,需要验证视图是否可用,如下所示:
在这里,我们将看到包含多个表并使用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服务器。它将显示以下屏幕:
现在,执行以下步骤来删除数据库:
1.转到导航选项卡,然后单击架构菜单。在这里,我们可以看到所有先前创建的数据库。在“模式”菜单下选择任何数据库,例如testdb。它将弹出可以在以下屏幕中显示的选项。
2.接下来,我们需要右键单击视图选项,然后将出现一个新的弹出屏幕:
3.一旦选择“创建视图”选项,它将显示以下屏幕,我们可以在其中编写自己的视图。
4.完成脚本编写后,单击“应用”按钮,我们将看到以下屏幕:
5.在此屏幕中,我们将检查脚本,然后单击数据库上的Apply按钮。
6.最后,单击完成按钮以完成视图创建。现在,我们可以验证视图如下:
MySQL视图为用户提供了以下优点:
简化复杂的查询
它允许用户简化复杂的查询。如果使用复杂查询,则可以基于该查询创建一个视图,以使用简单的SELECT语句,而无需再次键入复杂查询。
提高可重用性
我们知道,View简化了复杂的查询,并将其转换为单行代码以使用VIEWS。这种类型的代码可以更轻松地与我们的应用程序集成。这将消除在每个查询中重复编写相同公式的机会,从而使代码可重用且更具可读性。
数据安全帮助
它还允许我们仅向用户显示授权信息,并隐藏诸如个人和银行信息之类的基本数据。通过仅向他们创作必要的数据,我们可以限制用户可以访问的信息。
启用向后兼容性
视图还可以在旧系统中实现向后兼容性。假设我们希望将一个大表拆分为许多较小的表,而又不影响引用该表的当前应用程序。在这种情况下,我们将创建一个与真实表同名的视图,以便当前应用程序可以像引用表一样引用该视图。