MySQL 添加/删除列

2024年03月27日 MySQL 添加/删除列 极客笔记

MySQL 添加/删除列

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

我们如何在MySQL表格中添加列?

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

ALTER TABLE table_name 
    ADD COLUMN column_name column_definition [FIRST|AFTER existing_column];

在上面的例子中,

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

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

ALTER TABLE table_name 
    ADD COLUMN column_name1 column_definition [FIRST|AFTER existing_column],
    ADD COLUMN column_name2 column_definition [FIRST|AFTER existing_column];

MySQL 添加列示例

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

CREATE TABLE Test (
    Stude_id int AUTO_INCREMENT PRIMARY KEY,
    Name varchar(55) NOT NULL
);

表结构如下图所示:

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

ALTER TABLE Test 
ADD COLUMN City VARCHAR(30) NOT NULL;

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

ALTER TABLE Test 
ADD COLUMN Phone_number VARCHAR(20) NOT NULL AFTER Name;

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

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

INSERT INTO Test( Name, Phone_number, City) 
VALUES ('Peter', '34556745362', 'California'),
('Mike', '983635674562', 'Texas');

它将会看起来像这样。

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

ALTER TABLE Test 
ADD COLUMN Branch VARCHAR(30) DEFAULT NULL After Name,
ADD COLUMN Email VARCHAR(20) DEFAULT NULL AFTER Phone_number;

请注意,列Branch和Email被分配了默认值 NULL 。然而,测试表已经有数据,因此MySQL将使用这些新列的空值。

我们可以在测试表中验证记录如下:

如果我们不小心在现有的列名上添加一个新列,MySQL将会 抛出一个错误 。例如,执行下面的语句将会出现错误:

ALTER TABLE Test 
ADD COLUMN City VARCHAR(30) NOT NULL;

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

如何在MySQL表中重命名列?

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

ALTER TABLE table_name 
    CHANGE COLUMN old_column_name new_column_name column_definition [FIRST|AFTER existing_column];

在上面,

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

MySQL RENAME COLUMN示例

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

ALTER TABLE Test
  CHANGE COLUMN Phone_number Mobile_number
    varchar(20) NOT NULL;

这个语句将会将列名 Phone_number 更改为新的名称 Mobile_number 在 Test 表中。下面的输出更清楚地解释了这个操作。

如何从MySQL表中删除列?

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

ALTER TABLE table_name  DROP COLUMN column_name;

在以上情况中,

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

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

ALTER TABLE table_name
DROP COLUMN column_1,
DROP COLUMN column_2,
......;

MySQL删除列示例

本示例说明了如何从MySQL表中删除列。在这里,我们将使用之前创建的名为 “Test” 的表,如下图所示:

假设我们想要从Test表中删除一个列名 “Branch” 。要执行此操作,请执行下面的语句:

ALTER TABLE Test DROP COLUMN Branch;

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

在某些情况下,需要从表格中删除多个列。为了做到这一点,我们需要执行下面的语句:

ALTER TABLE Test
    DROP COLUMN Mobile_number,
    DROP COLUMN Email;

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

在删除表中的列之前,请记住以下要点:

MySQL使用关系型数据库,其中一个表的模式可以依赖于另一个表的列。所以当我们从一个表中删除一个列时,它也会影响到所有依赖的表。在删除列时请考虑以下要点:

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

本文链接:http://so.lmcjl.com/news/511/

展开阅读全文