MySQL에서는 SHOW CREATE TABLE 명령어 하나만으로 기존에 존재하는 테이블의 구조를 분석해, 이를 그대로 재현할 수 있는 CREATE TABLE 문(DDL)을 자동으로 생성할 수 있습니다. 테이블 구조를 백업하거나, 다른 데이터베이스 환경으로 스키마를 복제하거나, 컬럼 정의와 제약 조건을 빠르게 확인해야 할 때 매우 유용한 기능입니다.
기본 문법
사용 방법은 매우 간단합니다. 아래와 같이 조회하고자 하는 테이블 이름만 지정하면 됩니다.
SHOW CREATE TABLE yourTableName;
예제: 실습용 테이블 생성하기
먼저 학생 정보를 저장하는 테이블을 만들어 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> create table StudentInformation
-> (
-> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName varchar(20),
-> StudentAge int DEFAULT 18,
-> StudentRollNo int,
-> StudentAddress varchar(200),
-> StudentMarks int,
-> StudentDOB datetime,
-> StudentAdmissionDate datetime
-> );
Query OK, 0 rows affected (0.54 sec)
CREATE TABLE 문 조회하기
이제 앞서 소개한 문법을 적용해 해당 테이블의 생성 명령문을 확인해 보겠습니다.
mysql> SHOW CREATE TABLE StudentInformation;
실행 결과는 다음과 같습니다.
+--------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +--------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | StudentInformation | CREATE TABLE `studentinformation` ( `StudentId` int(11) NOT NULL AUTO_INCREMENT, `StudentName` varchar(20) DEFAULT NULL, `StudentAge` int(11) DEFAULT '18', `StudentRollNo` int(11) DEFAULT NULL, `StudentAddress` varchar(200) DEFAULT NULL, `StudentMarks` int(11) DEFAULT NULL, `StudentDOB` datetime DEFAULT NULL, `StudentAdmissionDate` datetime DEFAULT NULL, PRIMARY KEY (`StudentId`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci | +--------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.04 sec)
결과 해석
출력 결과는 두 개의 컬럼으로 구성됩니다. 첫 번째 'Table' 컬럼에는 테이블 이름이 표시되고, 두 번째 'Create Table' 컬럼에는 해당 테이블을 완벽하게 재현할 수 있는 전체 DDL 문이 나타납니다. 여기에는 AUTO_INCREMENT 속성, PRIMARY KEY 제약 조건, DEFAULT 값은 물론, 스토리지 엔진(InnoDB), 문자셋(utf8mb4), 콜레이션(utf8mb4_0900_ai_ci)과 같은 테이블 옵션까지 모두 포함됩니다.
알아두면 좋은 팁
- 결과가 가로로 길어 읽기 어렵다면
\G옵션을 사용해 세로 형태로 출력할 수 있습니다. 예:SHOW CREATE TABLE StudentInformation\G - 여러 테이블의 구조만 한꺼번에 덤프하고 싶다면
mysqldump -d 데이터베이스명처럼-d(--no-data) 옵션을 활용하는 것도 좋은 방법입니다. - 생성된 DDL 문을 복사해 다른 서버나 데이터베이스에서 실행하면 동일한 구조의 테이블을 손쉽게 복제할 수 있습니다.