You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PostgreSQL中查询所有数据表的全部约束

全库约束查询SQL汇总

以下是不同主流数据库查询全库所有约束(含UNIQUE约束)的可用SQL,无需逐表手动检索:

MySQL

查询指定库所有约束的语句:

SELECT 
    TABLE_SCHEMA 数据库名,
    TABLE_NAME 表名,
    CONSTRAINT_NAME 约束名,
    CONSTRAINT_TYPE 约束类型
FROM 
    INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE 
    TABLE_SCHEMA = '替换为你的实际数据库名';

仅筛选UNIQUE约束时,在WHERE条件后追加AND CONSTRAINT_TYPE = 'UNIQUE'即可。

PostgreSQL

排除系统表查询所有业务表约束:

SELECT 
    table_catalog 数据库名,
    table_schema 模式名,
    table_name 表名,
    constraint_name 约束名,
    constraint_type 约束类型
FROM 
    information_schema.table_constraints
WHERE 
    table_schema NOT IN ('pg_catalog', 'information_schema');

仅筛选UNIQUE约束时,在WHERE条件后追加AND constraint_type = 'UNIQUE'即可。

Oracle

查询指定用户下的所有UNIQUE约束(Oracle中UNIQUE约束类型标记为U):

SELECT 
    OWNER 所属用户,
    TABLE_NAME 表名,
    CONSTRAINT_NAME 约束名,
    CONSTRAINT_TYPE 约束类型
FROM 
    ALL_CONSTRAINTS
WHERE 
    OWNER = '替换为你的Oracle用户名' -- Oracle用户名默认大写
    AND CONSTRAINT_TYPE = 'U';

SQL Server

查询全库所有约束:

SELECT 
    SCHEMA_NAME(schema_id) 模式名,
    OBJECT_NAME(parent_object_id) 表名,
    name 约束名,
    type_desc 约束类型
FROM 
    sys.objects
WHERE 
    type_desc LIKE '%CONSTRAINT'
    AND SCHEMA_NAME(schema_id) NOT IN ('sys', 'INFORMATION_SCHEMA');

仅筛选UNIQUE约束时,在WHERE条件后追加AND type_desc = 'UNIQUE_CONSTRAINT'即可。

内容的提问来源于stack exchange,提问作者Thirumal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 06:36:01