Il existe principalement trois types de variables dans MySQL :
-
Variables définies par l'utilisateur (préfixé par
@
):Vous pouvez accéder à n'importe quelle variable définie par l'utilisateur sans la déclarer ni l'initialiser. Si vous faites référence à une variable qui n'a pas été initialisée, elle a la valeur
NULL
et un type de chaîne.SELECT @var_any_var_name
Vous pouvez initialiser une variable en utilisant
SET
ouSELECT
déclaration :SET @start = 1, @finish = 10;
ou
SELECT @start := 1, @finish := 10; SELECT * FROM places WHERE place BETWEEN @start AND @finish;
Les variables utilisateur peuvent se voir attribuer une valeur à partir d'un ensemble limité de types de données :nombre entier, décimal, virgule flottante, chaîne binaire ou non binaire ou valeur NULL.
Les variables définies par l'utilisateur sont spécifiques à la session. Autrement dit, une variable utilisateur définie par un client ne peut pas être vue ou utilisée par d'autres clients.
Ils peuvent être utilisés dans
SELECT
requêtes utilisant Techniques avancées de variable utilisateur MySQL . -
Variables locales (pas de préfixe) :
Les variables locales doivent être déclarées en utilisant
DECLARE
avant d'y accéder.Ils peuvent être utilisés comme variables locales et paramètres d'entrée dans une procédure stockée :
DELIMITER // CREATE PROCEDURE sp_test(var1 INT) BEGIN DECLARE start INT unsigned DEFAULT 1; DECLARE finish INT unsigned DEFAULT 10; SELECT var1, start, finish; SELECT * FROM places WHERE place BETWEEN start AND finish; END; // DELIMITER ; CALL sp_test(5);
Si le
DEFAULT
clause manquante, la valeur initiale estNULL
.La portée d'une variable locale est le
BEGIN ... END
bloc dans lequel il est déclaré. -
Variables système du serveur (préfixé par
@@
):Le serveur MySQL maintient de nombreuses variables système configurés à une valeur par défaut.Ils peuvent être de type
GLOBAL
,SESSION
ouBOTH
.Les variables globales affectent le fonctionnement global du serveur tandis que les variables de session affectent son fonctionnement pour les connexions client individuelles.
Pour voir les valeurs actuelles utilisées par un serveur en cours d'exécution, utilisez le
SHOW VARIABLES
instruction ouSELECT @@var_name
.SHOW VARIABLES LIKE '%wait_timeout%'; SELECT @@sort_buffer_size;
Ils peuvent être définis au démarrage du serveur à l'aide d'options sur la ligne de commande ou dans un fichier d'options. La plupart d'entre eux peuvent être modifiés dynamiquement pendant l'exécution du serveur à l'aide de
SET GLOBAL
ouSET SESSION
:-- Syntax to Set value to a Global variable: SET GLOBAL sort_buffer_size=1000000; SET @@global.sort_buffer_size=1000000; -- Syntax to Set value to a Session variable: SET sort_buffer_size=1000000; SET SESSION sort_buffer_size=1000000; SET @@sort_buffer_size=1000000; SET @@local.sort_buffer_size=10000;