Има основно три типа променливи в MySQL:
-
Променливи, дефинирани от потребителя (с префикс с
@):Можете да получите достъп до всяка дефинирана от потребител променлива, без да я декларирате или инициализирате. Ако се позовавате на променлива, която не е инициализирана, тя има стойност
NULLи тип низ.SELECT @var_any_var_nameМожете да инициализирате променлива, като използвате
SETилиSELECTизявление:SET @start = 1, @finish = 10;или
SELECT @start := 1, @finish := 10; SELECT * FROM places WHERE place BETWEEN @start AND @finish;На потребителските променливи може да се присвои стойност от ограничен набор от типове данни:цяло число, десетично число, с плаваща запетая, двоичен или недвоичен низ или стойност NULL.
Дефинираните от потребителя променливи са специфични за сесията. Тоест, потребителска променлива, дефинирана от един клиент, не може да бъде видяна или използвана от други клиенти.
Те могат да се използват в
SELECTзаявки, използващи Разширени техники за потребителски променливи на MySQL . -
Локални променливи (без префикс) :
Локалните променливи трябва да бъдат декларирани с помощта на
DECLAREпреди да го осъществите.Те могат да се използват като локални променливи и входни параметри в съхранена процедура:
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);Ако
DEFAULTклауза липсва, първоначалната стойност еNULL.Обхватът на локална променлива е
BEGIN ... ENDблок, в който е деклариран. -
Системни променливи на сървъра (с префикс с
@@):MySQL сървърът поддържа много системни променливи конфигурирани на стойност по подразбиране. Те могат да бъдат от тип
GLOBAL,SESSIONилиBOTH.Глобалните променливи влияят върху цялостната работа на сървъра, докато променливите на сесията влияят върху работата му за отделни клиентски връзки.
За да видите текущите стойности, използвани от работещ сървър, използвайте
SHOW VARIABLESизявление илиSELECT @@var_name.SHOW VARIABLES LIKE '%wait_timeout%'; SELECT @@sort_buffer_size;Те могат да бъдат зададени при стартиране на сървъра с помощта на опции в командния ред или във файл с опции. Повечето от тях могат да се променят динамично, докато сървърът работи с помощта на
SET GLOBALили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;