티스토리 뷰
티스토리
스토리 서비스 목록
프로그래머가 되고픈 구구콘검색하기
DB/MySQL
[MySQL] Delimiter 사용법
프로호구래머
2020. 9. 16. 21:56
우선, 영어로 delimiter는 구분자를 의미한다.
그러므로 MySQL에서는 구분자를 변경하기 위해 delimiter 명령어를 사용한다.
mysql에서 구분자를 디폴트로 세미콜론(;)을 문장 구분자로 이용한다.
select * from hogu;
Each stored program(Trigger나 Procedure을 의미하는 듯 하다.)은 body에 SQL문을 포함할 수 있다.
포함된 SQL문은 세미콜론(;)으로 나뉘어진 여러 문장들로 구성된 복합문 일수도 있다.
만약 delimiter를 재정의하지 않은 예시이다.
CREATE PROCEDURE `hogu`()
BEGIN
declare i int default 1;
while i <= 500 do
set i = i + 1;
end while;
END;
이렇게 stored program을 선언하게 되면 delimiter가 세미콜론이므로
1) CREATE PROCEDURE `hogu`() BEGIN declare i int default 1;
2) while i <= 500 do set i = i + 1;
3) end while;
4) END;
이렇게 4개의 문장으로 구분되어서 서버로 보내질 것이다.
그렇다면 서버는 당연히 해당 문장들을 이해하지 못할 것이다.
그래서 stored program의 정의를 서버로 보내기 위해서는 delimiter를 일시적으로 재정의 해주어야만 한다.
이때, mysql delimiter를 재정의 하기위해 사용하는 것이 DELIMITER 명령어이다.
아래는 DELIMITER를 사용한 예시이다.
DELIMITER $$
CREATE PROCEDURE `hogu`()
BEGIN
declare i int default 1;
while i <= 500 do
set i = i + 1;
end while;
END$$
DELIMITER ;
이렇게 되면 서버에는 stored program의 정의 전체가 한 번에 보내어 질 것이다.
그리고, 주의해야 할 점은 DELIMITER를 재정의하고 stored program을 정의한 후에 delimiter를 기존의 세미콜론(;)으로 바꿔주는 것이 좋을 것이다. (계속해서 DELIMITER를 사용자가 재정의한 것으로 사용할게 아니라면...)
또한, 사용자가 DELIMITER를 어떤 문자나 문자열을 한글자 혹은 여러글자로 구성해서 선언할 수도 있지만 backslash(\)만큼은 피해야만 한다. 왜나하면 backslash는 MySQL에서 escape문이기 때문이다.
만약 stored program 내부에 semicolon이 사용되지 않는다면 불필요하게 DELIMETER를 사용하지 않아도 된다.
출처
https://hogu-programmer.tistory.com/m/23
'mariaDB' 카테고리의 다른 글
마리아 db 프로시저 수정 콘솔 명령어 사용 (0) | 2024.10.15 |
---|---|
SQL 오류 (1630): Function SUBSTRING does not exist. Check the 'Function Name (0) | 2024.05.16 |
마리아 db sql import (0) | 2023.05.11 |
마리아 db 하이디 실행계획. 화면 쿼리가 느릴때 (0) | 2023.03.30 |
마리아db 순번 - 정렬 후 순번 rownum (3) | 2023.01.25 |
- Total
- Today
- Yesterday
- xe애드온
- ocjap
- Python
- EC
- C
- 이클립스
- 자바
- 플러터
- ocajp
- MySQL
- JDBC
- KG
- 문자열
- 오라클
- 인포믹스
- 파이썬
- XE3
- XE
- 라이믹스 모듈
- proc
- xe addon
- C언어
- 포인터
- php
- webix
- 프로씨
- 스크래핑
- 파싱
- esql
- 자바 smtp
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |