Es gibt hauptsächlich drei Arten von Variablen in MySQL:
-
Benutzerdefinierte Variablen (mit vorangestelltem
@
):Sie können auf jede benutzerdefinierte Variable zugreifen, ohne sie zu deklarieren oder zu initialisieren. Wenn Sie auf eine nicht initialisierte Variable verweisen, hat sie den Wert
NULL
und eine Art String.SELECT @var_any_var_name
Sie können eine Variable mit
SET
initialisieren oderSELECT
Aussage:SET @start = 1, @finish = 10;
oder
SELECT @start := 1, @finish := 10; SELECT * FROM places WHERE place BETWEEN @start AND @finish;
Benutzervariablen kann ein Wert aus einer begrenzten Menge von Datentypen zugewiesen werden:Ganzzahl, Dezimalzahl, Fließkommazahl, binäre oder nichtbinäre Zeichenkette oder NULL-Wert.
Benutzerdefinierte Variablen sind sitzungsspezifisch. Das heißt, eine von einem Client definierte Benutzervariable kann von anderen Clients nicht gesehen oder verwendet werden.
Sie können in
SELECT
verwendet werden Abfragen mit Fortgeschrittene MySQL-Benutzervariablentechniken . -
Lokale Variablen (kein Präfix) :
Lokale Variablen müssen mit
DECLARE
deklariert werden bevor Sie darauf zugreifen.Sie können als lokale Variablen und als Eingabeparameter innerhalb einer gespeicherten Prozedur verwendet werden:
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);
Wenn der
DEFAULT
Klausel fehlt, ist der AnfangswertNULL
.Der Gültigkeitsbereich einer lokalen Variablen ist
BEGIN ... END
Block, in dem es deklariert ist. -
Server-Systemvariablen (mit vorangestelltem
@@
):Der MySQL-Server verwaltet viele Systemvariablen auf einen Standardwert konfiguriert. Sie können vom Typ
GLOBAL
sein ,SESSION
oderBOTH
.Globale Variablen beeinflussen den Gesamtbetrieb des Servers, während Sitzungsvariablen seinen Betrieb für einzelne Client-Verbindungen beeinflussen.
Um die aktuellen Werte zu sehen, die von einem laufenden Server verwendet werden, verwenden Sie
SHOW VARIABLES
-Anweisung oderSELECT @@var_name
.SHOW VARIABLES LIKE '%wait_timeout%'; SELECT @@sort_buffer_size;
Sie können beim Serverstart mit Optionen auf der Befehlszeile oder in einer Optionsdatei gesetzt werden. Die meisten von ihnen können dynamisch geändert werden, während der Server läuft, indem
SET GLOBAL
verwendet wird oderSET 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;