하위 쿼리를 사용하여 테이블이 비어 있는 경우 삽입을 실행할 수 있습니다. 이를 위해 하위 쿼리를 사용하여 존재하지 않는 조건에 대해 작업합니다.
아래 구문은 테이블이 비어 있는 경우에만 작동합니다. 테이블이 비어 있지 않으면 레코드를 삽입하지 않습니다. 구문은 다음과 같습니다.
INSERT INTO yourTableName(yourColumnName)SELECT 'anyValue'WHERE NOT EXISTS (SELECT *FROM yourTableName);
위의 구문을 이해하기 위해 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> create table ExecuteInsertDemo -> ( -> Name varchar(20) -> );쿼리 OK, 영향을 받는 행 0개(0.67초)
insert 명령을 사용하여 테이블에 레코드를 삽입해 보겠습니다. 레코드를 삽입하는 쿼리는 다음과 같습니다.
mysql> ExecuteInsertDemo values('John')에 삽입, 쿼리 확인, 1행 영향(0.19초)
테이블이 비어 있지 않다고 가정해 보겠습니다. 단 하나의 기록만을 가지고 있습니다. 삽입 명령을 실행하면 MySQL은 테이블에 해당 레코드를 입력하지 않습니다.
삽입을 실행하는 쿼리는 다음과 같습니다.
mysql> ExecuteInsertDemo(Name)에 삽입 -> 'Larry' 선택 -> 존재하지 않는 곳에 선택(ExecuteInsertDemo에서 *선택), 쿼리 확인, 영향을 받는 행 0개(0.00초) 레코드:0 중복:0 경고:0사전>select 문을 사용하여 레코드를 표시합니다. 쿼리는 다음과 같습니다.
mysql> select *from ExecuteInsertDemo;다음은 출력입니다.
+------+| 이름 |+------+| John |+-----+1 행 세트(0.00초)위에서 본 쿼리를 실행하려면 테이블에서 레코드를 삭제해야 합니다. 자르기 명령을 사용하십시오. 쿼리는 다음과 같습니다.
mysql> 테이블 자르기 ExecuteInsertDemo;Query OK, 영향을 받는 행 0개(1.10초)위의 쿼리를 실행하여 삽입 명령을 실행합니다. 쿼리는 다음과 같습니다.
mysql> ExecuteInsertDemo(Name)에 삽입 -> 'Larry' 선택 -> 존재하지 않는 곳에 선택(ExecuteInsertDemo에서 *선택), 쿼리 확인, 영향을 받는 행 1개(0.33초) 레코드:1 중복:0 경고:0사전>select를 사용하여 테이블의 레코드를 표시합니다. 쿼리는 다음과 같습니다.
mysql> select *from ExecuteInsertDemo;다음은 출력입니다.
+-------+| 이름 |+-------+| 래리 |+-------+1행 세트(0.00초)샘플 출력을 보면 'Larry'가 테이블이 비어 있을 때 성공적으로 삽입되었습니다.