在 PostgreSQL 中重命名和更改列类型的单个查询
本文描述了在 PostgreSQL 中仅使用单个查询来重命名列并更改其类型。
在 MySQL 中重命名和更改列类型
在 MySQL
中,如果你想更改列类型并重命名它,你可以使用如下所示的简单语句。
alter table TAB change id identity varchar(50);
前面的语句包括表 TAB
和它的列 ID
作为 INT
。
create table TAB(
id int not null,
name varchar(50) not null
);
这是如何运作的?与其他 SQL
查询相比,CHANGE
是仅由 MySQL
提供的扩展;它使用 ALTER
语句并遵循此约定。
ALTER TABLE tbl_name [alter_option [, alter_option] ...] [partition_options]
对于 alter_option
,你可以使用:
CHANGE [COLUMN] old_col_name new_col_name column_definition
[FIRST | AFTER col_name]
此语法可帮助你有效地使用 CHANGE
语句。你首先输入 table
名称,然后为要更改的列调用 CHANGE
。
有一个 column_definition
,你可以在其中放置此列的更新数据类型。
现在我们已经详细了解了这个 MySQL
扩展,让我们看看我们如何在 PostgreSQL 中做同样的事情。
在 PostgreSQL 中更改数据类型和列名的简单 ALTER
表查询
PostgreSQL 中没有一个单一的 ALTER
语句会执行这样的操作。
ALTER TABLE cat
ALTER COLUMN id TYPE varchar(50)
RENAME id TO identity;
以上是错误的,会返回错误。最好的方法是使用多个 ALTER
语句。
ALTER TABLE cat
ALTER COLUMN id TYPE varchar(50);
ALTER TABLE cat
RENAME id TO identity;
为什么?因为 PostgreSQL 没有在单个 ALTER
语句中指定多个操作的符号。
你可以看到每个 ALTER
语句一次只支持一个操作。因此,如果你在 ALTER
语句之后为列调用 ACTION
,你只能使用 ADD
、ALTER
或 DROP
列。
你必须再次调用 ALTER
语句来 RENAME
列。
在 PostgreSQL 中创建一个用户特定的函数来同时执行两个查询
但是,如果你想同时编译这两个操作,你可以创建一个倾向于执行此操作的函数。
create or replace function alter_change_extension(new_type varchar(50), new_name varchar(50))
returns void
language plpgsql
as
$$
begin
if new_type = 'varchar(50)' then
ALTER TABLE cat ALTER COLUMN id TYPE varchar(50);
end if;
if new_name = 'identity' then
ALTER TABLE cat RENAME id TO identity;
end if;
end;
$$;
在这里,你为要更改列的 TYPE
和 NEW NAME
声明两个变量。你制作 IF
语句来检查值是否存在,然后如果它们为真,你继续并正确 ALTER
列。
你可以针对特定案例场景使用类似的 IF
语句并使你的函数动态化。
这种方法效率不高,因为每次都可能传递唯一的字符串,并且添加大量 IF
语句会使事情变得更糟。但是,你只需要一个查询即可执行此操作。
select alter_change_extension('varchar(50)', 'identity');
相关文章
在一个 PostgreSQL 查询中使用多个 WITH 语句
发布时间:2023/03/20 浏览次数:127 分类:PostgreSQL
-
在本教程中,我们将学习如何使用多个 WITH 语句在 PostgreSQL 中使用两个临时表执行查询。
在 Ubuntu 上的 PostgreSQL 中找到配置文件
发布时间:2023/03/20 浏览次数:130 分类:PostgreSQL
-
本文介绍如何在 Ubuntu 上找到 PostgreSQL 数据库的配置文件。
在 PSQL 中运行 SQL 文件
发布时间:2023/03/20 浏览次数:178 分类:数据库
-
本文解释了如何直接从终端/命令行或 psql shell 运行 SQL 文件。为此,你需要指定主机名、端口、用户名和数据库名称。
在 PostgreSQL 中使用循环
发布时间:2023/03/20 浏览次数:124 分类:PostgreSQL
-
在 PL/SQL 中,你可能需要在 Postgres 中使用循环。我们可以使用 FOR 和 WHILE 语句来创建循环。
在 PostgreSQL 中使用 Select 连接列
发布时间:2023/03/20 浏览次数:202 分类:PostgreSQL
-
本文介绍如何在 PostgreSQL 中使用 Select 方法连接列。
在 PostgreSQL 中将平均值舍入到小数点后 2 位
发布时间:2023/03/20 浏览次数:186 分类:PostgreSQL
-
本文介绍如何将 PostgreSQL 中的平均值四舍五入到小数点后 2 位。