数据库
首页 > 数据库> > MySQL视图之我见

MySQL视图之我见

作者:互联网

什么是数据库视图

数据库视图的创建是基于SQL SELECT queryJOIN的。视图和表很相似,它也包含行和列,所以可以直接对它进行查询操作。另外大多数的数据库同样允许进行UPADTE操作,但必须满足一定的条件。视图的数据结构如图:

image

我们需要理解,数据库并没有存储视图所关联的数据,存储的只是视图的定义也就是相应的SQL SELECT and JOIN

那么使用数据库视图到底有哪些优势呢:

MySQL View

MySQL从5.x版本支持视图,并且基本符合SQL: 2003标准。
MySQL中执行查询视图的方式有一下两种:

如果创建视图的时候并未指定查询方式,MySQL会默认优先使用第一种,但如果视图的查询声明中的SELECT使用了聚合函数(MIN, MAX, SUM, COUNT, AVG, etc., or DISTINCT, GROUP BY, HAVING, LIMIT, UNION, UNION ALL, subquery.),那么视图查询会使用第二种方式。

Create View

创建MySQL视图可以使用CREATE VIEW声明:

CREATE 
   [ALGORITHM = {MERGE  | TEMPTABLE | UNDEFINED}]
VIEW [database_name].[view_name] 
AS
[SELECT  statement]

ALGORITHM:

MySQL有三种视图执行策略, 分别是MERGE, TEMPTABLE, UNDEFINED.

View Name

视图的名称,在MySQL中视图名和表名使用同一命名空间,这意味这视图名不能和表名重复并且要符合表名的命名规范。

Select Statement

在视图的查询声明中你可以查询所有数据库中已存在的表的数据,有以下集中规则:

Note: 查询声明的From中可以引用其他视图

Example

CREATE VIEW customerOrders AS
    SELECT 
        d.orderNumber,
        customerName,
        SUM(quantityOrdered * priceEach) total
    FROM
        orderDetails d
            INNER JOIN
        orders o ON o.orderNumber = d.orderNumber
            INNER JOIN
        customers c ON c.customerNumber = c.customerNumber
    GROUP BY d.orderNumber
    ORDER BY total DESC;
CREATE VIEW aboveAvgProducts AS
    SELECT 
        productCode, productName, buyPrice
    FROM
        products
    WHERE
        buyPrice > 
 (SELECT 
                AVG(buyPrice)
            FROM
                products)
    ORDER BY buyPrice DESC;

查询视图

SELECT * FROM customerOrders;

文章来源:https://www.jianshu.com/p/b11430bc4fba

王卫东 发布了132 篇原创文章 · 获赞 175 · 访问量 90万+ 他的留言板 关注

标签:MySQL,视图,查询,之我见,使用,声明,SELECT
来源: https://blog.csdn.net/wwd0501/article/details/104056546