PostgreSQL 表字段重命名

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

PostgreSQL 重命名 COLUMN 命令

我们使用带有Rename 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 将引发错误。
  • 对于 Rename 条件,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 RENAME COLUMN 示例

让我们看一些示例,以便更好地理解我们将在何处使用 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)  
);  

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

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

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

之后,我们将创建一个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视图已经创建。

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

要将St_email列重命名为 Students 表的电子邮件,我们将对 ALTER TABLE RENAME COLUMN命令使用以下语句:

ALTER TABLE Students   
RENAME COLUMN St_email TO email;  

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

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

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

ALTER TABLE Student_groups   
RENAME COLUMN Stu_name TO name;  

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

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

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

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

这些语句将Students表的两列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;  

执行上面的命令后,我们得到下面的消息窗口,表明Students 表已被更改。

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

Select * from Students;  

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

热门文章

优秀文章