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;
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!