Postgresql “select”和“from”是什么意思?

Postgresql “select”和“from”是什么意思?,postgresql,Postgresql,给一张桌子 mytestdb=# select * from foo; id | name ----+------ 4 | Tim (1 row) select foo from foooutput是什么意思,即select与from相同的表是什么意思?谢谢 mytestdb=# select foo from foo; foo --------- (4,Tim) (1 row) 谢谢 我的问题来自于理解中json\u agg()的输入是什么 mytestdb=# se

给一张桌子

mytestdb=# select * from foo;
 id | name 
----+------
  4 | Tim
(1 row)
select foo from foo
output是什么意思,即
select
from
相同的表是什么意思?谢谢

mytestdb=# select foo from foo;
   foo   
---------
 (4,Tim)
(1 row)
谢谢

我的问题来自于理解中
json\u agg()
的输入是什么

mytestdb=# select json_agg(foo) from foo;
        json_agg         
-------------------------
 [{"id":4,"name":"Tim"}]
(1 row)

请参见在表格当前行的选择列表中使用表格名称或别名。将表名或别名传递给可以接受复合值的函数将为每一行调用该函数。

构造

SELECT foo FROM foo;
在PostgreSQL中称为整行引用,因为它将整行作为一行检索

如果您知道每个
CREATE TABLE
都有一个隐式
CREATE TYPE
,它定义了一个与表同名的复合类型,那么事情就会变得更清楚

通过查询目录,您可以很容易地看到:

SELECT typname, typtype, typinput, typoutput
FROM pg_type
WHERE typname = 'text';

因此,上面查询的结果是类型为
foo
的单个项。因为它是一个复合类型,所以它用行表示法表示:用括号括起来,属性值用逗号分隔。

看起来不太可能,但您偶然发现的代码必须使用一个与表同名的列。@RobertHarvey:它在文档中隐藏得很好。这很有趣。