菜鸟笔记
提升您的技术认知

数据库中虚拟表和临时表的区别?

虚拟表(Virtual Table)和临时表(Temporary Table)在数据库系统中都用于处理暂时性的数据存储需求,但它们的概念和用途有所不同:

虚拟表(通常是视图View):

  • 虚拟表(也称为视图)并非实际存储数据的实体,而是基于一个或多个实际表的SELECT查询定义的一个逻辑表结构。
  • 视图不占用物理存储空间,当查询视图时,数据库系统会动态执行视图所对应的SQL查询语句,并返回结果集作为虚拟表的内容。
  • 视图的数据内容随其引用的基础表数据的变化而变化,每次查询都会得到最新的数据结果。
  • 视图可以用来简化查询、保护数据安全(通过限制对基础表的直接访问)、实现数据的逻辑组织和抽象。

临时表:

  • 临时表是实际存在于数据库中的物理表,但它是在会话(Session)级别创建和使用的,主要用于存储临时数据,生命周期较短。
  • 根据临时表的范围,可以分为会话级临时表(Session-scoped Temporary Tables)和全局临时表(Global Temporary Tables)。
    • 会话级临时表只对该会话可见,当会话结束时,该临时表会被自动删除。
    • 全局临时表则对所有会话可见,但在所有引用该表的会话都结束后,该表才会被删除。
  • 数据存放在临时表中不会影响到持久化的数据库表,而且在会话结束后,临时表中的数据也会随之消失。
  • 临时表允许进行DML操作(如INSERT、UPDATE、DELETE),可以手动插入、修改和删除数据,并且经常用于中间计算结果的暂存、分组处理、排序或其他复杂的处理流程中。

总结来说,虚拟表(视图)主要是一种逻辑概念,提供了一种查看数据的新方式,而临时表则是物理存在的,用于临时存储数据并在特定会话期间内有效。