Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment déclarer une variable dans MySQL ?

Il existe principalement trois types de variables dans MySQL :

  1. 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 ou SELECT 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 .

  2. 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 est NULL .

    La portée d'une variable locale est le BEGIN ... END bloc dans lequel il est déclaré.

  3. 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 ou BOTH .

    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 ou SELECT @@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 ou SET 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;