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
NULL
e un tipo di stringa.SELECT @var_any_var_name
Puoi inizializzare una variabile usando
SET
oSELECT
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 . -
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. -
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
oBOTH
.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 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 GLOBAL
oSET 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;