MySQL에서 테이블을 생성할 때 이미 같은 이름의 테이블이 존재하면 오류가 발생합니다. 이런 상황을 방지하려면 CREATE TABLE IF NOT EXISTS 구문을 사용하면 됩니다. 이 구문은 테이블이 존재하지 않는 경우에만 새 테이블을 생성하고, 이미 존재한다면 오류 없이 그대로 통과시킵니다.
기본 문법
테이블 존재 여부를 확인하면서 생성하는 기본 문법은 다음과 같습니다.
CREATE TABLE IF NOT EXISTS yourTableName
(
yourColumnName1 dataType,
...
yourColumnNameN dataType
);
INSERT INTO yourTableName VALUES(yourValue1, ..., yourValueN);실제 예제로 살펴보기
1단계: 테이블 생성
먼저 IF NOT EXISTS 옵션을 사용해 테이블을 생성해 보겠습니다.
mysql> CREATE TABLE IF NOT EXISTS DemoTable
(
StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentSubject varchar(100)
);
Query OK, 0 rows affected (0.60 sec)DemoTable이라는 테이블이 생성되었으며, 자동 증가하는 기본키인 StudentId와 과목명을 저장하는 StudentSubject 컬럼으로 구성되어 있습니다.
2단계: 데이터 삽입
INSERT 명령어를 사용해 테이블에 레코드를 추가합니다.
mysql> INSERT INTO DemoTable(StudentSubject) VALUES('Java');
Query OK, 1 row affected (0.24 sec)
mysql> INSERT INTO DemoTable(StudentSubject) VALUES('MySQL');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable(StudentSubject) VALUES('C');
Query OK, 1 row affected (0.23 sec)StudentId 컬럼은 AUTO_INCREMENT로 설정되어 있으므로, 값을 직접 지정하지 않아도 1부터 순차적으로 자동 입력됩니다.
3단계: 결과 확인
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> SELECT * FROM DemoTable;
실행 결과는 다음과 같습니다.
+-----------+----------------+ | StudentId | StudentSubject | +-----------+----------------+ | 1 | Java | | 2 | MySQL | | 3 | C | +-----------+----------------+ 3 rows in set (0.00 sec)
핵심 정리
CREATE TABLE IF NOT EXISTS는 스크립트를 여러 번 실행해도 안전하게 동작하도록 만들어 주는 유용한 구문입니다. 특히 배포 스크립트나 초기화 쿼리를 작성할 때, 테이블 중복 생성 오류를 방지하고 싶다면 반드시 이 옵션을 활용하는 것이 좋습니다.