[MySQL] Delimiter 사용법

김시은·2022년 11월 23일

MySQL Study

목록 보기
1/1

Delmiter란?

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를 이해하지 못하고 에러가 발생하게 될 것이다.

Delimiter를 변경하는 방법

구분자를 변경해주기 위해 아래와 같이 DELIMTER 명령어를 사용할 수 있다.

DELIMITER [구분자로 사용할 기호]

[구분자로 사용할 기호] 에는 원하는 기호를 사용하면 되지만, MySQL의 escape charater인 \는 사용하지 말아야 한다.
일반적으로는 $$// 를 많이 사용한다.

DELIMITER $$  -- 구분자를 ; 에서 $$로 변경

SELECT * FROM orders$$  -- 구분자가 변경되어 ; 대신 $$로 statement를 선언

DELIMITER ;  -- 구분자를 다시 $$에서 ;로 변경

다음 포스팅에서는 구분자를 변경하여 저장 프로시저를 만들어보겠다.

참고자료

profile
데이터분석가를 꿈꾸어요

0개의 댓글