MySQL 如何修改表以添加MySQL存储的GENERATED COLUMNS?

MySQL 如何修改表以添加MySQL存储的GENERATED COLUMNS?

生成列是MySQL5.7的一项新功能。与标准列不同,生成列的值是在插入行时计算得出,而不是由插入行的值决定。这意味着生成列可以包含计算和聚合函数,而不必在查询时重新计算所有值。

但是,如果您已经有一个表,并且想向其中添加生成列,该怎么办呢?本文将介绍如何修改现有表以包含生成列。

阅读更多:MySQL 教程

步骤1:查看表定义

首先,我们需要查看表的定义,以确定要添加的生成列的名称和类型。可以使用以下命令查看表的定义:

DESCRIBE table_name;

例如,假设有一个名为“employees”的表,我们想向其中添加一个名为“full_name”的生成列,以组合员工的名字和姓氏。我们可以使用以下命令查看表的定义:

DESCRIBE employees;

步骤2:将表更改为InnoDB存储引擎

如果表使用MyISAM存储引擎,必须将其更改为InnoDB存储引擎,因为MyISAM不支持生成列。可以使用以下命令将表更改为InnoDB存储引擎:

ALTER TABLE table_name ENGINE=InnoDB;

例如,假设“employees”表使用MyISAM存储引擎,我们可以使用以下命令将其更改为InnoDB存储引擎:

ALTER TABLE employees ENGINE=InnoDB;

注意:使用此命令更改存储引擎会使用旧格式的数据文件,并可能需要一些时间来完成。

步骤3:添加生成列

现在我们准备向表中添加生成列。可以使用以下命令添加生成列:

ALTER TABLE table_name
ADD generated_column_name AS (generated_column_expression);

其中,generated_column_name是生成列的名称,generated_column_expression是计算生成列值的表达式。

例如,对于我们的“employees”表,我们可以使用以下命令添加名为“full_name”的生成列:

ALTER TABLE employees
ADD full_name AS (CONCAT(first_name, ' ', last_name));

在这个例子中,生成列“full_name”的值由函数CONCAT()计算而来,该函数将两个标准列“first_name”和“last_name”连接起来。

步骤4:验证生成列的值

现在我们已经添加了生成列,可以使用以下命令验证生成列的值是否正确:

SELECT * FROM table_name;

例如,要验证“employees”表的生成列“full_name”,可以使用以下命令:

SELECT first_name, last_name, full_name FROM employees;

步骤5:删除生成列

如果需要,可以使用以下命令删除生成列:

ALTER TABLE table_name
DROP generated_column_name;

例如,要删除“employees”表的生成列“full_name”,可以使用以下命令:

ALTER TABLE employees
DROP full_name;

结论

现在您已经知道如何向MySQL表中添加生成列了。请记住,在添加生成列之前,必须将表更改为使用InnoDB存储引擎。如果需要删除生成列,请使用ALTER TABLE命令。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程