视图是没有值的数据库对象。其内容基于基表。它包含类似于真实表的行和列。在 MySQL 中,View 是通过连接一个或多个表的查询创建的虚拟表。它的操作类似于基表,但不包含它自己的任何数据。视图和表有一个主要区别,即视图是建立在其他表(或视图)之上的定义。如果基础表中发生任何更改,视图中也会反映相同的更改。
MySQL允许我们主要通过两种方式创建视图:
- MySQL命令行客户端
- MySQL 工作台
让我们详细讨论两者。
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 ,它通过从表课程中获取数据来创建一个虚拟表。
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 VIEW语句删除现有的 VIEW 。
句法:
以下是用于删除视图的语法:
DROP VIEW [IF EXISTS] view_name;
参数:
view_name:它指定我们要删除的 VIEW 的名称。
IF EXISTS: 它是可选的。如果我们不指定这个子句并且 VIEW 不存在,则 DROP VIEW 语句将返回错误。
例子:
假设我们要删除上面创建的视图“ trainer ”。执行以下语句:
DROP VIEW trainer;
执行成功后,需要验证视图是否可用,如下所示:
MySQL 使用 JOIN 子句创建视图
在这里,我们将看到涉及多个表并使用连接子句的视图创建的复杂示例。
假设我们有两个示例表,如下所示:
现在执行下面的语句,将创建一个视图训练器和 join 语句:
CREATE VIEW Trainer
AS SELECT c.course_name, c.trainer, t.email
FROM courses c, contact t
WHERE c.id = t.id;
我们可以使用下图所示的 SELECT 语句验证视图: