-- should not able to create pg_catalog create database pg_catalog; select * from pg_catalog.pg_type order by oid; -- \d SELECT n.nspname as "Schema", c.relname as "Name", CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 't' THEN 'TOAST table' WHEN 'f' THEN 'foreign table' WHEN 'p' THEN 'partitioned table' WHEN 'I' THEN 'partitioned index' END as "Type", pg_catalog.pg_get_userbyid(c.relowner) as "Owner" FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind IN ('r','p','v','m','S','f','') AND n.nspname <> 'pg_catalog' AND n.nspname !~ '^pg_toast' AND n.nspname <> 'information_schema' AND pg_catalog.pg_table_is_visible(c.oid) ORDER BY 1,2; -- \dt SELECT n.nspname as "Schema", c.relname as "Name", CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 't' THEN 'TOAST table' WHEN 'f' THEN 'foreign table' WHEN 'p' THEN 'partitioned table' WHEN 'I' THEN 'partitioned index' END as "Type", pg_catalog.pg_get_userbyid(c.relowner) as "Owner" FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind IN ('r','p','') AND n.nspname <> 'pg_catalog' AND n.nspname !~ '^pg_toast' AND n.nspname <> 'information_schema' AND pg_catalog.pg_table_is_visible(c.oid) ORDER BY 1,2; -- make sure oid of namespace keep stable SELECT * FROM pg_namespace ORDER BY oid; create database my_db; use my_db; create table foo ( ts TIMESTAMP TIME INDEX ); -- show tables in `my_db` select relname from pg_catalog.pg_class where relnamespace = ( select oid from pg_catalog.pg_namespace where nspname = 'my_db' ); -- \dt SELECT n.nspname as "Schema", c.relname as "Name", CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 't' THEN 'TOAST table' WHEN 'f' THEN 'foreign table' WHEN 'p' THEN 'partitioned table' WHEN 'I' THEN 'partitioned index' END as "Type", pg_catalog.pg_get_userbyid(c.relowner) as "Owner" FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind IN ('r','p','') AND n.nspname <> 'pg_catalog' AND n.nspname !~ '^pg_toast' AND n.nspname <> 'information_schema' AND pg_catalog.pg_table_is_visible(c.oid) ORDER BY 1,2; -- show tables in `my_db`, `public` select relname from pg_catalog.pg_class where relnamespace in ( select oid from pg_catalog.pg_namespace where nspname = 'my_db' or nspname = 'public' ) order by relname; select relname from pg_catalog.pg_class where relnamespace in ( select oid from pg_catalog.pg_namespace where nspname like 'my%' ); select relnamespace, relname, relkind from pg_catalog.pg_class where relnamespace in ( select oid from pg_catalog.pg_namespace where nspname <> 'public' and nspname <> 'information_schema' and nspname <> 'pg_catalog' ) order by relnamespace, relname; use public; drop schema my_db; use pg_catalog; -- pg_class desc table pg_class; desc table pg_namespace; drop table my_db.foo; use public;