Postgres table psql 会话的别名

Postgres table alias for psql session

我可以像这样在 Postgres 语句中为 table 名称添加别名:

SELECT a.id FROM very_long_table_name AS a;

是否有一种机制可以设置在 psql 会话中持续存在的类似别名?

例如:

$: psql -d sample
sample=# CREATE ALIAS a for very_long_table_name;
sample=# select id from a limit 1;
 id 
____
  1

我不知道有什么方法可以创建这样的别名,但您可以在 table 之上创建一个视图,并给它一个简短的名称,例如

CREATE VIEW short_name AS
SELECT *
FROM very_long_table_name;

然后,像使用别名一样使用视图名称。由于视图的性能通常与底层 tables 一样好,因此关于索引,您不应在性能方面损失太多。

如图所示 in the manual 这可以使用 psql 变量来完成:

sample=# \set a 'very_long_table_name'
sample=# select id from :a limit 1;
 id 
----
   1
(1 row)

如果你不想每次都手动 运行 \set,你可以在 ~/.psqlrc 中包含你常用的短名称,当你开始 psql

我认为最好的选择是创建一个临时视图。

此解决方案不限于 psql

CREATE TABLE averylongname (id integer PRIMARY KEY);
INSERT INTO averylongname VALUES (1);

CREATE TEMPORARY VIEW x AS SELECT * FROM averylongname;

当您的数据库会话结束时,该视图将自动消失,它也可以与 DML 语句一起使用:

INSERT INTO x VALUES (2);
SELECT * FROM x;

 id 
----
  1
  2
(2 rows)