Esistono principalmente tre tipi di variabili in MySQL:
-
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
NULLe un tipo di stringa.SELECT @var_any_var_namePuoi inizializzare una variabile usando
SEToSELECTdichiarazione: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
SELECTquery utilizzando Tecniche avanzate di variabili utente MySQL . -
Variabili locali (nessun prefisso) :
Le variabili locali devono essere dichiarate usando
DECLAREprima 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
DEFAULTmanca la clausola, il valore iniziale èNULL.L'ambito di una variabile locale è
BEGIN ... ENDblocco all'interno del quale è dichiarato. -
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,SESSIONoBOTH.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 VARIABLESistruzione oSELECT @@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 GLOBALoSET 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;