理解Table(表)和View(视图)的区别,核心在于理解“实体存储”与“虚拟逻辑”的关系。 简单来说:Table是仓库,View是窗口。
Table与View的核心区别
| 特性 | Table | View |
|---|---|---|
| 定义 | 数据库中存储数据的基本单元 | 基于SQL查询语句创建的虚拟表 |
| 物理存储 | 占用物理空间。数据真实地保存在硬盘中 | 不存储数据(除物化视图外)。只保存查询逻辑(Definition) |
| 数据来源 | 数据由用户直接插入(Insert) | 数据是动态生成的,来源于底层的Table |
| 性能 | 直接读取,速度通常较快(取决于索引) | 每次查询都需要实时运行背后的SQL,可能稍慢 |
| 主要用途 | 存储原始数据 | 简化复杂查询、限制数据访问权限(安全)、格式化数据 |
为什么更新了Table,View也要修改?
情况A:更新了Table的数据,比如增加了一行数据,View不需要修改代码,它会自动展示最新数据 情况B:更新了Table的结构,比如修改了列名,或者删除了某一列,View可能会报错,因为View的定义是写死的
View的依赖性(Dependency)
View和Table之间存在强依赖关系。
- 上游(Upstream):Table(被依赖方)
- 下游(Downstream):View(依赖方) 如果上游的table发生了结构性的改变,下游的view往往因为找不到对应的引用而失效。这在数据库维护中被称为“Breaking Changes”。