sql - PostgreSQL:如何列出所有可用的数据类型?

标签 sql postgresql postgresql-9.1 postgresql-9.2

问题:

在 PostgreSQL 中(使用 SQL,而不是控制台),如何列出所有可用的数据类型?

理想情况下是这样的: http://www.java2s.com/Code/PostgreSQL/Postgre-SQL/Displaysalldatatypesintheconnecteddatabasewithcomments.htm

它还应该列出用户定义的类型,如果有的话。
就像 pgAdmin3 中的列表一样,您可以在其中为表中的新列定义数据类型。

最佳答案

PostgreSQL中的“数据类型”实际上包括原始(内置)类型、扩展添加的类型、用户定义的复合类型、域和表行类型。目前尚不清楚您对其中哪些感兴趣。给定数据库中可用的所有类型都列在该数据库的 pg_catalog.pg_type 中,因此您可能需要过滤结果。参见 the documentation for the pg_type system catalog table .

可用但未安装的扩展的类型列出。无法列出当前数据库中未安装的扩展提供的类型。

要获得更漂亮的类型列表,请使用 psql\dT * 命令。您可以通过使用 -E 标志运行 psql 来查看执行的底层 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;
**************************

关于sql - PostgreSQL:如何列出所有可用的数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16343285/

相关文章:

postgresql - 查询创建的 View

sql - Postgresql 不使用内存进行缓存

sql - 每小时汇总一段时间内的值

sql - 如何比较 Oracle 中的复杂集合?

mysql - 每天在 Select COUNT(*) 中合并 2 个查询

mysql - 如何按间隔对 sql 查询中的结果进行分组?

ruby-on-rails - rails console 说 "Table doesn' t 存在”但它出现在我的模式中

postgresql - 在 Golang 中使用 postgres 获取事务提交前的最后一个 ID

mysql - 输出每个赛道的最佳时间,需要一些指导

sql - Postgres 忽略时间戳索引,为什么?