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

MySQL에서 기존 테이블을 기반으로 CREATE TABLE 문을 생성하는 방법


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 문을 복사해 다른 서버나 데이터베이스에서 실행하면 동일한 구조의 테이블을 손쉽게 복제할 수 있습니다.