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.