1.视图

视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。

为什么使用视图

  • 重用SQL 语句
  • 简化复杂的SQL 操作。在编写查询后,可以方便地重用它而不必知道其基本查询细节
  • 使用表的一部分而不是整个表
  • 保护数据。可以授予用户访问表的特定部分的权限,而不是整个表的访问权限
  • 更改数据格式和表示。视图可返回与底层表的表示和格式不同的数据

注意:性能问题

因为视图不包含数据,所以每次使用视图时,都必须处理查询执行时需要的所有检索。如果你用多个联结和过滤创建了复杂的视图或者嵌 套了视图,性能可能会下降得很厉害。因此,在部署使用了大量视图的应用前,应该进行测试。

视图的规则和限制

  • 与表一样,视图必须唯一命名
  • 对于可以创建的视图数目没有限制
  • 创建视图,必须具有足够的访问权限。这些权限通常由数据库管理人员授予
  • 视图可以嵌套,即可以利用从其他视图中检索数据的查询来构造视图。所允许的嵌套层数在不同的DBMS 中有所不同(嵌套视图可能会严重降低查询的性能,因此在产品环境中使用之前,应该对其进行全面测试)
  • 视图不能索引,也不能有关联的触发器或默认值

提示:参阅具体的DBMS 文档

上面的规则不少,而具体的DBMS 文档很可能还包含别的规则。因此, 在创建视图前,有必要花点时间了解必须遵守的规定。

2. 创建视图

视图用 CREATE VIEW 语句来创建

说明:视图重命名

删除视图,可以使用DROP 语句,其语法为DROP VIEW viewname;。 覆盖(或更新)视图,必须先删除它,然后再重新创建。

创建视图的示例:

 CREATE VIEW ProductCustomers AS
SELECT cust_name, cust_contact, prod_id
FROM Customers, Orders, OrderItems
WHERE Customers.cust_id = Orders.cust_id
AND OrderItems.order_num = Orders.order_num;

提示:创建可重用的视图

创建不绑定特定数据的视图是一种好办法。扩展视图的范围不仅使得它能被重用,而且可能更有用。这样做不需要创建和维护多个类似视图。

视图小节

视图为虚拟的表。它们包含的不是数据而是根据需要检索数据的查询。视图提供了一种封装SELECT 语句的层次,可用来简化数据处理,重新格式化或保护基础数据。

最新文章

  1. 来玩Play框架02 响应
  2. java 后台开发关键词解释
  3. this上下文,以及通过call 、apply 实现继承
  4. mysql实用操作
  5. sql 中的运算符级别 如and or not
  6. CentOS下nginx简单安装
  7. 总结——R中查看属性的函数
  8. HDU5785 Interesting(Manacher + 延迟标记)
  9. hduacm 5255
  10. C++实现python标准库中的Counter
  11. Myeclipse2014配置JSF环境
  12. 2013 Multi-University Training Contest 1 Partition
  13. linux pci 协议一
  14. 删除 vim 命令
  15. 模拟对象测试——EasyMock
  16. centos7 ssh免密码登录
  17. javascript 错误处理和堆栈追踪浅析
  18. map函数、filer函数、reduce函数的用法和区别
  19. Spark菜鸟记录
  20. 【机器学习】K均值算法(II)

热门文章

  1. tomcat7闪退
  2. Python开发——【循环】语句
  3. Python开发——数据类型【数字】
  4. Linux Curl命令
  5. 设计模式学习心得<建造者 Builder>
  6. [MACHINE LEARNING] Can we predict voting outcomes?
  7. MD5加密算法的Java版本
  8. MySQL InnoDB配置并发线程( innodb_thread_concurrency)
  9. 孤岛营救问题 (BFS+状压)
  10. diango中的url路由系统