MySQL에서는 DELIMITER 개념을 활용하면 여러 개의 SELECT 쿼리를 한 번에 실행할 수 있습니다. 이 글에서는 실제 예제를 통해 그 과정을 단계별로 살펴보겠습니다.
1. 첫 번째 테이블 생성 및 데이터 삽입
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable1
(
Title text
)ENGINE=MyISAM;
Query OK, 0 rows affected (0.30 sec)
INSERT 명령을 사용해 테이블에 샘플 데이터를 입력합니다.
mysql> insert into DemoTable1 values('The database MySQL is less popular than MongoDB') ;
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable1 values('Java language uses MySQL database');
Query OK, 1 row affected (0.05 sec)
mysql> insert into DemoTable1 values('Node.js uses the MongoDB') ;
Query OK, 1 row affected (0.05 sec)
SELECT 문으로 테이블의 모든 레코드를 확인해 보겠습니다.
mysql> select *from DemoTable1;
실행 결과는 다음과 같습니다.
+-------------------------------------------------+ | Title | +-------------------------------------------------+ | The database MySQL is less popular than MongoDB | | Java language uses MySQL database | | Node.js uses the MongoDB | +-------------------------------------------------+ 3 rows in set (0.00 sec)
2. 두 번째 테이블 생성 및 데이터 삽입
다음으로 자동 증가(AUTO_INCREMENT) 기본 키를 가진 두 번째 테이블을 생성합니다.
mysql> create table DemoTable2
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY
);
Query OK, 0 rows affected (0.45 sec)
VALUES 절을 반복해 사용하면 한 번의 INSERT 명령으로 여러 행을 손쉽게 추가할 수 있습니다.
mysql> insert into DemoTable2 values(),(),(),(),(),(),(),(),(); Query OK, 9 rows affected (0.19 sec) Records: 9 Duplicates: 0 Warnings: 0
SELECT 문으로 저장된 데이터를 확인합니다.
mysql> select *from DemoTable2;
실행 결과는 다음과 같습니다.
+----+ | Id | +----+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 | +----+ 9 rows in set (0.00 sec)
3. DELIMITER로 다중 SELECT 쿼리 실행하기
이제 핵심인 다중 SELECT 쿼리 실행 방법입니다. 기본적으로 MySQL 클라이언트는 세미콜론(;)을 문장 종료 문자로 인식하기 때문에, 이를 임시로 변경하려면 DELIMITER 명령을 사용합니다. 아래와 같이 구분자를 //로 변경한 뒤 두 개의 SELECT 문을 연속해서 작성하고 마지막에 //로 묶어주면 됩니다.
mysql> DELIMITER // mysql> select *from DemoTable1; select *from DemoTable2; //
위 쿼리를 실행하면 두 SELECT 문의 결과가 차례대로 출력됩니다.
+-------------------------------------------------+ | Title | +-------------------------------------------------+ | The database MySQL is less popular than MongoDB | | Java language uses MySQL database | | Node.js uses the MongoDB | +-------------------------------------------------+ 3 rows in set (0.00 sec) +----+ | Id | +----+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 | +----+ 9 rows in set (0.03 sec)
정리: MySQL에서 여러 개의 SELECT 쿼리를 한 번에 실행하려면 DELIMITER // 로 구분자를 변경한 후, 실행할 쿼리들을 나열하고 마지막에 지정한 구분자(//)로 닫아주면 됩니다. 이 방식은 스토어드 프로시저나 트리거 작성 시에도 널리 활용되는 기법이므로 함께 익혀두면 유용합니다.