Det finns huvudsakligen tre typer av variabler i MySQL:
-
Användardefinierade variabler (med prefixet
@):Du kan komma åt vilken användardefinierad variabel som helst utan att deklarera den eller initiera den. Om du hänvisar till en variabel som inte har initierats har den värdet
NULLoch en typ av sträng.SELECT @var_any_var_nameDu kan initiera en variabel med
SETellerSELECTuttalande:SET @start = 1, @finish = 10;eller
SELECT @start := 1, @finish := 10; SELECT * FROM places WHERE place BETWEEN @start AND @finish;Användarvariabler kan tilldelas ett värde från en begränsad uppsättning datatyper:heltal, decimal, flyttal, binär eller icke-binär sträng eller NULL-värde.
Användardefinierade variabler är sessionsspecifika. Det vill säga, en användarvariabel som definieras av en klient kan inte ses eller användas av andra klienter.
De kan användas i
SELECTfrågor som använder Avancerade MySQL-tekniker för användarvariabler . -
Lokala variabler (inget prefix) :
Lokala variabler måste deklareras med
DECLAREinnan du kommer åt den.De kan användas som lokala variabler och indataparametrarna i en lagrad procedur:
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);Om
DEFAULTsats saknas, initialvärdet ärNULL.Omfattningen av en lokal variabel är
BEGIN ... ENDblock inom vilket det deklareras. -
Serversystemvariabler (med prefixet
@@):MySQL-servern har många systemvariabler konfigurerade till ett standardvärde. De kan vara av typen
GLOBAL,SESSIONellerBOTH.Globala variabler påverkar den övergripande driften av servern medan sessionsvariabler påverkar dess funktion för individuella klientanslutningar.
För att se de aktuella värdena som används av en körande server, använd
SHOW VARIABLESuttalande ellerSELECT @@var_name.SHOW VARIABLES LIKE '%wait_timeout%'; SELECT @@sort_buffer_size;De kan ställas in vid serverstart med alternativ på kommandoraden eller i en alternativfil. De flesta av dem kan ändras dynamiskt medan servern körs med
SET GLOBALellerSET 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;