什么叫计算列呢?简单来说就是某一列的值是通过别的列计算得来的。例如,a列值为1、b列值为2,c列不需要手动插入,定义a+b的结果为c的值,那么c就是计算列,是通过别的列计算得来的。

    在MySQL 8.0中,CREATE TABLE 和 ALTER TABLE 中都支持增加计算列。下面以CREATE TABLE为例进行讲解。

    举例:定义数据表tb1,然后定义字段id、字段a、字段b和字段c,其中字段c为计算列,用于计算a+b的值。
    首先创建测试表tb1,语句如下:

    1. CREATE TABLE tb1(
    2. id INT,
    3. a INT,
    4. b INT,
    5. c INT GENERATED ALWAYS AS (a + b) VIRTUAL
    6. );

    插入演示数据,语句如下:

    1. INSERT INTO tb1(a,b) VALUES (100,200);

    查询数据表tb1中的数据,结果如下:

    1. mysql> SELECT * FROM tb1;
    2. +------+------+------+------+
    3. | id | a | b | c |
    4. +------+------+------+------+
    5. | NULL | 100 | 200 | 300 |
    6. +------+------+------+------+
    7. 1 row in set (0.00 sec)

    更新数据中的数据,语句如下:

    1. mysql> UPDATE tb1 SET a = 500;
    2. Query OK, 0 rows affected (0.00 sec)
    3. Rows matched: 1 Changed: 0 Warnings: 0