PostgreSQL 添加表字段

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

PostgreSQL 添加列命令

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

Alter add column 命令的语法如下:

ALTER TABLE table_name  
ADD COLUMN new_column_name data_type;  

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

参数 描述
Alter table 它是一个子句,用于修改表的定义。
Table_name 它用于描述我们需要在 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表:

之后,我们将在以下命令的帮助下将Address列添加到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表结构的输出:

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

添加具有 NOT NULL 约束的列

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

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

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

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

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

ALTER TABLE Persons   
ADD COLUMN Email VARCHAR NOT NULL;  

一旦我们执行上面的命令,我们会得到一个错误,column "email" contains null values

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

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

要解决上述错误,我们需要执行以下步骤:

第1步:

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

ALTER TABLE Persons   
ADD COLUMN Email VARCHAR;  

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

第2步:

现在,我们将更新email列的值。

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表中:

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

Select * From Persons; 

上述查询的输出如下:

第3步:

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

ALTER TABLE Persons  
ALTER COLUMN Email SET NOT NULL;  

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

热门文章

优秀文章