📜  PostgreSQL添加列

📅  最后修改于: 2020-11-30 01:20:16             🧑  作者: Mango

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;

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

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命令添加多列的语法:

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

之后,我们将在以下命令的帮助下将“地址”列添加到“人”表:

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列。

添加具有NOT NULL约束的列

在此,我们将向不包含空约束的列添加到包含某些数据的特定表中。

首先,我们将使用“插入”命令将一些数据插入“人”表:

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;

输出量

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