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使用关系型数据库,其中一个表的模式可以依赖于另一个表的列。所以当我们从一个表中删除一个列时,它也会影响到所有依赖的表。在删除列时请考虑以下要点:
- 当我们从一个表中删除列时,它会影响到所有相关的对象,如触发器,存储过程和视图。假设我们删除了一个在触发器中引用的列。在删除列后,触发器将变为无效状态。
- 被删除的列依赖于其他应用程序代码,必须进行更改,这需要时间和精力。
- 当我们从大表中删除一个列时,它会影响到数据库在删除期间的性能。