MySQL에서 반환되는 자체 계산 출력(self-computed output)을 활용하면 별도의 값 없이도 테이블에 데이터를 삽입할 수 있습니다. 이 방식을 사용하면 더미(dummy) 테이블인 dual을 굳이 지정할 필요가 없다는 장점이 있습니다.
기본 문법
INSERT INTO table_name(column1, column2, column3, …) Select value1, value2, value3, …;
즉, INSERT 문의 VALUES 절 대신 SELECT 문을 사용하여 원하는 값을 직접 선택(select)한 것처럼 삽입하는 방식입니다.
예제
아래 예제에서는 MySQL의 자체 계산 출력을 이용하여 testing 테이블에 값을 삽입하는 과정을 보여줍니다.
1. 테이블 생성
mysql> Create table testing(id int, item_name varchar(10)); Query OK, 0 rows affected (0.15 sec)
2. 자체 계산 출력으로 데이터 삽입
mysql> Insert into testing (id,item_name)Select 1,'Book'; Query OK, 1 row affected (0.11 sec) Records: 1 Duplicates: 0 Warnings: 0 mysql> Insert into testing (id,item_name)Select 2,'Pen'; Query OK, 1 row affected (0.11 sec) Records: 1 Duplicates: 0 Warnings: 0
3. 삽입 결과 확인
mysql> select * from testing; +------+-----------+ | id | item_name | +------+-----------+ | 1 | Book | | 2 | Pen | +------+-----------+ 2 rows in set (0.00 sec)
위 결과를 보면 Select 구문을 통해 반환된 값들이 정상적으로 testing 테이블에 저장된 것을 확인할 수 있습니다. 이처럼 SELECT 문을 활용한 삽입 방식은 단순히 값을 넣는 것뿐만 아니라, 다른 테이블에서 조회한 결과를 그대로 삽입하는 등 다양하게 응용할 수 있어 실무에서 유용하게 사용됩니다.