> 데이터 베이스 > MySQL 튜토리얼 > MySQL 프로세스 제어 조건 및 루프 구조

MySQL 프로세스 제어 조건 및 루프 구조

齐天大圣
풀어 주다: 2020-05-29 10:38:56
원래의
2484명이 탐색했습니다.

Mysql의 흐름 제어 문은 대부분의 경우 사용되지 않을 수 있지만 저장 프로시저를 작성해야 하는 경우 이를 사용합니다. 흐름 제어문을 사용하면 mysql은 다른 프로그래밍 언어처럼 프로그램을 작성할 수 있습니다. 다음으로 조건부 분기와 루프 본문을 각각 소개하겠습니다.

조건 분기

MySQL에는 IF와 CASE라는 두 가지 유형의 조건 분기가 있습니다.

IF 조건

먼저 구문을 살펴보세요.

IF CONDITION THEN 语句;
[ELSEIF CONDITION THEN 语句]
……
[ELSE 语句]
END IF;
로그인 후 복사

는 약간 PHP와 비슷해 보이지만 mysql에는 "{}"가 없으므로 mysql에서는 END IF를 사용하여 조건 분기를 종료합니다.

입력 값이 60보다 큰지 확인하는 가장 간단한 조건 분기를 작성해 보겠습니다. true인 경우 pass가 출력됩니다.

BEGIN
 IF score >= 60 THEN
  SELECT 'PASS';
  END IF;
END
로그인 후 복사

이제 다중 브랜치 구조를 작성해 보겠습니다. 점수가 90 이상이면 PERFETCT가 출력되고, 80 이상이면 great를 출력하고, 70 이상이면 good을 출력합니다. 60과 같으면 common을 출력하고 그렇지 않으면 bad를 출력합니다.

BEGIN
 IF score >= 90 THEN SELECT 'PERFECT';
    ELSEIF score >= 80 THEN SELECT 'GREAT';
    ELSEIF score >=70 THEN SELECT 'GOOD';
    ELSEIF score >= 60 THEN SELECT 'COMMON';
    ELSE SELECT 'BAD';
    END IF;
END
로그인 후 복사

CASE 조건부 분기

두 가지 경우 조건부 분기 종류의 문법이 있습니다. 첫 번째는 PHP의 IF와 유사하고, 다른 하나는 PHP의 스위치 케이스 유형과 유사합니다.

语法1:
CASE 
  WHEN V1 THEN 语句 
  [WHEN V2 THEN 语句]
  ……
  [ELSE 语句]
END CASE;
로그인 후 복사
语法2:
CASE VALUE 
  WHEN V1 THEN 语句
  [WHEN V2 THEN 语句]
  ……
  [ELSE 语句]
END CASE;
로그인 후 복사

구문 2를 사용하여 IF와 동일한 기능을 완성해 보겠습니다.

BEGIN
    CASE FLOOR(score/10) 
    WHEN 10 THEN SELECT '优秀';
    WHEN 9 THEN SELECT '优秀';
    WHEN 8 THEN SELECT '良好';
    WHEN 7 THEN SELECT '一般';
    WHEN 6 THEN SELECT '及格';
    ELSE SELECT '不及格';
    END CASE;
 END
로그인 후 복사

Loop body

Mysql에도 여러 가지 루프 본문 구조가 있고, PHP의 break 및 continue와 유사한 문도 있습니다. 다음으로 이러한 루프와 차이점을 살펴보겠습니다.

WHILE

여기서는 기본적으로 PHP와 동일합니다. 그의 구문은 다음과 같습니다:

WHILE CONDITION DO
  循环体
END WHILE;
로그인 후 복사

다음으로 1+2+…+100의 합을 계산하는 가장 간단한 루프 본문을 작성해 보겠습니다.

BEGIN
  DECLARE i TINYINT DEFAULT 1;
  DECLARE n TINYINT DEFAULT 100;
  DECLARE s INT DEFAULT 0;
  WHILE i <= n DO
    SET s = s + i;
    SET i = i + 1;
  END WHILE;
 SELECT s;
END
로그인 후 복사

여기서 DECLARE는 변수를 정의한 다음 기본값으로 초기값을 설정하는 것과 같습니다. 변수를 할당하려면 SET 명령이 필요합니다.

REPEAT

repeat는 PHP의 do-while 루프 본문과 동일합니다. 루프 본문이 먼저 실행된 다음 조건이 판단됩니다. 구문은 다음과 같습니다:

REPEAT
  循环体
UNTIL CONDITION
END REPEAT;
로그인 후 복사

다음으로 REPEAT를 사용하여 1+2+...+100의 합을 완성합니다.

BEGIN
 DECLARE i TINYINT DEFAULT 1;
  DECLARE n TINYINT DEFAULT 100;
  DECLARE s INT DEFAULT 0;
  REPEAT 
    SET s = s+i;
    SET i = i+1;
  UNTIL i > 100
  END REPEAT;
 SELECT s;
END
로그인 후 복사

LOOP 루프

LOOP는 코드 블록을 반복적으로 실행하고 루프에 대한 레이블을 설정할 수 있습니다.

LEAVE는 PHP의 break 문과 동일합니다. 루프가 루프를 종료하려면 휴가를 사용해야 합니다. 또한 ITERATE를 사용하여 PHP에서 continue 문의 기능을 구현할 수 있습니다.

이제 두 가지 예를 살펴보겠습니다.

첫 번째 단계는 100부터 시작하는 모든 자연수의 합을 계산하는 것이지만 여기서 주의할 점이 있습니다. LOOP에는 CONDITION 문이 없으므로 점프 기능을 완료하려면 IF와 함께 LEAVE를 사용해야 합니다. 루프에서.

BEGIN
 DECLARE i TINYINT DEFAULT 1;
  DECLARE n TINYINT DEFAULT 100;
  DECLARE s INT DEFAULT 0;
  l:LOOP
    SET s = s + i;
    SET i = i + 1;
 
  IF i > n THEN LEAVE l;
    END IF;
  END LOOP l;  
 SELECT s;
END
로그인 후 복사

두 번째 예에서는 iterate를 사용하겠습니다. 100 내의 모든 홀수의 합을 계산합니다.

아아아아

위 내용은 MySQL 프로세스 제어 조건 및 루프 구조의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿