In diesem Artikel erfahren Sie, was die Variablen von MySQL sind. Wie benutzt man es? Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird Ihnen hilfreich sein.
MySQL-Variablen werden in vier Typen unterteilt: lokale Variablen, Benutzervariablen, Sitzungsvariablen und globale Variablen. Ich weiß hier nicht viel über sie. Unter diesen werden Sitzungsvariablen und globale Variablen in MySQL gemeinsam als Systemvariablen bezeichnet.
Benutzervariablen
Grundlegend
Wie der Name schon sagt, handelt es sich um benutzerdefinierte Variablen. Wie definiere ich Variablen? Es gibt zwei Methoden:
SET-Methode
# 两种方式都可以 SET @variable = expr SET @variable := expr
SELECT-Methode
# 必须 := SELECT @variable := expr
Hinweise zur Benutzervariablendefinition:
Undefinierte Variablen Die Initiale Wert ist null
(kann direkt verwendet werden, ohne eine Variable zu definieren, es wird kein Fehler gemeldet)
Variablennamen unterscheiden nicht zwischen Groß- und Kleinschreibung
Variablen können nicht verwendet werden, wenn Literalwerte erforderlich sind, z. B. die select
-Anweisung in limit
usw.
Die Reihenfolge der Auswertung von Ausdrücken, die Benutzervariablen aufrufen, ist eigentlich undefiniert, da in SELECT @a = 0, @a := @a + 1;
beide Spalten 0 sein können.
Beim Zuweisen eines Werts zu einer Benutzervariablen wird zuerst der Wert des Ausdrucks ermittelt. Um das zu verstehen, sehen Sie sich bitte den folgenden Code an:
SET @m = 0; SET @m = 3, @n = @m; SELECT @n; # 0
Obwohl die Art der Benutzervariablen dynamisch geändert werden kann, wird dies nicht empfohlen, da bei der Übergabe möglicherweise Lebensgefahr besteht der Code:p .
Als Variablen haben sie alle einen Gültigkeitsbereich. Benutzervariablen sind für die gesamte Sitzung gültig, das heißt, sie sind für die gesamte Sitzung gültig. Das sieht gut aus, aber beachten Sie, dass unerwartete Probleme auftreten können, wenn ein Verbindungspool verwendet wird und benutzerdefinierte Benutzervariablen nicht korrekt initialisiert werden. Da es nicht wirklich zerstört wird, zeichnet es immer noch das letzte Ergebnis auf.
Nehmen wir ein einfaches Beispiel zur Implementierung einer Seriennummernfunktion. Die Tabelle und die Daten lauten wie folgt:
CREATE TABLE employee ( id int primary key, salary int not null ); INSERT INTO employee VALUES(1, 100); INSERT INTO employee VALUES(2, 200); INSERT INTO employee VALUES(3, 300);
Basierend auf dem, was wir zuvor gelernt haben, können wir schreibe schnell Folgendes SQL kommt heraus:
SELECT salary, (@rowno := @rowno + 1) AS 'rowno' FROM employee, (SELECT @rowno := 0) r;
Kein Problem, alles ist wie erwartet, dann fügen wir eine WHERE-Bedingung hinzu, um es zu versuchen:
SELECT salary, (@rowno := @rowno + 1) AS 'rowno' FROM employee, (SELECT @rowno := 0) r WHERE @rowno = 0;
Theoretisch sollte dies keine Daten zurückgeben, aber es ist so gibt auch ein Datenelement zurück, das mit der ID 1.
Warum? Die in der WHERE-Bedingung verwendete @rowno hat immer den gleichen Wert 0 und antwortet nicht in Echtzeit, da sie bei SELECT geändert wird. Um die Funktion von
WHERE zu implementieren, muss sie wie folgt umgeschrieben werden:
SELECT salary, rowno FROM ( SELECT salary, (@rowno := @rowno + 1) AS 'rowno' FROM employee, (SELECT @rowno := 0) r ) m WHERE rowno = 2;
Tatsächlich funktionieren die Benutzervariablen in WHERE, GROUP BY und ORDER BY von SELECT nicht wie erwartet alter Wert und wird nicht in Echtzeit geändert.
Sitzungsvariablen sind Variablen, die vom Server für jede Clientverbindung verwaltet werden. Wenn der Client eine Verbindung herstellt, werden die Sitzungsvariablen des Clients mit den aktuellen Werten der entsprechenden globalen Variablen initialisiert.
Wie der Name schon sagt, ist der Gültigkeitsbereich einer Sitzungsvariablen eine Sitzung. Wie lege ich einen Wert für eine Sitzungsvariable fest? Wie folgt:
set session var_name = value; set @@session.var_name = value; set var_name = value;
Beachten Sie, dass Sie nur Werte für vorhandene Sitzungsvariablen festlegen und keine neuen Sitzungsvariablen erstellen können. Wie erhält man also die Sitzungsvariablen? Wie folgt:
show session variables; # 以上代码会把所有会话变量罗列出来,可通过 like 进行过滤 show session variables LIKE "%var%";
Globale Variablen wirken sich auf den Gesamtbetrieb des Servers aus. Beim Neustart werden diese Einstellungen jedoch zurückgesetzt. Beachten Sie, dass Sie zum Ändern globaler Variablen über die SUPER-Berechtigung verfügen müssen.
Seine Einstellungen ähneln denen von Sitzungsvariablen:
set global var_name = value; set @@global.var_name = value;
Globale Variablen können keine neuen Variablen hinzufügen, nur vorhandene können geändert werden. Der Vorgang zum Abrufen globaler Variablen ähnelt Sitzungsvariablen:
show session variables; show global variables like "%var%";
Das obige ist der detaillierte Inhalt vonWas sind die Variablen von MySQL? Wie benutzt man es?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!