MySQL에서 특정 테이블에 설정된 외래 키(Foreign Key) 제약 조건을 확인하려면 SHOW CREATE TABLE 문을 사용하면 됩니다. 이 명령어는 해당 테이블을 생성할 때 사용된 전체 DDL 구문을 그대로 보여주기 때문에, 기본 키와 외래 키 등 모든 제약 조건 정보를 한눈에 파악할 수 있습니다.
1. 예제용 첫 번째 테이블 생성
먼저 부모 역할을 할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable1 (Id int NOT NULL PRIMARY KEY, EmployeeName varchar(100)); Query OK, 0 rows affected (0.50 sec)
2. 외래 키 제약 조건이 있는 두 번째 테이블 생성
다음은 외래 키 제약 조건을 포함하여 두 번째 테이블을 생성하는 쿼리입니다.
mysql> create table DemoTable2
(
Id int NOT NULL,
StreetName varchar(100),
CityName varchar(100),
CountryName varchar(100),
PinCode int,
EmployeeId int,
PRIMARY KEY(Id),
FOREIGN KEY (Id) REFERENCES DemoTable1(Id)
);
Query OK, 0 rows affected (0.46 sec)여기서 DemoTable2의 Id 컬럼은 DemoTable1의 Id 컬럼을 참조하는 외래 키로 설정되었습니다.
3. SHOW CREATE TABLE로 외래 키 확인하기
MySQL 데이터베이스에서 외래 키를 식별하는 가장 간단한 방법은 아래 쿼리를 실행하는 것입니다.
mysql> show create table DemoTable2\G
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
*************************** 1. row ***************************
Table: DemoTable2
Create Table: CREATE TABLE `demotable2` (
`Id` int(11) NOT NULL,
`StreetName` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
`CityName` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
`CountryName` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
`PinCode` int(11) DEFAULT NULL,
`EmployeeId` int(11) DEFAULT NULL,
PRIMARY KEY (`Id`),
CONSTRAINT `demotable2_ibfk_1` FOREIGN KEY (`Id`) REFERENCES `demotable1`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
1 row in set (0.00 sec)출력 결과의 CONSTRAINT 항목을 보면, 외래 키 이름(demotable2_ibfk_1)과 함께 어떤 컬럼이 어느 테이블의 어떤 컬럼을 참조하는지 명확하게 확인할 수 있습니다.
4. 참고: information_schema로 조회하는 방법
SHOW CREATE TABLE 외에도 시스템 뷰인 information_schema.KEY_COLUMN_USAGE를 조회하면 데이터베이스 전체의 외래 키 관계를 목록 형태로 확인할 수 있습니다.
SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA = 'your_database_name' AND REFERENCED_TABLE_NAME IS NOT NULL;
이 방법은 여러 테이블에 걸친 외래 키 관계를 한 번에 분석할 때 특히 유용합니다.