什么是mysql数据库中的“视图”表?

时间:2012-04-07 04:24:50

标签: mysql

当我第一次在mysql(sakila示例mysql db有它)中听到这个时,我认为这个术语,但搜索结果并没有真正帮助。无论如何,究竟是什么,是否有一个教程解释它以及使用它的优点和缺点?

1 个答案:

答案 0 :(得分:3)

视图是一个命名存储查询,可以在其他查​​询中使用,就像它是一个表一样。

有时,视图会在表格中显示行的子集:

CREATE VIEW v1 AS
    SELECT Column1, Column2, ..., ColumnN
      FROM AnotherTable WHERE SomeColumn = 234;

有时,视图会在表格中显示列的子集:

CREATE VIEW v2 AS
    SELECT Column2, Column3, Column5, Column7
      FROM AnotherTable;

您还可以使用连接等更复杂的查询:

CREATE VIEW OrderInfo AS
    SELECT o.order_num, c.customer_num, c.customer_name,
           o.order_date, o.invoice_num, i.product_code, p.product_name
      FROM Orders     AS o
      JOIN Customers  AS c ON c.customer_num = o.customer_num
      JOIN OrderItems AS i ON i.order_num    = o.order_num
      JOIN Products   AS p ON p.product_code = i.product_code

然后用户可以编写如下查询:

SELECT *
  FROM OrderInfo
 WHERE Order_Date BETWEEN DATE '2012-01-01' AND DATE '2012-01-31'
   AND Product_Code LIKE "%23491%";

无需知道如何将所有表连接在一起。

您还可以使用视图来控制对数据的访问;视图定义者的权限可以允许用户访问否则将被禁止的表。在修改数据库的模式后,您还可以使用视图来提供向后兼容性。您可以更改新模式中的表的名称和定义,但留下允许未修改的程序继续读取数据库的视图,就像模式未更改一样。

有些观点可以更新;别人不能。哪个可以,哪个不能取决于DBMS。