Heim > Datenbank > MySQL-Tutorial > Hauptteil

Was sind die Variablen von MySQL? Wie benutzt man es?

不言
Freigeben: 2018-12-30 09:19:19
nach vorne
7140 Leute haben es durchsucht

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
Nach dem Login kopieren

SELECT-Methode

# 必须 :=
SELECT @variable := expr
Nach dem Login kopieren

Hinweise zur Benutzervariablendefinition:

  1. Undefinierte Variablen Die Initiale Wert ist null (kann direkt verwendet werden, ohne eine Variable zu definieren, es wird kein Fehler gemeldet)

  2. Variablennamen unterscheiden nicht zwischen Groß- und Kleinschreibung

  3. Variablen können nicht verwendet werden, wenn Literalwerte erforderlich sind, z. B. die select-Anweisung in limit usw.

  4. 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.

  5. 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
    Nach dem Login kopieren
  6. 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.

Beispiel

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);
Nach dem Login kopieren

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;
Nach dem Login kopieren

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;
Nach dem Login kopieren

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;
Nach dem Login kopieren

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.

Systemvariablen

Sitzungsvariablen

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;
Nach dem Login kopieren

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%";
Nach dem Login kopieren

Globale Variablen

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;
Nach dem Login kopieren

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%";
Nach dem Login kopieren


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!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage