PostgreSQL 添加列


PostgreSQL 添加列

在本节中,我们将了解如何使用 PostgreSQL ADD COLUMN 命令将一个或多个列添加到当前数据库表中。

PostgreSQL ADD COLUMN 命令

我们将使用alter table add column命令将新列添加到现有表中。

句法

Alter add column 命令的语法如下:

ALTER TABLE table_name  
ADD COLUMN new_column_name data_type;

在上面的语法中,我们有以下参数:

范围 描述
改变表 它是一个子句,用于修改表的定义。
表名 它用于描述需要在 ALTER TABLE 子句后添加新列的表名。
new_cloumn _name 它用于在 ADD COLUMN 条件之后指定列名及其属性,如默认值、数据类型等。

注意:当我们向表中添加新列时,PostgreSQL 会在表的末尾对其进行增强,因为 PostgreSQL 没有其他选择来定义新列在表中的位置。

使用 alter table 命令添加多列

使用 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;

PostgreSQL 添加列的例子

为了更好地理解添加列,我们将遵循以下过程:

首先,我们将借助以下命令创建一个名为Persons的新表,其中包含两列Person_id 和 First_name

CREATE TABLE Persons (  
    Person_ID Serial primary key,  
   Person_Name varchar not Null       
 );

输出

执行上述查询后,我们将得到以下消息窗口,其中表示Persons表已创建:

PostgreSQL 添加列

之后,我们将使用以下命令的帮助将Address列添加到Persons表:

ALTER TABLE Persons   
ADD COLUMN Address VARCHAR;

输出

执行上述查询后,我们将得到以下消息窗口:

PostgreSQL 添加列

下面的命令将帮助我们将City 和 phone_no列添加到Persons表中:

ALTER TABLE Persons   
ADD COLUMN City VARCHAR,  
ADD COLUMN Phone_no VARCHAR;

输出

执行上述查询后,我们将得到以下消息窗口:

PostgreSQL 添加列

如果我们想在psql 中查看Persons表结构,我们将使用以下命令:

javatpoint=# \d Persons

输出所述的的表结构

PostgreSQL 添加列

正如我们在上图中所看到的,我们在 Persons 表的列列表的末尾添加了 Address、City 和 Phone_no列。

添加具有 NOT NULL 约束的列

在此,我们将向包含一些数据的特定表添加具有非空约束的列。

首先,我们将使用 Insert 命令将一些数据插入到Persons表中:

INSERT INTO Persons (Person_name)  
VALUES  
    ('John'),  
    ('Emily'),  
    ('Mike');

输出

我们可以看到三行已插入到下面消息窗口的Persons表中。

PostgreSQL 添加列

现在,让我们假设我们想将Email列添加到Persons表,为此,我们使用以下命令:

ALTER TABLE Persons   
ADD COLUMN Email VARCHAR NOT NULL;

输出

一旦我们执行上面的命令,我们会得到一个错误,说 “email”列包含空值

PostgreSQL 添加列

发生上述错误是因为Email列包含NOT NULL约束。

在PostgreSQL 中,新列在添加列时采用NULL值,这也破坏了NOT NULL约束。

要解决上述错误,我们需要按照以下步骤操作:

步骤1

首先,我们需要添加没有NOT NULL约束的列,为此,我们将使用以下命令:

ALTER TABLE Persons   
ADD COLUMN Email VARCHAR;

输出

正如我们在下面的消息窗口中看到的,Email列已添加Persons表中:

PostgreSQL 添加列

第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;

输出

正如我们在下面的消息窗口中看到的,Email列值已更新Persons表中:

PostgreSQL 添加列

如果我们想检查Persons表中的值是否更新,我们将使用Select命令:

Select * From Persons;

输出

上述查询的输出如下:

PostgreSQL 添加列

Step3

更新 Email 列值后,我们将使用以下命令将Email列的NOT NULL约束设置到Persons表中:

ALTER TABLE Persons  
ALTER COLUMN Email SET NOT NULL;

输出

执行上述命令后,我们将得到以下消息窗口:

PostgreSQL 添加列