临时表和虚拟表

  • 格式:docx
  • 大小:19.18 KB
  • 文档页数:2

下载文档原格式

  / 2
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

视图和临时表

1.临时表

临时表与永久表相似,但临时表存储在tempdb 中,当不再使用时会自动删除。

临时表有两种类型:本地和全局。它们在名称、可见性以及可用性上有区别。本地临时表的名称以单个数字符号(#) 打头;它们仅对当前的用户连接是可见的;当用户从SQL Server 实例断开连接时被删除。全局临时表的名称以两个数字符号(##) 打头,创建后对任何用户都是可见的,当所有引用该表的用户从SQL Server 断开连接时被删除。

临时表存在于服务器内存中,SQL服务关闭就会自动消失,且作为中间转阶层,临时表因为是存在缓存中,所以运行时或者在存储过程中时,执行效率高。

例如,如果创建了employees 表,则任何在数据库中有使用该表的安全权限的用户都可以使用该表,除非已将其删除。如果数据库会话创建了本地临时表#employees,则仅会话可以使用该表,会话断开连接后就将该表删除。如果创建了##employees 全局临时表,则数据库中的任何用户均可使用该表。如果该表在您创建后没有其他用户使用,则当您断开连接时该表删除。如果您创建该表后另一个用户在使用该表,则SQL Server 将在您断开连接并且所有其他会话不再使用该表时将其删除。

2.视图

可以被看成是虚拟表或存储查询。除非是索引视图,否则视图的数据不会作为非重复对象存储在数据库中。数据库中存储的是SELECT 语句。SELECT 语句的结果集构成视图所返回的虚拟表。用户可以采用引用表时所使用的方法,在Transact-SQL 语句中引用视图名称来使用此虚拟表

视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图在数据库中并不是以数据值存储集形式存在,除非是索引视图。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。

对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其他数据库的一个或多个表,或者其他视图。分布式查询也可用于定义使用多个异类源数据的视图。例如,如果有多台不同的服务器分别存储您的单位在不同地区的数据,而您需要将这些服务器上结构相似的数据组合起来,这种方式就很有用。

通过视图进行查询没有任何限制,通过它们进行数据修改时的限制也很少。

视图没有存在形式,如果自己不删除视图是不会自动消失的,视图同时也是作为物理表的窗口,执行效率相对一般。