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