PostgreSQL 重命名列


PostgreSQL 重命名列

在本节中,我们将了解 PostgreSQL重命名列条件如何在Alter table命令中工作以重命名表的一个和多个列。

PostgreSQL 重命名 COLUMN 命令

我们使用带有重命名列条件的ALTER TABLE命令来重命名表的列

句法

Alter table rename column命令的语法如下:

ALTER TABLE table_name   
RENAME COLUMN column_name TO new_column_name;

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

范围 描述
Alter table 它是一个子句,用于修改表的定义。
Table_name 它用于描述我们要在 ALTER TABLE 子句之后重命名列的表名。
Column_name 它用于在 RENAME COLUMN 子句之后指定列名。
new_cloumn _name 它用于在 TO 关键字子句之后指定新列名。

在上面的语法中,COLUMN 关键字是可选的,因此我们可以忽略它,如下面的命令所示:

ALTER TABLE table_name   
RENAME column_name TO new_column_name;

笔记:

  • 如果我们尝试重命名不存在的列,PostgreSQL 将引发错误。
  • 对于重命名条件,PostgreSQL 不提供IF EXISTS选项。

我们需要多次执行ALTER TABLE RENAME COLUMN命令来重命名多列,我们可以一次重命名一列,如下面的语法所示:

ALTER TABLE table_name  
RENAME column_name_1 TO new_column_name_1;

或者

ALTER TABLE table_name  
RENAME column_name_2 TO new_column_name_2;

如果我们重命名列,其由像其他数据库对象的引用外键约束,视图,存储过程和触发器和PostgreSQL的也将修改其所有相关对象。

PostgreSQL 重命名列的例子

让我们看一些示例,以便更好地理解我们将在哪里使用 ALTER TABLE RENAME COLUMN。

首先,我们将创建两个新表作为Students 和 Student_groups

CREATE TABLE Students (  
St_id serial PRIMARY KEY,  
St_name VARCHAR NOT NULL,  
St_email VARCHAR,  
St_phone_no VARCHAR NOT NULL,  
 St_group_id INT,  
FOREIGN KEY (st_group_id) REFERENCES Student_groups (Stu_id)  
);

输出

执行上面的命令后,我们得到下面的消息窗口,它说已经创建了学生表。

PostgreSQL 重命名列

CREATE TABLE Student_groups (  
    Stu_id serial PRIMARY KEY,  
    Stu_name VARCHAR NOT NULL  
);

输出

执行完上面的命令后,我们得到下面的消息窗口,它说已经创建了Student_groups表。

PostgreSQL 重命名列

之后,我们将创建一个student_data 视图,它依赖于上面的Students 和 Student_groups

CREATE VIEW Student_data   
AS SELECT  
 s.St_id,  
 s.St_name,  
 g.Stu_name student_group  
FROM  
Students s  
INNER JOIN Student_groups g ON g.Stu_id = s.St_group_id;

输出

执行上面的命令后,我们得到下面的消息窗口,它说已经创建了Student_data视图。

PostgreSQL 重命名列

使用 RENAME COLUMN 重命名一列的示例

要重命名St_email列到电子邮件中的学生表中,我们将使用下面的ALTER TABLE RENAME语句COLUMN命令:

ALTER TABLE Students   
RENAME COLUMN St_email TO email;

输出

执行上述命令后,我们得到以下消息窗口,其中学生表已被更改。

PostgreSQL 重命名列

使用 RENAME COLUMN 重命名具有依赖对象的列的示例

在此示例中,我们将使用 ALTER TABLE RENAME COLUMN 命令将Stu_name列重命名为Student_groups表的名称。而Stu_name列在使用STUDENT_DATA视图

ALTER TABLE Student_groups   
RENAME COLUMN Stu_name TO name;

输出

执行上述命令后,我们会看到以下消息窗口,表明student_groups 表已被更改。

PostgreSQL 重命名列

现在,我们可以使用以下屏幕截图中给出的命令来验证列名是否已被修改:

PostgreSQL 重命名列

正如我们在视图定义中看到的,Stu_name 列已更改为 name。

使用多个 RENAME COLUMN 重命名多个列的示例

这些语句重命名两列st_name作为和St_phone_no的的学生Student_name和Student_phone_no独立:

ALTER TABLE Students   
RENAME COLUMN St_name TO Student_name;
ALTER TABLE Students  
RENAME COLUMN St_phone_no TO Student_phone_no;

输出

执行上述命令后,我们会看到以下消息窗口,表明学生表已被更改。

PostgreSQL 重命名列

如果我们想检查上述操作是否正常工作,我们将使用下面的SELECT 命令

Select * from Students;

输出

一旦我们执行上述命令,我们将得到以下输出:

PostgreSQL 重命名列