SQL数据库中视图和表有哪些本质区别?
- 内容介绍
- 文章标签
- 相关推荐
说起来,

SQL 数据库中视图和表的本质区别
在日常开发与运维过程中。很多同学都会碰到以下痛点:
1️⃣ 定义方式与结构差异
-
表通过
CREATE TABLE创建,拥有独立的物理结构,用于实际存储数据。 -
视图通过
CREATE VIEW定义,是一个基于一个或多个表的查询语句的“虚拟表”。它本身不拥有物理存储,只保存查询定义。其实,
2️⃣ 数据存储方式
- 表:数据以行列形式真实写入磁盘或内存。插入、更新、删除都会直接修改底层文件。按理说,
- 视图:不保存任何数据。仅在被查询时动态执行其定义的 SELECT 语句,从基础表实时获取结果。除非是物化视图,否则不会占用额外存储空间。
3️⃣ 更新行为
使用者痛点:对视图的增删改是否会影响底层表?
- 表:支持直接的 INSERT、UPDATE、DELETE,操作立即落在自身的数据页上。
- 普通视图:默认是只读的。若满足可更新视图的规则,对其执行 DML 会被转换为对对应基表的同等操作。说起来,
-
可更新视图的实现方式:
- 满足程序自动可更新条件。
- 在视图上创建 INSTEAD OF 触发器,自定义 DML 转换逻辑。
说起来,

SQL 数据库中视图和表的本质区别
在日常开发与运维过程中。很多同学都会碰到以下痛点:
1️⃣ 定义方式与结构差异
-
表通过
CREATE TABLE创建,拥有独立的物理结构,用于实际存储数据。 -
视图通过
CREATE VIEW定义,是一个基于一个或多个表的查询语句的“虚拟表”。它本身不拥有物理存储,只保存查询定义。其实,
2️⃣ 数据存储方式
- 表:数据以行列形式真实写入磁盘或内存。插入、更新、删除都会直接修改底层文件。按理说,
- 视图:不保存任何数据。仅在被查询时动态执行其定义的 SELECT 语句,从基础表实时获取结果。除非是物化视图,否则不会占用额外存储空间。
3️⃣ 更新行为
使用者痛点:对视图的增删改是否会影响底层表?
- 表:支持直接的 INSERT、UPDATE、DELETE,操作立即落在自身的数据页上。
- 普通视图:默认是只读的。若满足可更新视图的规则,对其执行 DML 会被转换为对对应基表的同等操作。说起来,
-
可更新视图的实现方式:
- 满足程序自动可更新条件。
- 在视图上创建 INSTEAD OF 触发器,自定义 DML 转换逻辑。

