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

MySQL에서 테이블이 존재하지 않을 때 생성과 레코드 삽입을 하나의 쿼리로 처리하는 방법

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 문 없이 초기 데이터를 포함한 테이블을 한 번의 쿼리로 만들 수 있습니다.