MySQL에서 특정 테이블에 설정된 고유(UNIQUE) 제약 조건을 확인하려면 information_schema.TABLE_CONSTRAINTS 뷰를 활용하면 됩니다. 이 뷰는 데이터베이스 내 모든 테이블의 제약 조건 정보를 담고 있어, 별도의 도구 없이 SQL 쿼리만으로 손쉽게 조회할 수 있습니다.
UNIQUE 제약 조건 조회 기본 문법
기본적인 조회 문법은 다음과 같습니다.
SELECT DISTINCT CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME = 'yourTableName'
AND CONSTRAINT_TYPE = 'UNIQUE';
TABLE_NAME에는 대상 테이블 이름을 지정하고, CONSTRAINT_TYPE 조건을 'UNIQUE'로 설정하면 해당 테이블의 고유 제약 조건만 필터링됩니다.
예제 테이블 생성
문법을 실제로 이해하기 위해 UNIQUE 제약 조건이 포함된 테이블을 먼저 생성해 보겠습니다.
mysql> create table UniqueConstraint
-> (
-> Id int,
-> FirstName varchar(30),
-> LastName varchar(30),
-> constraint uniqueFirstNameAndLastName UNIQUE(FirstName,LastName)
-> );
Query OK, 0 rows affected (0.74 sec)
위 테이블은 FirstName과 LastName 두 컬럼의 조합이 중복되지 않도록 복합 UNIQUE 제약 조건(uniqueFirstNameAndLastName)이 적용되어 있습니다.
UNIQUE 제약 조건 이름 확인하기
앞서 소개한 쿼리를 실행하면 해당 테이블의 UNIQUE 제약 조건 이름을 확인할 수 있습니다.
mysql> select distinct CONSTRAINT_NAME
-> from information_schema.TABLE_CONSTRAINTS
-> where table_name = 'UniqueConstraint' and constraint_type = 'UNIQUE';
실행 결과는 다음과 같습니다.
| CONSTRAINT_NAME |
+----------------------------+
| uniqueFirstNameAndLastName |
+----------------------------+
1 row in set, 2 warnings (0.01 sec)
결과에서 알 수 있듯이, 생성 시 지정한 제약 조건 이름이 그대로 출력됩니다. 만약 제약 조건에 이름을 명시하지 않았다면 MySQL이 자동으로 생성한 이름이 표시됩니다.
테이블의 전체 제약 조건 확인하기
UNIQUE뿐 아니라 PRIMARY KEY 등 해당 테이블의 모든 제약 조건을 한 번에 확인하고 싶다면 CONSTRAINT_TYPE 조건을 제거하고 조회하면 됩니다.
mysql> SELECT DISTINCT CONSTRAINT_NAME
-> FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
-> WHERE CONSTRAINT_SCHEMA = 'MySQL'\G
실행 결과는 다음과 같습니다.
*************************** 1. row ***************************
CONSTRAINT_NAME − PRIMARY
*************************** 2. row ***************************
CONSTRAINT_NAME − name
2 rows in set, 2 warnings (0.01 sec)
참고: 제약 조건이 적용된 컬럼까지 확인하는 방법
제약 조건의 이름뿐 아니라 어떤 컬럼에 적용되었는지까지 알고 싶다면 INFORMATION_SCHEMA.KEY_COLUMN_USAGE 뷰를 함께 사용하면 유용합니다.
SELECT CONSTRAINT_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME = 'UniqueConstraint';
이처럼 information_schema의 다양한 메타데이터 뷰를 활용하면 테이블 구조와 제약 조건을 코드 수준에서 정확하게 파악할 수 있어, 데이터베이스 관리 및 디버깅 작업에 큰 도움이 됩니다.