V MySQL jsou hlavně tři typy proměnných:
-
Uživatelsky definované proměnné (předponou
@
):Můžete přistupovat k libovolné uživatelem definované proměnné, aniž byste ji deklarovali nebo inicializovali. Pokud odkazujete na proměnnou, která nebyla inicializována, má hodnotu
NULL
a typ řetězce.SELECT @var_any_var_name
Proměnnou můžete inicializovat pomocí
SET
neboSELECT
prohlášení:SET @start = 1, @finish = 10;
nebo
SELECT @start := 1, @finish := 10; SELECT * FROM places WHERE place BETWEEN @start AND @finish;
Uživatelským proměnným lze přiřadit hodnotu z omezené množiny datových typů:celé číslo, desítkové číslo, s plovoucí desetinnou čárkou, binární nebo nebinární řetězec nebo hodnotu NULL.
Uživatelem definované proměnné jsou specifické pro relaci. To znamená, že uživatelskou proměnnou definovanou jedním klientem nemohou ostatní klienti vidět ani používat.
Mohou být použity v
SELECT
dotazy pomocí Pokročilé techniky uživatelských proměnných MySQL . -
Místní proměnné (bez předpony):
Lokální proměnné je třeba deklarovat pomocí
DECLARE
před přístupem.Lze je použít jako lokální proměnné a vstupní parametry uvnitř uložené procedury:
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);
Pokud je
DEFAULT
klauzule chybí, počáteční hodnota jeNULL
.Rozsah lokální proměnné je
BEGIN ... END
bloku, ve kterém je deklarován. -
Systémové proměnné serveru (předponou
@@
):Server MySQL spravuje mnoho systémových proměnných nakonfigurovány na výchozí hodnotu. Mohou být typu
GLOBAL
,SESSION
neboBOTH
.Globální proměnné ovlivňují celkový provoz serveru, zatímco proměnné relace ovlivňují jeho provoz pro připojení jednotlivých klientů.
Chcete-li zobrazit aktuální hodnoty používané běžícím serverem, použijte
SHOW VARIABLES
neboSELECT @@var_name
.SHOW VARIABLES LIKE '%wait_timeout%'; SELECT @@sort_buffer_size;
Lze je nastavit při spuštění serveru pomocí voleb na příkazovém řádku nebo v souboru voleb. Většinu z nich lze měnit dynamicky za běhu serveru pomocí
SET GLOBAL
neboSET 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;