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;
执行上述命令后,我们将得到以下消息窗口:
热门文章
优秀文章