程序员社区

MySQL系列教程 --- 23、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  
);  

表结构如下图所示:

file

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

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

接下来,我们要到一个名为新列添加PHONE_NUMBER测试表。这一次,我们将明确指定新的列位置,以便 MySQL 将列添加到指定的位置。

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

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

file

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

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

它看起来像这样。

file

假设我们要在 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 将对这些新列使用空值。

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

file

如果我们不小心使用现有列名添加了一个新列,MySQL 将抛出错误。例如,执行以下发出错误的语句:

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

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

MySQL Add/Delete Column

我们如何重命名 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 重命名列示例

此示例显示了我们如何更改 MySQL 表中的列名:

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

此语句将使用新名称Mobile_number 更改Test 表中的列名称Phone_number。下面的输出更清楚地解释了它。

file

我们如何从 MySQL 表中删除一列?

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

ALTER TABLE table_name  DROP COLUMN column_name;  

在上面,

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

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

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

MySQL 删除列示例

这个例子解释了我们如何从 MySQL 表中删除一列。在这里,我们将采用我们之前创建的表“Test”,如下图所示:

file

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

ALTER TABLE Test DROP COLUMN Branch;  

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

file

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

ALTER TABLE Test  
    DROP COLUMN Mobile_number,  
    DROP COLUMN Email;  

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

file

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

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

  • 当我们从表中删除列时,它会影响所有关联的对象,例如触发器、存储过程和视图。假设我们删除了在触发器中引用的列。删除列后,触发器无效。
  • 删除的列依赖于其他应用程序代码,也必须更改,这需要时间和精力。
  • 当我们从大表中删除一列时,它会在删除期间影响数据库的性能。
赞(0) 打赏
未经允许不得转载:IDEA激活码 » MySQL系列教程 --- 23、MySQL 添加、删除列

一个分享Java & Python知识的社区