1.视图作用
试图是虚拟的表。与包含数据的表不一样,试图只包含使用时动态的检索数据的查询。 可以用与表基本相同的方式使用它们。对视图执行select操作,过滤和排序数据,将视图联结到其他视图或表,甚至添加和更新数据(添加和更新数据有某些限制)
- 简化复杂的SQL操作,过滤信息,计算字段等。编写查询后,可以方便的重用它而不必知道其基本查询细节
- 使用表的一部分而不是整个表。
- 保护数据。可以授予用户访问表的特定部分的权限,而不是整个表的访问权限
- 更改数据格式和表示。视图可返回与底层表的表示和格式不同的数据。
2.视图的规则和限制
- 与表一样,视图命名必须唯一。视图的数目没有限制。
- 要有创建视图的权限。
- 视图可以嵌套,可以利用从其他视图中检索数据的查询来构造视图。(嵌套视图可能会严重降低查询性能,在生产环境中使用之前,应该对其进行全面的测试)
- 许多DBMS(Microsoft在SQL Server)禁止在视图查询中使用ORDER BY子句
- 有些DBMS要求对返回的所有列进行命名,如果列是计算字段,需要使用别名。
- 有些DBMS把视图作为自渎的查询。不能将数据写回底层表。
3.创建视图
3.1 利用视图极大简化了复杂的联结
1 | SELECT c.cust_name,c.cust_contact |
创建:我想把上面这条查询包装成为一个名为ProductCustomers的虚拟表(视图):创建视图时尽量不绑定特定数据
1 | CREATE VIEW ProductCustomers AS |
查询:可以通过下面语句检索相同数据,利用视图极大简化了复杂的联结
1 | SELECT cust_name,cust_contact |
删除:
1 | DROP VIEW ProductCustomers; |
3.2 利用视图格式化检索出的数据
1 | SELECT CONCAT(RTRIM(vend_name),"(",RTRIM(vend_country),")" ) |
假设经常使用这个格式的结果,不用在每次需要时执行这样的拼接,而是创建一个视图:
1 | CREATE VIEW VendorLocations AS |
小结
视图为虚拟的表。它们包含的不是数据而是根据需要检索数据的查询。提供一套封装select语句的层次,可用来简化数据处理,重新格式化或保护基础数据。
If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !