postgresql 所有库表
时间: 2024-01-16 10:05:00 浏览: 23
以下是查询PostgreSQL所有库表的方法:
1. 查询当前库下面所有表英文名称、注释信息:
```sql
SELECT relname AS table_name, obj_description(relfilenode, 'pg_class') AS table_comment
FROM pg_class C LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
WHERE nspname NOT IN ('pg_catalog', 'information_schema') AND relkind='r'
ORDER BY relname;
```
2. 查询当前库下面所有表字段信息,包括名称、所属对应表、数据类型、长度、是否自增、是否主键、是否为空、注释信息:
```sql
SELECT a.attname AS column_name, c.relname AS table_name, format_type(a.atttypid, a.atttypmod) AS data_type,
a.attlen AS character_maximum_length, a.atttypmod AS modifier, a.attnotnull AS is_nullable,
(SELECT 't' FROM pg_index WHERE c.oid = pg_index.indrelid AND a.attnum = ANY (pg_index.indkey) AND indisprimary = 't') AS is_primary_key,
(SELECT 't' FROM pg_attrdef WHERE adrelid = c.oid AND adnum = a.attnum AND a.atthasdef) AS column_default,
col_description(a.attrelid, a.attnum) AS column_comment
FROM pg_attribute a
JOIN pg_class c ON a.attrelid = c.oid
JOIN pg_namespace n ON c.relnamespace = n.oid
WHERE a.attnum > 0 AND NOT a.attisdropped AND n.nspname NOT IN ('pg_catalog', 'information_schema')
ORDER BY c.relname, a.attnum;
```
3. 获取数据库所有表:
```sql
SELECT tablename FROM pg_tables WHERE schemaname='public';
```
4. 获取数据库所有视图:
```sql
SELECT viewname FROM pg_views WHERE schemaname='public';
```
5. 获取数据库所有序列:
```sql
SELECT relname FROM pg_class WHERE relkind='S';
```
6. 获取数据库所有函数:
```sql
SELECT proname FROM pg_proc WHERE pronamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'public');
```