创建
在本教程中,您将学习如何使用CREATE VIEW语句在MySQL中创建视图。
CREATE VIEW语句简介
要在MySQL中创建一个新视图,可以使用CREATE VIEW语句。 在MySQL中创建视图的语法如下:
CREATE
[ALGORITHM = {MERGE | TEMPTABLE | UNDEFINED}]
VIEW [database_name].[view_name]
AS
[SELECT statement]下面我们来详细的查看上面的语法。
查看处理算法
算法属性允许您控制MySQL在创建视图时使用的机制,MySQL提供了三种算法:MERGE,TEMPTABLE和UNDEFINED。
当您创建视图而不指定显式算法时,
UNDEFINED是默认算法。UNDEFINED算法使MySQL可以选择使用MERGE或TEMPTABLE算法。MySQL优先使用MERGE算法进行TEMPTABLE算法,因为MERGE算法效率更高。
查看名称
在数据库中,视图和表共享相同的命名空间,因此视图和表不能具有相同的名称。 另外,视图的名称必须遵循表的命名规则。
SELECT语句
在SELECT语句中,可以从数据库中存在的任何表或视图查询数据。SELECT语句必须遵循以下几个规则:
SELECT语句不能引用任何变量,包括局部变量,用户变量和会话变量。SELECT语句不能引用准备语句的参数。
请注意,
SELECT语句不需要引用任何表。
创建MySQL视图示例
创建简单的视图
我们来看看orderDetails表。基于orderDetails表来创建一个表示每个订单的总销售额的视图。
如果使用SHOW TABLES命令来查看示例数据库(yiibaidb)中的所有表,我们还会看到SalesPerOrder视图也显示在表的列表中。如下所示 -
这是因为视图和表共享相同的命名空间。要知道哪个对象是视图或表,请使用SHOW FULL TABLES命令,如下所示:
结果集中的table_type列指定哪个对象是视图,哪个对象是一个表(基表)。如上所示,saleperorder对应table_type列的值为:VIEW。
如果要查询每个销售订单的总销售额,只需要对SalePerOrder视图执行一个简单的SELECT语句,如下所示:
执行上面查询语句,得到以下结果 -
基于另一个视图创建视图
MySQL允许您基于另一个视图创建一个视图。例如,可以根据SalesPerOrder视图创建名为大销售订单(BigSalesOrder)的视图,以显示总计大于60,000的每个销售订单,如下所示:
现在,我们可以从BigSalesOrder视图查询数据,如下所示:
执行上面查询语句,得到以下结果 -
使用连接表创建视图
以下是使用INNER JOIN创建视图的示例。 该视图包含客户编号和客户支付的总金额。
要查询customerOrders视图中的数据,请使用以下查询:
执行上面查询语句,得到以下结果 -
使用子查询创建视图
以下说明如何使用子查询创建视图,该视图包含价格高于所有产品的平均价格的产品。
查询上述视图:aboveAvgProducts的数据简单如下:
执行上面查询语句,得到以下结果 -
在本教程中,我们向您展示了如何使用CREATE VIEW语句创建视图。
Last updated
Was this helpful?