什么是 MySQL 生成的列的不同类型?


有以下两种 MySQL 生成的列类型 −

虚拟生成的列

顾名思义,此类生成的列不会占据任何磁盘空间。可以使用或不使用关键字“virtual”来生成它。为了理解,我们在以下示例中对其进行说明 −

实例

mysql> Create table triangle(SideA DOUBLE, SideB DOUBLE, SideC DOUBLE AS (SQRT(SideA * SideB + SideB * SideB)));
Query OK, 0 rows affected (0.44 sec)

mysql> Describe Triangle;
+-------+--------+------+-----+---------+-------------------+
| Field | Type   | Null | Key | Default | Extra             |
+-------+--------+------+-----+---------+-------------------+
| SideA | double | YES  |     | NULL    |                   |
| SideB | double | YES  |     | NULL    |                   |
| SideC | double | YES  |     | NULL    | VIRTUAL GENERATED |
+-------+--------+------+-----+---------+-------------------+
3 rows in set (0.00 sec)

上面的描述表明 SideC 列是虚拟生成的列。

存储的生成列

顾名思义,此类生成的列将占据磁盘空间。可以使用关键字“stored”来生成它。为了理解,我们在以下示例中对其进行说明 −

实例

mysql> Create table triangle_stored(SideA DOUBLE, SideB DOUBLE, SideC DOUBLE AS (SQRT(SideA * SideB + SideB * SideB)) STORED);
Query OK, 0 rows affected (0.47 sec)

mysql> Describe triangle_stored;
+-------+--------+------+-----+---------+------------------+
| Field | Type   | Null | Key | Default | Extra            |
+-------+--------+------+-----+---------+------------------+
| SideA | double | YES  |     | NULL    |                  |
| SideB | double | YES  |     | NULL    |                  |
| SideC | double | YES  |     | NULL    | STORED GENERATED |
+-------+--------+------+-----+---------+------------------+
3 rows in set (0.00 sec)

上面的描述表明 SideC 列是存储的生成列。

更新时间:2020 年 6 月 22 日

105 次浏览

开启您的 事业

完成课程获得认证

开始学习
广告
© . All rights reserved.