Variables, conditions et boucles
On retrouve 2 types de variables en MySQL :
- Variables globales
- Variables locales
Les variables globales sont accessibles partout, mais elles doivent être redéclarées à chaque exécution.
Lorsqu'on peut utiliser une variable locale, on le fait!
Variables globales
Pour déclarer ou modifier une variable globale on utilise l’instruction:
SET @variable = valeur
Les valeurs possibles dans une variables sont :
Integer, decimal, float, blob, text
Tout autre type est converti dans l'un de ces types.
Afficher une variable
On utilise l’instruction SELECT pour afficher une variable.
SET @nombre = 12;
SELECT @nombre;
Le résultat est :
| @nombre |
--
| 12 |
Variables locales
Elles doivent être utilisées dans un bloc BEGIN ... END
DECLARE nom TYPE DEFAULT valeur;
Par exemple
DECLARE _nombre INTEGER DEFAULT 12;
Le DEFAULT valeur peut être omis pour ne pas affecter de valeurs lors de la déclaration. On les modifie également en utilisant l’instruction SET ou un SELECT.
Variables locales
Toutes les instructions DECLARE doivent être au début du bloc BEGIN.
Pour reconnaître les variables locales des colonnes, toutes les variables locales doivent être préfixées de _ (standard de code)
Opérations
Les opérations arithmétiques et de comparaison sont permises dans les membres de droite des assignations.
On peut également utiliser les variables dans les requêtes.
SELECT nom FROM etudiants
WHERE code = @code;
Conditions et boucles
L’instruction conditionnelle de base à la syntaxe suivante
IF condition THEN
traitements…
END IF;
Pas d’accolade { }, elles sont remplacées par THEN … END IF;
Par exemple, on vérifie que l'âge est plus grande ou égale à 18 (le code ne fonctionne pas, on ne peut pas mettre d'instructions conditionnelles hors d'une fonction en SQL).
IF @age >= 18 THEN
SELECT 'Vous etes majeur';
END IF;
Traitements alternatifs
IF condition THEN
traitement
ELSEIF condition alternative THEN
traitement
ELSE
traitement
END IF;
Instruction par cas
Semblable à l’instruction switch
CASE
WHEN condition THEN traitement
WHEN condition THEN traitement
ELSE traitement
END
La première condition validée est exécutée, puis le CASE est conclut (pas de break et pas de possibilité d'effectuer plusieurs traitements).
Exemple de CASE
L'exemple est un peu avancé, retenez l'élément suivant : on peut utiliser le CASE directement dans un SELECT
SELECT
CASE
WHEN nb_echecs = 0 THEN "Pas d'echec"
WHEN nb_echecs <= 2 THEN '2 echecs ou moins'
ELSE 'Plus de deux echecs'
END
FROM ...
Instructions répétées
Boucle while qui exécute un traitement tant que la condition est vérifiée.
WHILE condition DO
traitements…
END WHILE;
Boucle qui effectue au moins une fois le traitement (semblable à la boucle do-while).
REPEAT
traitements…
UNTIL condition
END REPEAT;