MySQL/Variables utilisateurs
Variables locales.
Les types des variables MySQL sont forcément scalaires. Pour une "variable tableau", il faut donc créer une table temporaire ou concaténer chaque ligne.
Les variables locales ne peuvent pas être lues en dehors de leur fonction ou procédure stockée.
Elles sont déclarées après codice_1 avec leur nom, leur type, et éventuellement leur valeur par défaut :
DECLARE MaVariable1 INT DEFAULT 1;
Variables de session.
Les variables obéissent à certaines règles :
 select @test := 2;
 select @test + 1; -- renvoie 3
 set @datedebut='date_de_debut', @datefin='date_de_fin';
 SELECT @nbmembre:=count(*) FROM membres;
 select @numzero := count(*) from table1 where field=0; 
 select @numdistint := count(distinct field) from table1 where field <> 0 ; 
 select @numzero @numdistinct;
Pour copier dans valeurs d'une sélection dans une ou plusieurs variables :
 SET @id = 0, @nom = ";
 SELECT id, nom INTO @id, @nom FROM table1 LIMIT 1;
 SELECT @id, @nom;
Elles peuvent être utiles quand on doit agréger plusieurs valeurs sans jointures entre leurs tables. Ex :
 SET @idCountry = (SELECT `id` FROM `country` WHERE `code` = "FR" LIMIT 1);
 SET @idLanguage = (SELECT `id` FROM `language` WHERE `code` = "fr" LIMIT 1);
 INSERT INTO `page` (`country`, `language`, `description`)
 VALUES (@idCountry, @idLanguage, 'Text')
Variables globales.
Une variable globale est visible pour tous les utilisateurs, elle est précédée de "@@".
Elles peuvent modifier les fichiers de configuration définitivement pendant la session. Donc en les changeant, il est nécessaire de préciser le critère définitif ou éphémère, en distinguant "set global" et "set session". 
Exemple :
 mysql> set @@global.max_connections = 1000;
 mysql> show global variables like 'wait_timeout';
 | Variable_name | Value |
 | wait_timeout | 60 |
 1 row in set (0.00 sec)
 mysql> set @@session.wait_timeout=120;
sql_mode.
Un script peut avoir un comportant différent sur deux bases tournant sur la même version de MySQL. Par exemple il est possible d'imposer de préciser dans le codice_6 toutes les variables sélectionnées à regrouper avec codice_7.
Ce paramétrage est visible avec sql_mode :
 SELECT @@sql_mode;
 ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

MySQL/Alias
Une expression ou une colonne peut être baptisée avec codice_1. Cet alias est utilisé comme nom de colonne et peut donc être nommé dans les clauses des requêtes. Exemple :
 SELECT 
 CONCAT(nom,' ', prenom) AS nom_complet,
 pseudonyme AS pseudo
 FROM
 table1
 ORDER BY
 nom_complet;
Ces alias fonctionnent avec codice_2, codice_3 et codice_4, mais pas codice_5.
Cela peut aussi servir à raccourcir les noms des tables employées comme préfixes.
 SELECT
 COUNT(R.ID_reservation), U.Localisation 
 FROM
 Utilisateurs U
 LEFT OUTER JOIN
 Reservations AS R
 ON 
 U.ID_Utilisateur = R.ID_Utilisateur AND
 R.ID_Projet = '10'
 GROUP BY
 U.Localisation;
De plus les alias peuvent jouer un rôle crucial pour les s. Par exemple ci-dessous, la table "personne" est référencée par "p" et "c" :
 SELECT
 p.nom AS parent,
 e.nom AS enfant,
 MIN((TO_DAYS(NOW())-TO_DAYS(e.date_naissance))/365) AS agemini
 FROM
 personne AS p 
 LEFT JOIN
 personne AS e 
 ON
 p.nom=e.parent WHERE e.nom IS NOT NULL
 GROUP BY
 parent HAVING agemini > 50 ORDER BY p.date_naissance;