MySQL에서 테이블에 설정된 캐스케이드(CASCADE) 옵션을 비롯해 외래 키, 인덱스, 기본 키 등 테이블의 전체 구조를 확인하려면 SHOW CREATE TABLE 명령어를 사용하면 됩니다. 이 명령은 해당 테이블을 생성할 때 실제로 적용된 CREATE TABLE 문을 그대로 출력해 주기 때문에, ON DELETE CASCADE, ON UPDATE CASCADE 같은 제약 조건도 한눈에 파악할 수 있습니다.
1. 예제 테이블 생성하기
먼저 실습에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable1378
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> EmployeeId varchar(20),
-> EmployeeFirstName varchar(20),
-> EmployeeLastName varchar(20),
-> EmployeeCountryName varchar(40),
-> EmployeeAge int,
-> EmployeeSalary int,
-> UNIQUE(EmployeeFirstName,EmployeeSalary),
-> INDEX First_Last_NameIndex(EmployeeFirstName,EmployeeLastName)
-> );
Query OK, 0 rows affected (0.93 sec)2. SHOW CREATE TABLE로 테이블 구조 확인하기
테이블 생성이 완료되었다면, 아래 명령어로 캐스케이드 및 각종 제약 조건을 확인할 수 있습니다.
mysql> show create table DemoTable1378;
실행하면 다음과 같은 결과가 출력됩니다.
+---------------+--------------------------------------------------------------+ | Table | Create Table | +---------------+--------------------------------------------------------------+ | DemoTable1378 | CREATE TABLE `demotable1378` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `EmployeeId` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, `EmployeeFirstName` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, `EmployeeLastName` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, `EmployeeCountryName` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL, `EmployeeAge` int(11) DEFAULT NULL, `EmployeeSalary` int(11) DEFAULT NULL, PRIMARY KEY (`Id`), UNIQUE KEY `EmployeeFirstName` (`EmployeeFirstName`,`EmployeeSalary`), KEY `First_Last_NameIndex` (`EmployeeFirstName`,`EmployeeLastName`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci | +---------------+--------------------------------------------------------------+ 1 row in set (0.02 sec)
3. 결과 해석하기
출력된 CREATE TABLE 문에는 다음과 같은 핵심 정보가 포함되어 있습니다.
- PRIMARY KEY: 테이블의 기본 키 설정 (
Id컬럼, AUTO_INCREMENT 적용) - UNIQUE KEY: 중복을 허용하지 않는 복합 유니크 인덱스 (
EmployeeFirstName,EmployeeSalary) - KEY(INDEX): 일반 인덱스 (
First_Last_NameIndex) - ENGINE / CHARSET / COLLATE: 스토리지 엔진과 문자셋 정보
만약 테이블에 외래 키 캐스케이드가 설정되어 있다면, 출력 결과에 CONSTRAINT ... FOREIGN KEY (...) REFERENCES ... ON DELETE CASCADE ON UPDATE CASCADE 형태로 함께 표시됩니다.
4. 더 읽기 쉽게 보는 팁
출력 결과가 너무 길어 표 형태로 보기 불편하다면, 명령어 뒤에 \G를 붙여 세로(수직) 형식으로 출력할 수 있습니다.
mysql> show create table DemoTable1378\G
또한 외래 키 관계만 집중적으로 확인하고 싶다면 information_schema.KEY_COLUMN_USAGE 또는 information_schema.REFERENTIAL_CONSTRAINTS 뷰를 조회하는 방법도 유용합니다.