我可以像这样在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
答案 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)