MySQL 添加/删除列

17 Mar 2025 | 5 分钟阅读

列是表中一系列单元格,可能包含文本、数字和图像。每列存储表中每行的一个值。在本节中,我们将讨论如何在现有表中添加或删除列。

如何在 MySQL 表中添加列?

MySQL允许使用 ALTER TABLE ADD COLUMN 命令向现有表添加新列。以下是执行此操作的语法:

在上面:

  • 首先,我们需要指定表名。
  • 其次,在 ADD COLUMN 子句之后,我们必须指定新列的名称及其定义。
  • 最后,我们需要指定 FIRST 或 AFTER 关键字。FIRST 关键字用于将列添加为表的第一个列。AFTER 关键字用于在现有列之后添加新列。如果我们未提供这些关键字,MySQL 默认将新列添加为表的最后一个列。

有时需要向现有表添加多个列。然后,我们可以使用以下语法:

MySQL ADD COLUMN 示例

让我们通过各种示例来理解它。在这里,我们将使用以下语句创建一个名为 “Test” 的表:

表结构如下图所示:

MySQL Add/Delete Column

创建表后,我们想向 Test 表添加一个名为 City 的新列。由于我们未在列名之后明确指定新列的位置,MySQL 将其添加为最后一个列。

接下来,我们想向 Test 表添加一个名为 Phone_number 的新列。这次,我们将明确指定新列的位置,以便 MySQL 将列添加到指定位置。

在下面的输出中,我们可以看到两个列已成功添加到指定位置。

MySQL Add/Delete Column

让我们使用 INSERT 语句向 Test 表添加一些数据,如下所示:

它将看起来像这样。

MySQL Add/Delete Column

假设我们想在 Test 表中添加多个列 (Branch,Email)。在这种情况下,执行以下语句:

值得注意的是,列 Branch 和 Email 被分配了默认值 NULL。但是,Test 表已经有数据,因此 MySQL 将为这些新列使用空值。

我们可以如下验证 Test 表中的记录:

MySQL Add/Delete Column

如果我们在添加新列时意外使用了现有列名,MySQL 将抛出错误。例如,执行以下语句会引发错误:

我们将收到以下错误消息。

MySQL Add/Delete Column

如何在 MySQL 表中重命名列?

MySQL 允许使用 ALTER TABLE CHANGE COLUMN 语句将旧列更改为新名称。以下是执行此操作的语法:

在上面:

  • 首先,我们需要指定表名。
  • 接下来,在 CHANGE COLUMN 子句之后,我们必须指定旧列名和新列名及其定义。我们必须指定列定义,即使它不会改变。
  • 最后,我们需要指定 FIRST 或 AFTER 关键字。这是可选的,当我们需要在特定位置更改列名时指定。

MySQL RENAME COLUMN 示例

此示例展示了如何在 MySQL 表中更改列名:

此语句将 Test 表中的列名 Phone_number 更改为新名称 Mobile_number。下面的输出更清楚地解释了这一点。

MySQL Add/Delete Column

如何从 MySQL 表中删除列?

有时,我们想从表中删除单个或多个列。MySQL 允许使用 ALTER TABLE DROP COLUMN 语句从表中删除列。以下是执行此操作的语法:

在上面:

  • 首先,我们需要指定要从中删除列的表名
  • 其次,在 DROP COLUMN 子句之后,我们必须指定要从表中删除的列名。值得注意的是,COLUMN 关键字在 DROP COLUMN 子句中是可选的。

如果我们要从表中删除多个列,请执行以下语句:

MySQL DROP COLUMN 示例

此示例解释了如何从 MySQL 表中删除列。在这里,我们将使用我们之前创建的 “Test” 表,它看起来像下图所示:

MySQL Add/Delete Column

假设我们想从 Test 表中删除列名 “Branch”。为此,执行以下语句:

成功执行后,我们可以在下面验证结果,其中列 Branch 已从表中删除:

MySQL Add/Delete Column

在某些情况下,需要从表中删除多个列。为此,我们需要执行以下语句:

该命令将删除这两个列。我们可以使用下图中的查询进行验证。

MySQL Add/Delete Column

在从表中删除列之前,请记住以下关键点:

MySQL 使用关系数据库,其中一个表的架构可以依赖于另一个表的列。因此,当我们从一个表中删除列时,它也会影响所有相关表。删除列时请考虑以下几点:

  • 当我们从表中删除列时,它将影响所有关联的对象,例如触发器、存储过程和视图。假设我们删除一个在触发器中引用的列。删除列后,触发器将失效。
  • 被删除的列依赖于其他应用程序代码,也必须更改,这需要时间和精力。
  • 当我们从大表中删除列时,它会影响数据库在删除过程中的性能。

下一主题MySQL Show Columns