视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询。
MySQL5开始支持视图。
查看下面的例子更容易理解为什么需要视图:
例:
SELECT cust_name,cust_contact
FROM Customers,Orders,OrderItems
WHERE Customers.cust_id = Orders.cust_id
AND OrderItems.order_num = Orders.order_num
AND prod_id = 'RGAN01';
如果要是有一个名为ProductCustomers的虚拟表,则可以如下轻松地检索出相同的数据:
SELECT cust_name,cust_contact
FROM ProductCustomers
WHERE prod_id = 'RGAN01';
这就是视图的作用,ProductCustomers是一个视图,作为视图,它不包含任何列或数据,它包含的是一个查询。
下面是视图的一些常见应用:
- 重用SQL语句;
- 简化复杂的SQL操作;
- 使用表的组成部分而不是整个表;
- 保护数据;
- 更改数据格式和表示
重要的是知道视图仅仅是用来查看存储在别处的数据的一种设施。视图本身不包含数据,因此它们返回的数据是从其他表中检索出来的。
性能问题:因为视图不包含数据,所以每次使用视图时,都必须处理查询执行时所需的任一个检索。如果用多个联结和过滤创建了复杂的视图或者嵌套了视图,可能会发现性能下降的很厉害。因此,在部署使用了大量视图的应用前,应该进行测试。
创建视图前,应该查询相关DBMS的规则!
视图的好处:
- 视图是关系数据库的外模式;
- 视图可以按多种角度组织数据;
- 视图对数据有一定的安全保护作用。