Delimiter란 한국어로는 구분자를 의미한다.
MySQL에서는 statement를 구분하기 위해 기본적으로 ;를 구분자로 사용한다.
서버는 ;를 기준으로 statement를 개별적으로 실행하게 된다.
SELECT * FROM orders;
SELECT * FROM customers;
하지만, MySQL에서 저장 프로시저(Stored Procedure)를 사용할 때 등, 구분자를 변경해주어야 할 때가 있다.
아래는 구분자를 변경하지 않고 저장 프로시저를 만든 예시이다.
DECLARE PROCEDURE example()
BEGIN
DECLARE i INT DEFAULT 1;
WHILE (i<5) DO
DELETE FROM orders WHERE order_id = i;
SET i = i + 1;
END WHILE;
END;
이렇게 저장 프로시저를 선언하게 되면, 총 4개의 statement를 구분되어서 개벌적으로 실행이 되게 된다. 당연히 MySQL 서버는 syntax에 맞지 않는 각 statement를 이해하지 못하고 에러가 발생하게 될 것이다.
구분자를 변경해주기 위해 아래와 같이 DELIMTER 명령어를 사용할 수 있다.
DELIMITER [구분자로 사용할 기호]
[구분자로 사용할 기호] 에는 원하는 기호를 사용하면 되지만, MySQL의 escape charater인 \는 사용하지 말아야 한다.
일반적으로는 $$와 // 를 많이 사용한다.
DELIMITER $$ -- 구분자를 ; 에서 $$로 변경
SELECT * FROM orders$$ -- 구분자가 변경되어 ; 대신 $$로 statement를 선언
DELIMITER ; -- 구분자를 다시 $$에서 ;로 변경
다음 포스팅에서는 구분자를 변경하여 저장 프로시저를 만들어보겠다.