所谓的计算列,就是某一列的值是通过别的列计算得来的。例如,“chinese”列的值为98,“math”列的值为“89”,“english”列的值为“95”,“total”列的值不需要手动插入,定义“(chinese+math+english)”的结果为“total”列的值,那么“total”列的值就是计算列。
在MySQL 8.0中,“CREATE TABLE”语句和“ALTER TABLE”语句都支持增加计算列。SQL语句示例如下。
(1)以“tb_student”表为例,使用ALTER语句先给“tb_student”表增加“math”和“english”列,然后增加“total”计算列。
提示信息表示增加列成功了。其中“total”列的值被指定为始终由“(chinese+math+english)”计算产生。
(2)另外,第4.4节中,已经把“tb_student”表的所有记录清空了,所以读者也可以使用DROP语句先删除“tb_student”表,然后使用CREATE语句重新建立一张新表。
提示信息表示删除原来的“tb_student”表成功,重新创建的“tb_student”也成功了。
(3)使用DESC语句查看表结构。
数据表中的计算列定义好后,我们就可以演示计算列数据的插入和修改效果了。SQL语句示例如下。
(1)向“tb_student”表插入演示数据。
提示信息表示插入4条记录成功。在上面的INSERT语句中并没有指定计算列“total”的数据。
(2)使用SELECT语句查看执行结果。
从结果中可以看出,“total”列的数据由“(chinese+math+english)”计算所得。
例如,(1)更新“tb_student”表中“sname”为“张三”的“chinese”字段值为“100”。
提示信息表示1条记录受到影响。
(2)使用SELECT语句查看执行结果。
从结果中可以看出,字段“total”的值始终由“(chinese+math+english)”计算所得,即如果“chinese”“math”“english”字段的值修改了,“total”字段值会自动重新计算。