MySQL 데이터베이스의 제약 조건 목록 한 번에 조회하는 방법
MySQL에서 특정 데이터베이스에 정의된 모든 제약 조건(Constraint)을 확인하고 싶다면 information_schema.table_constraints 테이블을 조회하면 됩니다. 이 테이블에는 PRIMARY KEY, UNIQUE, FOREIGN KEY 등 각 테이블에 설정된 제약 조건 정보가 메타데이터 형태로 저장되어 있습니다.
기본 문법
제약 조건 목록을 가져오는 기본 쿼리 문법은 다음과 같습니다.
SELECT *
FROM information_schema.table_constraints
WHERE constraint_schema = '데이터베이스명';
constraint_schema 조건에 원하는 데이터베이스 이름을 지정하면, 해당 데이터베이스의 모든 테이블에 걸린 제약 조건을 한 번에 확인할 수 있습니다.
예제: 'business' 데이터베이스의 제약 조건 조회
여기서는 예시로 'business' 데이터베이스에 정의된 전체 제약 조건을 조회해 보겠습니다.
mysql> SELECT *
-> FROM information_schema.table_constraints
-> WHERE constraint_schema = 'business';
실행 결과
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다. 아래는 실제 출력 결과 중 일부입니다.
+--------------------+-------------------+--------------------------+--------------+------------------------------+-----------------+
| CONSTRAINT_CATALOG | CONSTRAINT_SCHEMA | CONSTRAINT_NAME | TABLE_SCHEMA | TABLE_NAME | CONSTRAINT_TYPE |
+--------------------+-------------------+--------------------------+--------------+------------------------------+-----------------+
| def | business | PRIMARY | business | primarytable | PRIMARY KEY |
| def | business | PRIMARY | business | primarytable1 | PRIMARY KEY |
| def | business | PRIMARY | business | autoincrementtable | PRIMARY KEY |
| def | business | UserId | business | usernameandpassworddemo | UNIQUE |
| def | business | name | business | uniquedemo | UNIQUE |
| def | business | ConstFK | business | tabledemo2 | UNIQUE |
| def | business | constFKPK | business | foreigntable | FOREIGN KEY |
| def | business | FKConst | business | foreigntabledemo | FOREIGN KEY |
| def | business | StudCollegeConst | business | studentenrollment | FOREIGN KEY |
| def | business | ConstChild | business | childdemo | FOREIGN KEY |
+--------------------+-------------------+--------------------------+--------------+------------------------------+-----------------+
실제 실행 시 총 48개 행이 반환되었으며, 약 0.24초 만에 조회가 완료되었습니다.
결과 컬럼 의미 살펴보기
- CONSTRAINT_CATALOG: 제약 조건이 속한 카탈로그 이름으로, MySQL에서는 항상 'def'입니다.
- CONSTRAINT_SCHEMA: 제약 조건이 정의된 데이터베이스(스키마) 이름입니다.
- CONSTRAINT_NAME: 제약 조건의 이름입니다. 이름을 직접 지정하지 않은 PRIMARY KEY는 'PRIMARY'로 표시됩니다.
- TABLE_NAME: 해당 제약 조건이 적용된 테이블 이름입니다.
- CONSTRAINT_TYPE: 제약 조건 유형으로, PRIMARY KEY, UNIQUE, FOREIGN KEY 등이 있습니다.
특정 유형의 제약 조건만 조회하기
FOREIGN KEY처럼 특정 유형의 제약 조건만 보고 싶다면 constraint_type 조건을 추가하면 됩니다.
SELECT *
FROM information_schema.table_constraints
WHERE constraint_schema = 'business'
AND constraint_type = 'FOREIGN KEY';
이 방법을 활용하면 대규모 데이터베이스에서도 키 구조와 무결성 규칙을 손쉽게 파악할 수 있어, 스키마 분석이나 마이그레이션 작업 시 매우 유용합니다.