Mysql 의 delimiter 정의 및 역할 설명

3700 단어 mysqldelimiter
my sql 을 처음 배 울 때 delimiter 의 진정한 용 도 를 잘 모 를 수 있 습 니 다.delimiter 는 my sql 여러 곳 에 나타 납 니 다.예 를 들 어 저장 과정,트리거,함수 등 입 니 다.
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 의 역할 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 저 에 게 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기