📜  PostgreSQL更改列类型

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

PostgreSQL更改列类型

在本节中,我们将讨论如何在ALTER TABLE命令的帮助下更改column数据类型。

更改列数据类型的命令

我们将使用ALTER TABLE命令来修改列的数据类型。

更改列数据类型的基本语法如下:

ALTER TABLE table_name
ALTER COLUMN column_name [SET DATA] TYPE new_data_type;

在以上语法中,我们将使用以下参数:

Parameters Description
Table_name It is used to define the table’s name, where we want to modify the column data type.
Column_name It is used to provide the column’s name, where the data type will be modified in the ALTER COLUMN condition.
New_data_type It is used after the Type keyword, and for the columns reference. It is likely to use either TYPE or SET DATA TYPE.

在单个命令中更改多列的语法

我们将使用以下语法在单个命令中修改几列的数据类型。

ALTER TABLE table_name
ALTER COLUMN column_name_1 [SET DATA] TYPE new_data_type,
ALTER COLUMN column_name_2 [SET DATA] TYPE new_data_type;

正如我们在上述语法中所看到的,我们可以借助逗号(,)离散化每个ALTER COLUMN条件,以一次转换各种列的类型。

PostgreSQL提供了将旧列值更改为新列值的方法,同时通过添加USING条件修改列的数据类型,如下面的命令所示:

ALTER TABLE table_name
ALTER COLUMN column_name TYPE new_data_type USING expression;

注意:在PostgreSQL中,我们可以使用USING子句从旧值中添加新的列值。

如果我们不使用USING条件,PostgreSQL将间接地将旧的列值创建为新的列值。如果创建失败,PostgreSQL将提出一个问题,并要求我们为USING子句提供一个用于更改的表达式。

PostgreSQL更改列类型的示例

为了显示列类型的更改,我们将创建一个名为Student_information的新表。

CREATE TABLE Student_information(
Stu_id serial PRIMARY KEY,
Stu_name TEXT NOT NULL,
Stu_agr int,
Stu_address char(30)
);

执行完以上命令后,我们将获得以下消息窗口,该窗口显示已创建Student_information表。

之后,我们将在特定表中插入一些行。

INSERT INTO Student_information (
Stu_name, Stu_age,Stu_address)
VALUES('Mike','26','New york' ),
 ('Emily','23','Boston'),
 ('john','25','Chicago');

输出量

一旦执行了上面的命令,我们将获得以下消息窗口:三行已插入到Student_information表中。

我们将使用以下命令将Stu_name的数据类型修改为Varchar

ALTER TABLE Student_information ALTER COLUMN Stu_name TYPE VARCHAR;

输出量

执行完上述命令后,我们将得到以下结果:

以下命令将帮助我们将Stu_age和Stu_address的数据类型从int更改为Varchar ,将char更改为Varchar

ALTER TABLE Student_information 
ALTER COLUMN Stu_age TYPE VARCHAR,
 ALTER COLUMN Stu_address TYPE VARCHAR;

输出量

一旦执行了上面的命令,我们将获得以下消息窗口: Student_information表已被更改。

如果要检查上面执行的所有操作,我们将使用Select命令:

Select * from Student_information;

输出量

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