Mysql
 sql >> Database >  >> RDS >> Mysql

Come dichiarare una variabile in MySQL?

Esistono principalmente tre tipi di variabili in MySQL:

  1. Variabili definite dall'utente (preceduto da @ ):

    È possibile accedere a qualsiasi variabile definita dall'utente senza dichiararla o inizializzarla. Se fai riferimento a una variabile che non è stata inizializzata, ha un valore di NULL e un tipo di stringa.

    SELECT @var_any_var_name
    

    Puoi inizializzare una variabile usando SET o SELECT dichiarazione:

    SET @start = 1, @finish = 10;    
    

    o

    SELECT @start := 1, @finish := 10;
    
    SELECT * FROM places WHERE place BETWEEN @start AND @finish;
    

    Alle variabili utente può essere assegnato un valore da un insieme limitato di tipi di dati:intero, decimale, a virgola mobile, stringa binaria o non binaria o valore NULL.

    Le variabili definite dall'utente sono specifiche della sessione. Cioè, una variabile utente definita da un client non può essere vista o utilizzata da altri client.

    Possono essere utilizzati in SELECT query utilizzando Tecniche avanzate di variabili utente MySQL .

  2. Variabili locali (nessun prefisso) :

    Le variabili locali devono essere dichiarate usando DECLARE prima di accedervi.

    Possono essere utilizzate come variabili locali e parametri di input all'interno di una procedura memorizzata:

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

    Se il DEFAULT manca la clausola, il valore iniziale è NULL .

    L'ambito di una variabile locale è BEGIN ... END blocco all'interno del quale è dichiarato.

  3. Variabili di sistema del server (preceduto da @@ ):

    Il server MySQL mantiene molte variabili di sistema configurati su un valore predefinito. Possono essere di tipo GLOBAL , SESSION o BOTH .

    Le variabili globali influiscono sul funzionamento generale del server mentre le variabili di sessione influiscono sul suo funzionamento per le singole connessioni client.

    Per vedere i valori correnti utilizzati da un server in esecuzione, usa SHOW VARIABLES istruzione o SELECT @@var_name .

    SHOW VARIABLES LIKE '%wait_timeout%';
    
    SELECT @@sort_buffer_size;
    

    Possono essere impostati all'avvio del server utilizzando le opzioni sulla riga di comando o in un file di opzioni. La maggior parte di essi può essere modificata dinamicamente mentre il server è in esecuzione utilizzando SET GLOBAL o 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;