2012-04-07 24 views
0

我google'd这个词,当我第一次在mysql中听到这个(sakila示例mysql数据库有它),但搜索结果并没有真正的帮助。无论如何,它到底是什么,并有一个教程,解释它以及使用它的优点和缺点?什么是mysql数据库内的“查看”表?

+1

[http://en.wikipedia.org/wiki/View_(database)](http://en.wikipedia.org/wiki/View_(database)) – zerkms 2012-04-07 04:27:15

回答

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。

+0

+1非常好的样本 – 2012-04-07 04:44:22