📅  最后修改于: 2020-11-17 02:21:31             🧑  作者: Mango
列是表中的一系列单元格,可能包含文本,数字和图像。每一列为表中的每一行存储一个值。在本节中,我们将讨论如何在现有表中添加或删除列。
MySQL允许ALTER TABLE ADD COLUMN命令向现有表添加新列。以下是执行此操作的语法:
ALTER TABLE table_name
ADD COLUMN column_name column_definition [FIRST|AFTER existing_column];
在上面,
有时需要将多个列添加到现有表中。然后,我们可以使用如下语法:
ALTER TABLE table_name
ADD COLUMN column_name1 column_definition [FIRST|AFTER existing_column],
ADD COLUMN column_name2 column_definition [FIRST|AFTER existing_column];
让我们借助各种示例来理解它。在这里,我们将使用以下语句创建一个名为“ Test”的表:
CREATE TABLE Test (
Stude_id int AUTO_INCREMENT PRIMARY KEY,
Name varchar(55) NOT NULL
);
表格结构如下图所示:
创建表后,我们要向“测试”表中添加一个名为“城市”的新列。由于我们尚未在列名之后明确指定新列的位置,因此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');
它看起来像这样。
假设我们要在“测试”表中添加多个列((分支,电子邮件))。在这种情况下,执行以下语句:
ALTER TABLE Test
ADD COLUMN Branch VARCHAR(30) DEFAULT NULL After Name,
ADD COLUMN Email VARCHAR(20) DEFAULT NULL AFTER Phone_number;
注意,将“分支”和“电子邮件”列分配给默认值NULL。但是,Test表已经具有数据,因此MySQL将对这些新列使用空值。
我们可以在“测试”表中验证记录,如下所示:
如果我们不小心用现有的列名添加了新列,MySQL将抛出错误。例如,执行以下发出错误的语句:
ALTER TABLE Test
ADD COLUMN City VARCHAR(30) NOT NULL;
我们将收到以下错误消息。
MySQL允许ALTER TABLE CHANGE COLUMN语句用新名称更改旧列。以下是执行此操作的语法:
ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name column_definition [FIRST|AFTER existing_column];
在上面,
MySQL RENAME COLUMN示例
此示例说明了如何更改MySQL表中的列名:
ALTER TABLE Test
CHANGE COLUMN Phone_number Mobile_number
varchar(20) NOT NULL;
该语句将在测试表中将列名称Phone_number更改为新名称Mobile_number。以下输出对此进行了更清晰的说明。
有时,我们想从表中删除单列或多列。 MySQL允许ALTER TABLE DROP COLUMN语句从表中删除该列。以下是执行此操作的语法:
ALTER TABLE table_name DROP COLUMN column_name;
在上面,
如果我们要从表中删除多个列,请执行以下语句:
ALTER TABLE table_name
DROP COLUMN column_1,
DROP COLUMN column_2,
......;
MySQL DROP COLUMN示例
本示例说明了如何从MySQL表中删除列。在这里,我们将创建一个先前创建的表“ Test”,如下图所示:
假设我们要从测试表中删除列名“分支”。为此,请执行以下语句:
ALTER TABLE Test DROP COLUMN Branch;
成功执行后,我们可以验证下面从表中删除“分支”列的结果:
在某些情况下,需要从表中删除多个列。为此,我们需要执行以下语句:
ALTER TABLE Test
DROP COLUMN Mobile_number,
DROP COLUMN Email;
该命令将删除两列。我们可以使用下图中给出的查询来验证它。
在从表中删除列之前,请记住以下要点:
MySQL与关系数据库一起使用,其中一个表的架构可以依赖于另一个表的列。因此,当我们从一个表中删除一列时,它也会影响所有从属表。删除列时请考虑以下几点: