MySQL 生成列有哪些不同类型?
mysqlmysqli database
我们有两种类型的 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 列是存储生成的列。