暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL 元数据查询语句, 包括模式、表、表结构等

原创 王皓 2024-10-10
528

在 PostgreSQL 中,可以使用系统目录表和信息模式(information schema)来查询数据库的元数据。这里是一些常用的查询语句,用于获取模式、表及其结构等信息:

  1. 列出所有模式:
SELECT schema_name FROM information_schema.schemata -- 指定当前用户拥有的模式 WHERE schema_owner IN (SELECT current_user) ORDER BY schema_name ASC;
  1. 查询特定模式中的所有表:
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 需要替换为你想要查询的具体模式名。

  1. 查询表的结构(列信息):
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_NAMEYOUR_TABLE_NAME 分别替换成你的模式名和表名。

  1. 查看表索引信息:
SELECT indexname, tablename, indexdef FROM pg_indexes WHERE schemaname = 'YOUR_SCHEMA_NAME' AND tablename = 'YOUR_TABLE_NAME';
  1. 获取外键约束信息:
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 是你的模式名。

  1. 查看触发器信息:
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 是你的模式名。

  1. 查看视图定义:
SELECT viewname, definition FROM pg_views WHERE schemaname = 'YOUR_SCHEMA_NAME';

这里的 YOUR_SCHEMA_NAME 是你的模式名。

请注意,在执行这些查询时,你需要有适当的权限访问相关的信息,并且要将示例中的占位符如 YOUR_SCHEMA_NAMEYOUR_TABLE_NAME 替换为实际值。如果你对PostgreSQL的系统表和视图不熟悉,建议查阅官方文档以获得更详细的信息。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论