psql会话的Postgres表别名

时间:2018-10-11 15:33:33

标签: postgresql psql

我可以像这样在Postgres语句中为表名加上别名:

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

3 个答案:

答案 0 :(得分:2)

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时会读取

答案 1 :(得分:1)

我不知道创建这种别名的方法,但是您可以在表顶部创建一个视图,并为其命名,例如

CREATE VIEW short_name AS
SELECT *
FROM very_long_table_name;

然后,使用视图名称,就像使用别名一样。由于就索引而言,视图的性能通常与基础表一样好,因此就性能而言,您应该不会损失太多。

答案 2 :(得分:1)

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

此解决方案不限于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)