CREATE TABLE IF NOT EXISTS로 테이블 생성과 데이터 삽입 동시에 처리하기
MySQL에서는 CREATE TABLE IF NOT EXISTS 구문을 사용하면 테이블이 존재하지 않는 경우에만 새 테이블을 생성하면서, 동시에 SELECT 절을 통해 레코드까지 삽입할 수 있습니다. 아래 기본 문법을 확인해 보세요.
create table if not exists yourTableName
(
yourColumnName1 dataType,
yourColumnName2 dataType,
yourColumnName3 dataType,
.
.
N
)
as select yourValue1 as yourColumnName1 , yourValue2 as yourColumnName2 , yourValue3 as yourColumnName3,.............................N;실제 예제
먼저 DemoTable이라는 테이블이 아직 존재하지 않는다면 생성하고, 동시에 값을 삽입해 보겠습니다.
mysql> create table if not exists DemoTable
(
id int,
FirstName varchar(20),
LastName varchar(20)
)
as select 100 as id, 'John' as FirstName , 'Smith' as LastName;
Query OK, 1 row affected (0.65 sec)
Records: 1 Duplicates: 0 Warnings: 0위 쿼리를 실행하면 테이블이 새로 생성되면서 id가 100이고 이름이 John Smith인 레코드가 함께 저장됩니다.
결과 확인하기
이제 SELECT 문으로 저장된 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+------+-----------+----------+ | id | FirstName | LastName | +------+-----------+----------+ | 100 | John | Smith | +------+-----------+----------+ 1 row in set (0.00 sec)
핵심 정리
CREATE TABLE IF NOT EXISTS ... AS SELECT 패턴은 다음과 같은 상황에서 유용합니다.
- 스크립트나 배치 작업에서 테이블 존재 여부를 매번 확인하는 번거로움을 줄일 수 있습니다.
- 이미 테이블이 존재하는 경우 오류 없이 조용히 건너뛰므로 재실행 가능한(idempotent) SQL 스크립트 작성에 적합합니다.
- 별도의 INSERT 문 없이 초기 데이터를 포함한 테이블을 한 번의 쿼리로 만들 수 있습니다.