问题:
在 PostgreSQL(使用 SQL,而不是控制台)中,我如何列出所有可用的数据类型?
它还应该列出用户定义的类型(如果有的话)。
就像 pgAdmin3 中的列表一样,您可以在其中为表中的新列定义数据类型。
问题:
在 PostgreSQL(使用 SQL,而不是控制台)中,我如何列出所有可用的数据类型?
它还应该列出用户定义的类型(如果有的话)。
就像 pgAdmin3 中的列表一样,您可以在其中为表中的新列定义数据类型。
PostgreSQL 中的“数据类型”实际上包括原始(内置)类型、扩展添加的类型、用户定义的复合类型、域和表行类型。目前尚不清楚您对其中哪些感兴趣。给定数据库中可用的所有类型都列在该数据库中,pg_catalog.pg_type
因此您可能需要过滤结果。请参阅系统目录表的文档pg_type
。
未列出可用但未安装的扩展的类型。无法列出当前数据库中未安装的扩展提供的类型。
要获得更漂亮的类型列表,请使用psql
'\dT *
命令。psql
您可以通过使用-E
标志运行来查看其执行的底层 SQL :
$ psql -E regress
regress=> \dT *
********* QUERY **********
SELECT n.nspname as "Schema",
pg_catalog.format_type(t.oid, NULL) AS "Name",
pg_catalog.obj_description(t.oid, 'pg_type') as "Description"
FROM pg_catalog.pg_type t
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace
WHERE (t.typrelid = 0 OR (SELECT c.relkind = 'c' FROM pg_catalog.pg_class c WHERE c.oid = t.typrelid))
AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type el WHERE el.oid = t.typelem AND el.typarray = t.oid)
AND pg_catalog.pg_type_is_visible(t.oid)
ORDER BY 1, 2;
**************************
select * from pg_type;