Die Syntax lautet wie folgt
declare var_name[,...] type [default value];
MYSQLVariablendefinition kann nur in gespeicherten Prozeduren erfolgen oder Funktionen werden im Gegensatz zu Oracle/SQL Server innerhalb von definiert. Der Gültigkeitsbereich dieser Variablen kann nur innerhalb des begin...end-Blocks liegen. Variablendefinitionen müssen am Anfang einer zusammengesetzten Anweisung geschrieben werden, vor allen anderen Anweisungen. Es können mehrere Variablen desselben Typs gleichzeitig deklariert werden. Mit default können Sie einen Standardwert zuweisen. declare只能用在局部变量定义中。
#举例 declare v_test int default 10;
Methode 1
set var_name=expr,[,var_name2=expr ...]; #举例 set v_test=15;
Methode 2
select col_name[,...] into var_name[,...] table_expr; #举例 select sid into @a from test1;
Wenn col_name (z. B. sid) mehrere Wertezeilen zurückgibt, geht @a am Ende nur zur letzten Wertezeile.
Lokale Variablen werden im Allgemeinen in SQL-Anweisungsblöcken verwendet . Zum Beispiel der Anfang/das Ende einer gespeicherten Prozedur. Ihr Gültigkeitsbereich ist auf den Anweisungsblock beschränkt. Nachdem der Anweisungsblock ausgeführt wurde, verschwindet die lokale Variable. Lokale Variablen werden im Allgemeinen mit „declare“ deklariert, und „default“ kann verwendet werden, um den Standardwert anzugeben.
create procedure add(in a int,in b int) begin declare c int default 0;#c定义的局部变量 set c = a + b; select c as c; end;
Benutzer Der Umfang der Variablen ist größer als der von lokalen Variablen. Benutzervariablen können für die gesamte aktuelle Verbindung gelten. Wenn die aktuelle Verbindung jedoch getrennt wird, verschwinden die von ihr definierten Benutzervariablen.
Benutzervariablen werden wie folgt definiert: @Variablenname
#举例 set @a = 1; set @b = 2; select @sum:=(@a + @b), @dif:=(@a - @b);
Ergebnis
Der Server verwaltet eine Reihe von Sitzungsvariablen für jeden verbundenen Client. Wenn der Client eine Verbindung herstellt, werden die Sitzungsvariablen des Clients mit den aktuellen Werten der entsprechenden globalen Variablen initialisiert. Für das Setzen von Sitzungsvariablen sind keine besonderen Berechtigungen erforderlich, aber der Client kann nur seine eigenen Sitzungsvariablen ändern, nicht die von anderen Clients. 会话变量的作用域与用户变量一样,仅限于当前连接
. Wenn die aktuelle Verbindung getrennt wird, werden alle von ihr festgelegten Sitzungsvariablen ungültig.
#设置会话变量有如下三种方式: set session var_name = value; set @@session.var_name = value; set var_name = value; #查看一个会话变量也有如下三种方式: select @@var_name; select @@session.var_name; show session variables like "%var%";
Globale Variablen beeinflussen den Gesamtbetrieb des Servers. Wenn der Server startet, initialisiert er alle globalen Variablen auf ihre Standardwerte. Diese Standardwerte können in einer Optionsdatei oder durch in der Befehlszeile angegebene Optionen geändert werden. Um globale Variablen zu ändern, müssen Sie über die Berechtigung SUPER verfügen. Globale Variablen wirken sich auf den gesamten Lebenszyklus des Servers aus, können sich jedoch nicht über Neustarts erstrecken. Das heißt, alle gesetzten globalen Variablen werden nach dem Neustart ungültig. Damit globale Variablen auch nach einem Neustart weiterhin wirksam sind, müssen Sie die entsprechende Konfigurationsdatei ändern.
#要设置一个全局变量,有如下两种方式: set global var_name = value; set @@global.var_name = value; //同上 #要想查看一个全局变量,有如下两种方式: select @@global.var_name; show global variables like "%var%";
Hinweis: Global kann hier nicht weggelassen werden. Laut Handbuch wird standardmäßig SESSION verwendet, wenn Sie beim Festlegen einer Variablen mit dem Set-Befehl weder GLOBAL, SESSION noch LOCAL angeben.
[Verwandte Empfehlungen]
1. Kostenloses MySQL-Online-Video-Tutorial
2. Neuestes MySQL-Handbuch-Tutorial
3. Boolean Education Yan Shiba MySQL-Einführungsvideo-Tutorial
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in Variablen in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!