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
NULL
och en typ av sträng.SELECT @var_any_var_name
Du kan initiera en variabel med
SET
ellerSELECT
uttalande: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
SELECT
frågor som använder Avancerade MySQL-tekniker för användarvariabler . -
Lokala variabler (inget prefix) :
Lokala variabler måste deklareras med
DECLARE
innan 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
DEFAULT
sats saknas, initialvärdet ärNULL
.Omfattningen av en lokal variabel är
BEGIN ... END
block inom vilket det deklareras. -
Serversystemvariabler (med prefixet
@@
):MySQL-servern har många systemvariabler konfigurerade till ett standardvärde. De kan vara av typen
GLOBAL
,SESSION
ellerBOTH
.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 VARIABLES
uttalande 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 GLOBAL
ellerSET 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;