Mysql 의 delimiter 정의 및 역할 설명
Oacle 을 배 운 사람 은 my sql 을 다시 배 우 는 것 이 이상 하고 아무리 생각해 도 이해 가 되 지 않 는 다.
사실은 my sql 해석 기 에 이 명령 이 끝 났 는 지,my sql 이 실행 할 수 있 는 지 알려 주 는 것 입 니 다.
기본적으로 delimiter 는 분점(;)입 니 다.
명령 행 클 라 이언 트 에서 분점 으로 끝 나 는 명령 이 있 으 면 차 로 돌아 가면 my sql 에서 이 명령 을 수행 합 니 다.아래 문장 을 입력 하 십시오
mysql> select * from test_table;
그리고 차 로 돌아 가면 MySQL 은 이 문 구 를 즉시 실행 합 니 다.하지만 가끔 은 MySQL 이 그 러 기 를 원 하지 않 는 다.비교적 많은 문 구 를 입력 할 수 있 고 문장 에 분점 이 포함 되 어 있다.
명령 행 클 라 이언 트 에 다음 문 구 를 입력 하려 면
mysql> CREATE FUNCTION `SHORTEN`(S VARCHAR(255), N INT)
mysql> RETURNS varchar(255)
mysql> BEGIN
mysql> IF ISNULL(S) THEN
mysql> <strong> RETURN '';</strong>
mysql> ELSEIF N<15 THEN
mysql> RETURN LEFT(S, N);
mysql> ELSE
mysql> IF CHAR_LENGTH(S) <=N THEN
mysql> <strong>RETURN S;</strong>
mysql> ELSE
mysql> RETURN CONCAT(LEFT(S, N-10), '...', RIGHT(S, 5));
mysql> END IF;
mysql> END IF;
mysql> END;
기본 적 인 상황 에서 사용자 가 이 문 구 를 모두 입력 한 후에 전체 문 구 를 실행 할 수 없습니다.my sql 이 분 호 를 만나면 자동 으로 실행 되 기 때 문 입 니 다.
즉,문장에서 RETURN';my sql 해석 기 가 실 행 됩 니 다.
이 경우,delimiter 를//또는$와 같은 다른 기호 로 미리 바 꿔 야 합 니 다.
mysql> delimiter //
mysql> CREATE FUNCTION `SHORTEN`(S VARCHAR(255), N INT)
mysql> RETURNS varchar(255)
mysql> BEGIN
mysql> IF ISNULL(S) THEN
mysql> RETURN '';
mysql> ELSEIF N<15 THEN
mysql> RETURN LEFT(S, N);
mysql> ELSE
mysql> IF CHAR_LENGTH(S) <=N THEN
mysql> RETURN S;
mysql> ELSE
mysql> RETURN CONCAT(LEFT(S, N-10), '...', RIGHT(S, 5));
mysql> END IF;
mysql> END IF;
mysql> END;//
이렇게 하면 my sql 해석 기 가 이 문 구 를 실행 할 수 있 습 니 다.그 밖.my sql 저장 과정 에서 주의해 야 할 점 은:
drop PROCEDURE if EXISTS proc_while_test;
delimiter ;;
CREATE DEFINER = root@localhost PROCEDURE proc_while_test(IN n int)
BEGIN
DECLARE i int;
DECLARE s int;
SET i = 0;
SET s = 0;
WHILE i <= n DO
SET s = s + i; set i++;
set i = i + 1;
end WHILE;
select s;
end
;;
delimiter ;
위의 예 에서 set i++;전체 while 순환 오류 가 발생 할 수 있 습 니 다.my sql 저장 과정 에서 i++는 이렇게 쓰 는 것 을 허락 하지 않 습 니 다.i=i+1 이라는 형식 으로 써 야 합 니 다.Mysql 의 delimiter 역할 을 살 펴 보 겠 습 니 다.
1. delimiter
delimiter 는 my sql 구분자 입 니 다.my sql 클 라 이언 트 에서 구분자 의 기본 값 은 분점(;)입 니 다.
만약 한 번 에 입력 한 문장 이 비교적 많 고 문장 중간 에 분점 이 있다 면,이 때 는 특수 한 구분자 가 새로 지정 되 어야 한다.
2.delimiter 사용
이전 편 에 my sql 트리거 를 설정 할 때 사용 하 는 예 가 있 습 니 다.
mysql> delimiter //
mysql> create trigger upd_check before update on account
-> for each row
-> begin
-> if new.amount < 0 then
-> set new.amount=0;
-> elseif new.amount > 100 then
-> set new.amount = 100;
-> end if;
-> end;
-> //
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
위 는 구분자 를//로 설정 하고,다음//를 만 날 때 까지 전체 실행 문 구 를 만 듭 니 다.
실행 후 마지막 줄,delimiter;my sql 의 구분자 를 분점 으로 다시 설정 합 니 다.
수정 하지 않 으 면 이번 세 션 의 모든 구분자 가//를 기준 으로 합 니 다.
총결산
위 에서 말 한 것 은 소 편 이 여러분 에 게 소개 한 Mysql 중의 delimiter 의 역할 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 저 에 게 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MySQL에서 JSON 인덱싱 - aarondfrancis사람들은 종종 MySQL로 JSON을 인덱싱할 수 없다고 말하지만 완전히 정확하지는 않습니다. MySQL로 JSON 열을 인덱싱하는 것은 완전히 가능합니다! 사람들은 종종 MySQL로 JSON을 인덱싱할 수 없다고 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.