Der er hovedsageligt tre typer variabler i MySQL:
-
Brugerdefinerede variabler (med præfiks med
@
):Du kan få adgang til enhver brugerdefineret variabel uden at erklære den eller initialisere den. Hvis du henviser til en variabel, der ikke er blevet initialiseret, har den værdien
NULL
og en type streng.SELECT @var_any_var_name
Du kan initialisere en variabel ved at bruge
SET
ellerSELECT
erklæring:SET @start = 1, @finish = 10;
eller
SELECT @start := 1, @finish := 10; SELECT * FROM places WHERE place BETWEEN @start AND @finish;
Brugervariabler kan tildeles en værdi fra et begrænset sæt datatyper:heltal, decimal, flydende komma, binær eller ikke-binær streng eller NULL-værdi.
Brugerdefinerede variabler er sessionsspecifikke. Det vil sige, at en brugervariabel defineret af én klient ikke kan ses eller bruges af andre klienter.
De kan bruges i
SELECT
forespørgsler ved hjælp af Avancerede MySQL brugervariable teknikker . -
Lokale variabler (ingen præfiks) :
Lokale variabler skal erklæres ved hjælp af
DECLARE
før du får adgang til det.De kan bruges som lokale variable og inputparametrene i en lagret procedure:
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);
Hvis
DEFAULT
klausul mangler, startværdien erNULL
.Omfanget af en lokal variabel er
BEGIN ... END
blok, hvori det er deklareret. -
Serversystemvariabler (med præfiks med
@@
):MySQL-serveren vedligeholder mange systemvariabler konfigureret til en standardværdi. De kan være af typen
GLOBAL
,SESSION
ellerBOTH
.Globale variabler påvirker serverens overordnede drift, hvorimod sessionsvariable påvirker dens drift for individuelle klientforbindelser.
For at se de aktuelle værdier, der bruges af en kørende server, skal du bruge
SHOW VARIABLES
sætning ellerSELECT @@var_name
.SHOW VARIABLES LIKE '%wait_timeout%'; SELECT @@sort_buffer_size;
De kan indstilles ved serverstart ved hjælp af valgmuligheder på kommandolinjen eller i en indstillingsfil. De fleste af dem kan ændres dynamisk, mens serveren kører ved hjælp af
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;