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

MySQL에서 테이블의 모든 제약 조건을 확인하는 방법

MySQL에서 특정 테이블에 설정된 모든 제약 조건(Constraint)을 확인해야 하는 경우가 종종 있습니다. 기본 키(PRIMARY KEY), 고유 키(UNIQUE KEY), 외래 키(FOREIGN KEY) 등이 어떻게 정의되어 있는지 파악하고 싶다면 아래의 두 가지 방법 중 하나를 활용하면 됩니다.

방법 1 – SHOW 명령어 사용

가장 간단한 방법은 SHOW CREATE TABLE 명령어를 사용하는 것입니다. 이 명령어는 해당 테이블을 생성할 때 사용된 전체 DDL 문을 그대로 출력해 주기 때문에, 테이블에 설정된 모든 제약 조건을 한눈에 확인할 수 있습니다.

SHOW CREATE TABLE yourTableName;

방법 2 – information_schema 활용

두 번째 방법은 MySQL의 메타데이터 데이터베이스인 information_schema를 조회하는 것입니다. KEY_COLUMN_USAGE 테이블을 쿼리하면 컬럼 이름, 제약 조건 이름, 참조되는 컬럼 및 테이블 정보를 구조화된 형태로 얻을 수 있습니다.

select COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_COLUMN_NAME, REFERENCED_TABLE_NAME
from information_schema.KEY_COLUMN_USAGE
where TABLE_NAME = 'yourTableName';

실제 예제

이미 'ConstraintDemo'라는 테이블이 있다고 가정하고 위 구문을 실행해 보겠습니다.

mysql> select COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_COLUMN_NAME, REFERENCED_TABLE_NAME
    -> from information_schema.KEY_COLUMN_USAGE
    -> where TABLE_NAME = 'ConstraintDemo';

실행 결과는 다음과 같습니다.

+-------------+-----------------+------------------------+-----------------------+
| COLUMN_NAME | CONSTRAINT_NAME | REFERENCED_COLUMN_NAME | REFERENCED_TABLE_NAME |
+-------------+-----------------+------------------------+-----------------------+
| Id          | PRIMARY         | NULL                   |                  NULL |
| Id          | Id              | NULL                   |                  NULL |
+-------------+-----------------+------------------------+-----------------------+
2 rows in set, 2 warnings (0.04 sec)

결과를 보면 Id 컬럼에 PRIMARY 제약 조건과 UNIQUE 제약 조건(Id)이 각각 설정되어 있는 것을 확인할 수 있습니다.

SHOW 명령어로 결과 비교하기

이번에는 SHOW 명령어로 동일한 테이블을 확인해 보겠습니다.

mysql> show create table ConstraintDemo;

출력 결과는 다음과 같습니다.

+----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table          | Create Table          |
+----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ConstraintDemo | CREATE TABLE `constraintdemo` (`Id` int(11) NOT NULL,`Name` varchar(100) NOT NULL, PRIMARY KEY (`Id`), UNIQUE KEY `Id` (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

이처럼 SHOW CREATE TABLE 결과에서도 PRIMARY KEY와 UNIQUE KEY가 함께 정의되어 있음을 알 수 있습니다. 두 방법 모두 유용하지만, 애플리케이션 코드에서 제약 조건 정보를 프로그래밍 방식으로 처리해야 한다면 information_schema를 조회하는 방식이 더 적합합니다.