Има основно три типа променливи в 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;