在 PostgreSQL 中,可以使用系统目录表和信息模式(information schema)来查询数据库的元数据。这里是一些常用的查询语句,用于获取模式、表及其结构等信息:
- 列出所有模式:
SELECT schema_name
FROM information_schema.schemata
-- 指定当前用户拥有的模式
WHERE schema_owner IN (SELECT current_user)
ORDER BY schema_name ASC;
- 查询特定模式中的所有表:
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'YOUR_SCHEMA_NAME' AND table_type = 'BASE TABLE'
ORDER BY table_name ASC;
这里的 YOUR_SCHEMA_NAME 需要替换为你想要查询的具体模式名。
- 查询表的结构(列信息):
SELECT column_name, data_type, character_maximum_length, is_nullable, column_default
FROM information_schema.columns
WHERE table_schema = 'YOUR_SCHEMA_NAME' AND table_name = 'YOUR_TABLE_NAME'
ORDER BY ordinal_position ASC;
这里的 YOUR_SCHEMA_NAME 和 YOUR_TABLE_NAME 分别替换成你的模式名和表名。
- 查看表索引信息:
SELECT indexname, tablename, indexdef
FROM pg_indexes
WHERE schemaname = 'YOUR_SCHEMA_NAME' AND tablename = 'YOUR_TABLE_NAME';
- 获取外键约束信息:
SELECT conname AS constraint_name,
conrelid::regclass AS table_name,
a.attname AS column_name,
confrelid::regclass AS referenced_table,
af.attname AS referenced_column
FROM pg_constraint c
JOIN pg_attribute a ON a.attnum = ANY(c.conkey) AND a.attrelid = c.conrelid
JOIN pg_attribute af ON af.attnum = ANY(c.confkey) AND af.attrelid = c.confrelid
WHERE c.confrelid > 0 AND c.connamespace = 'YOUR_SCHEMA_NAME'::regnamespace;
这里的 YOUR_SCHEMA_NAME 是你的模式名。
- 查看触发器信息:
SELECT tgname AS trigger_name,
tgfoid::regproc AS function_name,
tgenabled AS enabled,
tgrelid::regclass AS table_name,
tgtype AS type,
tgnargs AS number_of_arguments,
tgattr AS columns
FROM pg_trigger
JOIN pg_class ON pg_class.oid = tgrelid
JOIN pg_namespace ON pg_namespace.oid = relnamespace
WHERE nspname = 'YOUR_SCHEMA_NAME';
这里的 YOUR_SCHEMA_NAME 是你的模式名。
- 查看视图定义:
SELECT viewname, definition
FROM pg_views
WHERE schemaname = 'YOUR_SCHEMA_NAME';
这里的 YOUR_SCHEMA_NAME 是你的模式名。
请注意,在执行这些查询时,你需要有适当的权限访问相关的信息,并且要将示例中的占位符如 YOUR_SCHEMA_NAME 和 YOUR_TABLE_NAME 替换为实际值。如果你对PostgreSQL的系统表和视图不熟悉,建议查阅官方文档以获得更详细的信息。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




