0

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

4

1 回答 1

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。

于 2012-04-07T04:35:20.673 回答