本文将向您展示如何在 MySQL 中创建和管理视图。视图是一个虚拟表,它不存储自己的数据,而是显示存储在其他表中的数据。本质上,视图是 SQL 查询执行的结果,它从一个或多个表中返回所需的数据行。
目录导读
如何使用 CREATE VIEW 语句创建一个简单的 MySQL 视图
在 MySQL 中创建视图的基本语法如下:
CREATE VIEW [db_name.]view_name [(column_list)]
AS
select-statement;
- [db_name.]是将在其中创建视图的数据库的名称;如果未指定,将在当前数据库中创建视图
- view_name是您正在创建的视图的唯一名称
- [(column_list)]定义了可在视图名称后的括号中指示的所需列列表;默认情况下,从 SELECT 语句的选择列表中检索列列表
- select-statement是指定的 SELECT 语句,可以从表或视图中查询数据
这是最简单的例子。如果我们当前的数据库中有一个名为customers的表,并且我们想请求一个包含订单交易日期的客户列表,脚本可能如下所示:
CREATE VIEW transactions AS
SELECT
id_number,,
name,,
transaction_date
FROM
customers;;
执行此语句后,事务对象将在视图中可用。现在我们可以继续执行一个语句来选择这个视图中的所有字段:
SELECT * FROM transactions;* FROM transactions;
输出将构成一个包含三列的表:id_number、name和transaction_date。
如何使用 JOIN 创建视图以组合来自多个表的数据
我们的下一个示例稍微复杂一些,因为它涉及多个表(在我们的示例中将有三个):
CREATE VIEW order_incomes AS
SELECT
order_id,,
customer_name,,
SUM(ordered_quantity * product_price) total(ordered_quantity * product_price) total
FROM
order_details
INNER JOIN orders USING (order_id)(order_id)
INNER JOIN customers USING (customer_name)(customer_name)
GROUP BY order_id;;
此视图为我们提供了每个客户的订单收入信息,按订单 ID 分组。为此,我们使用order_details表数据计算总收入,并使用 INNER JOIN 子句从订单表中检索订单 ID,从客户表中检索客户名称。
如何更新 MySQL 视图
如果需要通过视图更新表,可以使用INSERT、UPDATE、DELETE语句对底层表的行进行相应的操作。但是,请注意,为了可更新,您的视图不得包含以下任何内容:
- 聚合函数,例如 MIN、MAX、COUNT、AVG 或 SUM
- 诸如 GROUP BY、DISTINCT、HAVING、UNION 或 UNION ALL 之类的子句
- 左联接或外联接
- 对基表任意列的多次引用
- SELECT 或 WHERE 子句中的子查询引用出现在 FROM 子句中的表
- FROM 子句中对不可更新视图的引用
- 对非文字值的引用
现在让我们基于仓库表创建一个名为仓库详细信息的可更新视图。
CREATE VIEW warehouse_details AS
SELECT warehouse_id, phone, city, phone, city
FROM warehouses;;
现在我们可以从这个视图查询数据:
SELECT * FROM warehouse_details;* FROM warehouse_details;
假设我们要使用以下 UPDATE 语句通过仓库详细信息视图更改仓库ID 为“55”的仓库的电话号码。
UPDATE warehouse_details
SET
phone = '(555) 555-1234'= '(555) 555-1234'
WHERE
warehouse_id = 55;= 55;
最后,我们可以使用以下查询检查是否已应用更改:
SELECT * FROM warehouse_details* FROM warehouse_details
WHERE
warehouse_id = 55;= 55;
如何删除 MySQL 视图
如果我们不再需要某个视图,我们可以使用简单的 DROP 语句将其删除:
DROP VIEW warehouse_details;;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




