Maison  >  Article  >  base de données  >  Conditions de contrôle de processus MySQL et structure de boucle

Conditions de contrôle de processus MySQL et structure de boucle

齐天大圣
齐天大圣original
2020-05-28 08:38:102419parcourir

Les instructions de contrôle de flux de MySQL ne sont peut-être pas utilisées la plupart du temps, mais si nous devons écrire une procédure stockée, nous l'utiliserons. Avec les instructions de contrôle de flux, MySQL peut écrire des programmes comme d'autres langages de programmation. Les branches conditionnelles et les corps de boucle sont respectivement présentés ci-dessous.

Branche conditionnelle

MySQL a deux types de branches conditionnelles, IF et CASE.

Condition IF

Regardons d'abord sa syntaxe :

IF CONDITION THEN 语句;
[ELSEIF CONDITION THEN 语句]
……
[ELSE 语句]
END IF;

ressemble un peu à php, mais en mysql Il y a il n'y a pas de "{}" ici, alors utilisez END IF dans MySQL pour terminer la branche conditionnelle.

Écrivons la branche conditionnelle la plus simple pour déterminer si la valeur d'entrée est supérieure à 60. Si c'est vrai, la réussite sera sortie.

BEGIN
 IF score >= 60 THEN
  SELECT 'PASS';
  END IF;
END

Maintenant, écrivons une structure multi-branches. Lorsque le score est supérieur ou égal à 90, PERFETCT est généré, et s'il est supérieur ou égal à 80, il produit excellent ; s'il est supérieur ou égal à 70, il produit bon ; égal à 60, le résultat est commun ; sinon, le résultat est mauvais ;

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

branche conditionnelle CASE

la branche conditionnelle case a deux syntaxes. Le premier est similaire à IF en PHP et l’autre est similaire au type switch-case en PHP.

语法1:
CASE 
  WHEN V1 THEN 语句 
  [WHEN V2 THEN 语句]
  ……
  [ELSE 语句]
END CASE;
rrree

Utilisons la syntaxe 2 pour compléter la même fonction que IF.

语法2:
CASE VALUE 
  WHEN V1 THEN 语句
  [WHEN V2 THEN 语句]
  ……
  [ELSE 语句]
END CASE;

Corps de boucle

Il existe également plusieurs structures de corps de boucle différentes dans Mysql, et il existe également des instructions similaires à break et continue en PHP . Examinons ensuite ces boucles et leurs différences.

WHILE

Le while ici est fondamentalement le même que php. Sa syntaxe est la suivante :

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

Ensuite, écrivons le corps de boucle le plus simple pour calculer la somme de 1+2+...+100.

WHILE CONDITION DO
  循环体
END WHILE;

Ici, DECLARE équivaut à définir une variable puis à définir la valeur initiale par défaut. L'affectation des variables nécessite la commande SET.

REPEAT

repeat est équivalent au corps de la boucle do-while en PHP Le corps de la boucle est exécuté en premier, puis la condition est. jugé. Sa syntaxe est la suivante :

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

Ensuite, nous utilisons REPEAT pour compléter la somme de 1+2+...+100.

REPEAT
  循环体
UNTIL CONDITION
END REPEAT;

LOOP loop

LOOP peut exécuter à plusieurs reprises un bloc de code et définir des étiquettes pour la boucle.

LEAVE est équivalent à l'instruction break en php. Si loop veut quitter la boucle, elle doit utiliser Leave pour y parvenir. De plus, ITERATE peut être utilisé pour implémenter la fonction de l'instruction continue en php.

Maintenant, regardons deux exemples.

La première consiste à calculer la somme de tous les nombres naturels à partir de 100, mais il y a un point à noter ici. Parce que LOOP n'a pas d'instruction CONDITION, LEAVE doit être utilisé en conjonction avec IF pour terminer. la fonction de sortir de la boucle.

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

Dans le deuxième exemple, nous utiliserons itérer. Calculez la somme de tous les nombres impairs inférieurs à 100.

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn