📅  最后修改于: 2020-11-30 01:20:16             🧑  作者: Mango
在本节中,我们将了解如何使用PostgreSQL ADD COLUMN命令向当前数据库表添加一个或多个列。
我们将使用alter table add column,将新列添加到现有表的命令。
句法
下面给出了“ Alter add column”命令的语法:
ALTER TABLE table_name
ADD COLUMN new_column_name data_type;
在以上语法中,我们具有以下参数:
Parameter | Description |
---|---|
Alter table | It is a clause, which is used to modify the definition of a table. |
Table_name | It is used to describe the table name where we need to add a new column after the ALTER TABLE clause. |
New_cloumn _name | It is used to specify the column name with its attribute like default value, data type, and so on, after the ADD COLUMN condition. |
注意:当我们向表中添加新列时,PostgreSQL将在表的末尾对其进行增强,因为PostgreSQL没有其他选择来定义新列在表中的位置。
使用alter table命令添加多列的语法:
ALTER TABLE table_name
ADD COLUMN new_column_name_1 data_type constraint,
ADD COLUMN new_column_name_2 data_type constraint,
:::
:::
ADD COLUMN new_column_name_N data_type constraint;
为了更好地理解添加列,我们将遵循以下过程:
首先,我们将通过以下命令创建一个名为Persons的新表,该表具有两列Person_id和First_name:
CREATE TABLE Persons (
Person_ID Serial primary key,
Person_Name varchar not Null
);
输出量
执行完上面的查询后,我们将获得下面的消息窗口,该窗口显示已创建Persons表:
之后,我们将在以下命令的帮助下将“地址”列添加到“人”表:
ALTER TABLE Persons
ADD COLUMN Address VARCHAR;
输出量
执行完上述查询后,我们将获得以下消息窗口:
下面的命令将帮助我们将City和phone_no列添加到Persons表:
ALTER TABLE Persons
ADD COLUMN City VARCHAR,
ADD COLUMN Phone_no VARCHAR;
输出量
执行完上述查询后,我们将获得以下消息窗口:
如果要在psql中查看Persons表结构,我们将使用以下命令:
javatpoint=# \d Persons
人员表结构的输出
如上图所示,在Persons表的列列表的末尾添加了Address,City和Phone_no列。
在此,我们将向不包含空约束的列添加到包含某些数据的特定表中。
首先,我们将使用“插入”命令将一些数据插入“人”表:
INSERT INTO Persons (Person_name)
VALUES
('John'),
('Emily'),
('Mike');
输出量
我们可以看到以下消息窗口中的“人”表中已插入了三行。
现在,让我们假设我们想将“电子邮件”列添加到“人”表,为此,我们使用以下命令:
ALTER TABLE Persons
ADD COLUMN Email VARCHAR NOT NULL;
输出量
一旦执行上述命令,我们将得到一个错误,指出
“电子邮件”列包含空值
由于“电子邮件”列包含“非空”约束,所以发生了上述错误。
在PostgreSQL中,新列在添加列时采用NULL值,这也会破坏NOT NULL约束。
要解决以上错误,我们需要执行以下步骤:
步骤1
首先,我们需要添加没有NOT NULL约束的列,为此,我们将使用以下命令:
ALTER TABLE Persons
ADD COLUMN Email VARCHAR;
输出量
正如我们在下面的消息窗口中看到的那样,“电子邮件”列已添加到“人”表中:
第2步
现在,我们将更新“电子邮件”列的值。
UPDATE Persons
SET Email = 'JohnSmith11@gmail.com'
WHERE
Person_id = 1;
UPDATE Persons
SET Email = 'Emily23@gmail.com'
WHERE
Person_id = 2;
UPDATE Persons
SET Email = 'MikeRoss21@gmail.com'
WHERE
Person_id = 3;
输出量
正如我们在下面的消息窗口中看到的那样,“电子邮件”列的值已更新到“人员”表中:
如果我们要检查Persons表中的值是否已更新,我们将使用Select命令:
Select * From Persons;
输出量
上面查询的输出如下:
第三步
更新Email列值之后,我们将使用以下命令将Email列的NOT NULL约束设置到Persons表中:
ALTER TABLE Persons
ALTER COLUMN Email SET NOT NULL;
输出量
执行完上述命令后,我们将获得以下消息窗口: