教程 mariadb tutorial

虚拟列

1. 什么是虚拟列

虚拟列(Virtual Column)是根据表中其它列的表达式计算而来的列,不存储实际数据,而是在查询时动态计算。它可以简化查询逻辑,提升数据一致性。

2. 虚拟列的类型

  • 虚拟(Virtual):不占用存储空间,查询时计算。
  • 持久化(Stored):计算结果存储在表中,查询更快,但占用存储。

3. 创建虚拟列示例

创建带虚拟列的表:

sql
CREATE TABLE employees (
  first_name VARCHAR(50),
  last_name VARCHAR(50),
  full_name VARCHAR(101) AS (CONCAT(first_name, ' ', last_name)) VIRTUAL
);

`

查询时,full_name 自动计算 first_name 和 last_name 的拼接结果。

4. 使用持久化虚拟列

如果查询性能要求高,可以使用 STORED:

sql
CREATE TABLE employees (
  first_name VARCHAR(50),
  last_name VARCHAR(50),
  full_name VARCHAR(101) AS (CONCAT(first_name, ' ', last_name)) STORED
);

5. 注意事项

  • 虚拟列不能直接插入或更新,只能通过修改基础列影响其值。
  • 支持索引创建,尤其是持久化虚拟列,提高查询效率。
  • 适用于计算字段、格式转换、派生数据等场景。

虚拟列是 MariaDB 中强大的功能,能够通过表达式动态生成字段,简化业务逻辑并优化性能。