MySQL 什么是MySQL GENERATED COLUMN?

MySQL 什么是MySQL GENERATED COLUMN?

MySQL 5.7版本之后,引入了新的功能——生成列(GENERATED COLUMN)。该功能可以自动计算并填充新列的值,而无需使用触发器或应用层逻辑。

GENERATED COLUMN有两种类型: 存储的和虚拟的。

  • 存储的GENERATED COLUMN:将值存储在表中
  • 虚拟的GENERATED COLUMN:只在SQL查询期间计算值

GENERATED COLUMN可以用于计算常见的值,如JSON数据或日期时间戳。同时,它还有助于减少应用程序代码复杂性和错误,并且可以提高性能。

阅读更多:MySQL 教程

如何在创建表时使用MySQL GENERATED COLUMN?

在创建表时,可以使用以下语法定义GENERATED COLUMN:

column_name data_type GENERATED ALWAYS AS (expression) [VIRTUAL|STORED], 
  • column_name:新列的名称
  • data_type:列数据类型(必填项)
  • GENERATED ALWAYS:生成列的标识。ALWAYS选项表示该列始终是GENERATED COLUMN,不允许用户插入值
  • AS (expression):定义列的表达式。可以是任何SQL表达式,如函数调用、算术运算或连接运算符。
  • VIRTUAL或STORED:定义生成列的类型。虚拟列只在SQL查询期间计算值,并不存储在表中。存储列将计算值存储在表中。

以下是一个示例:

CREATE TABLE employee (
id INT,
first_name VARCHAR(50),
last_name VARCHAR(50),
hire_date DATE,
salary DECIMAL(10,2),
bonus DECIMAL(5,2),
total_salary DECIMAL(15,2) 
    GENERATED ALWAYS AS (salary + IFNULL(bonus, 0)) STORED
);

在这个示例中,total_salary列将根据salary和bonus列的值计算出来,而不需要写应用逻辑或使用触发器。

结论

MySQL GENERATED COLUMN是生成列的新特性,可以自动计算并填充新列的值。在创建表时,可以使用GENERATED ALWAYS关键字定义生成列的基础表达式。该功能可以帮助我们减少应用程序代码复杂性和错误,并且可以提高性能。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程