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