Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 데이터베이스의 제약 조건 목록 한 번에 조회하는 방법

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';

이 방법을 활용하면 대규모 데이터베이스에서도 키 구조와 무결성 규칙을 손쉽게 파악할 수 있어, 스키마 분석이나 마이그레이션 작업 시 매우 유용합니다.