数据库视图

试图是数据库系统中一种非常有用的数据库对象。MySQL5.0以后的版本添加了对视图得支持。

视图是一个虚拟表,其内容由查询定义。同真实表一样,视图包含一系列带有名称的列和行数据,但视图并不是数据库真实存储的数据表。
视图是从一个、多个表或者视图中导出的表,包含一系列带有名称的数据列和若干条数据行。但视图并不同于表,他的区别在于以下几点:

  • 视图不是数据库中真实的表,而是一张虚拟表,其结构和数据是建立在对数据中真是表的查询基础上的。
  • 存储在数据库中的查询操作SQL语句定义了视图的内容,列数据和行数据来自于视图查询所引用的实际表,引用视图时动态生成这些数据。
  • 视图没有实际的物理记录,不是一数据集的形式存储在数据库中的,他所对应的数据实际上是存储在视图所引用的真实表中的。
  • 视图是数据的窗口,而表是内容。表是实际数据的存放单位,而视图只是以不同显示方式展示数据,其数据来源还是实际表。
  • 视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全角度来看,视图的数据安全性更高,使用视图的用户不接触数据表,不知道表的结构。
  • 视图的建立和删除只影响视图本身,不影响对应的基础表。

视图与表的本质上虽然不同,但视图经过定义以后,结构形式与表一样,可以进行查询、修改、更新和删除等操作。同时,视图具有以下优点:

  • 定义用户数据,聚焦特定的数据。在实际的应用过程中,不同的用户对不同的数据又不同的要求。例如,当数据库同时存在时,如学生基本信息表、课程表和教师信息表等多种表同时存在时,可以根据需求让不同的用户使用各自的数据。学生查看修改自己基本信息的视图,安排课程人员查看修改课程表和教师信息的视图,教师查看学生信息和课程信息表的视图。
  • 简化数据操作。在使用查询时,很多时候要使用聚合函数,同时还要显示其他字段的信息,可能还需要关联到其它表,语句可能会很长,如果这个动作频繁发生的话,可以创建视图来简化操作。
  • 提高基表数据的安全性。视图是虚拟的,物理上是不存在的。可以只授予用户视图的权限,而不具体指定使用表的权限,来保护基础数据的安全。
  • 共享所需数据。通过使用视图,每个用户不必都定义和存储自己所需的数据,可以共享数据库中的数据,可以共享数据库中的数据,同样的数据只需要存储一次。
  • 更改数据格式。通过使用视图,可以重新格式化检索出的数据,并组织输出到其他应用程序中。
  • 重用SQL语句。视图提供的是对查询操作的封装,本身不包含数据,所呈现的数据是根据视图定义的从基础表中检索出来的,如果基础表的数据新增或删除,视图呈现的也是更新后的数据。视图定义后,编写完所需的查询,可以方便地重用该视图。
  • 注意:要区别视图和表的本质,即试图是基于真实表的一张虚拟的表,其数据的来源均建立在真实表的基础上。

使用视图时,还应该注意一下几点:

  • 创建视图需要足够的访问权限。
  • 创建视图的数目没有限制。
  • 视图可以嵌套,即其他视图中检索数据的查询来创建视图。
  • 视图不能索引,也不能有关联的触发器、默认值或规则。
  • 视图可以和表一起使用。
  • 视图不包含数据,所以每次使用视图时,都必须执行查询中所需的的任何一个检索操作。如果用多个连接和过滤条件创建了复杂的视图或者嵌套了视图,可能会发现系统运行的性能下降的十分严重。因此,在部署大量视图应用时,应该进行系统测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值