MySQL Temporäre Tabellen und Sitzungsdaten

MySQLBeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie, wie Sie mit temporären Tabellen in MySQL arbeiten, wobei der Schwerpunkt auf deren Erstellung und Verwendung innerhalb einer einzelnen Sitzung liegt. Sie beginnen damit, sich mit dem MySQL-Server zu verbinden und eine temporäre Tabelle namens temp_employees zu erstellen.

Während des gesamten Labs werden Sie Daten in diese Tabelle einfügen, sie abfragen, um Informationen abzurufen, und ihren sitzungsspezifischen Geltungsbereich untersuchen, indem Sie versuchen, von einer anderen Sitzung darauf zuzugreifen. Abschließend lernen Sie, wie Sie eine temporäre Tabelle explizit entfernen und verstehen ihren automatischen Bereinigungsprozess. Dieses Lab vermittelt Ihnen ein praktisches Verständnis dafür, wie temporäre Tabellen für die sitzungsspezifische Datenmanipulation verwendet werden können.

Verbindung zu MySQL herstellen und temporäre Tabelle erstellen

In diesem Schritt verbinden Sie sich mit dem MySQL-Server und erstellen Ihre erste temporäre Tabelle. Temporäre Tabellen sind spezielle Tabellen, die nur für die Dauer einer einzelnen Client-Sitzung existieren. Sie werden automatisch gelöscht, wenn die Sitzung endet, was sie nützlich für die Speicherung von Zwischenergebnissen oder Daten macht, die nur für kurze Zeit benötigt werden.

Öffnen Sie zuerst ein Terminal in der LabEx VM. Verbinden Sie sich mit dem MySQL-Server als root-Benutzer mit dem folgenden Befehl.

sudo mysql -u root

Nachdem Sie den Befehl ausgeführt haben, sollten Sie die MySQL-Eingabeaufforderung sehen, die wie mysql> aussieht. Dies zeigt an, dass Sie erfolgreich mit dem MySQL-Server verbunden sind und nun SQL-Befehle ausführen können.

Bevor Sie die Tabelle erstellen, müssen Sie eine Datenbank auswählen. Wir werden die Datenbank test verwenden, die standardmäßig für Tests verfügbar ist. Falls sie nicht existiert, wird der folgende Befehl sie erstellen.

CREATE DATABASE IF NOT EXISTS test;
USE test;

Erstellen Sie als Nächstes eine temporäre Tabelle namens temp_employees. Die Syntax ähnelt der Erstellung einer regulären Tabelle, aber Sie müssen das Schlüsselwort TEMPORARY einschließen.

Führen Sie den folgenden SQL-Befehl in der mysql> Eingabeaufforderung aus:

CREATE TEMPORARY TABLE temp_employees (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255),
    department VARCHAR(255)
);

Dieser Befehl erstellt eine temporäre Tabelle mit drei Spalten:

  • id: Eine Ganzzahl, die als Primärschlüssel dient und für jede neue Zeile automatisch inkrementiert wird.
  • name: Eine Zeichenkette (bis zu 255 Zeichen) zur Speicherung des Namens eines Mitarbeiters.
  • department: Eine Zeichenkette (bis zu 255 Zeichen) zur Speicherung der Abteilung eines Mitarbeiters.

Um zu bestätigen, dass die temporäre Tabelle erfolgreich in Ihrer aktuellen Sitzung erstellt wurde, verwenden Sie den Befehl DESCRIBE.

DESCRIBE temp_employees;

Die Ausgabe zeigt die Struktur der Tabelle temp_employees an und bestätigt deren Spalten und Datentypen:

+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         | int          | NO   | PRI | NULL    | auto_increment |
| name       | varchar(255) | YES  |     | NULL    |                |
| department | varchar(255) | YES  |     | NULL    |                |
+------------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

Diese Ausgabe bestätigt, dass die Tabelle temp_employees für die Verwendung in Ihrer aktuellen MySQL-Sitzung bereit ist.

Daten in die temporäre Tabelle einfügen und abfragen

Nachdem Sie die Tabelle temp_employees erstellt haben, können Sie mit ihr wie mit einer regulären Tabelle interagieren. In diesem Schritt fügen Sie Daten ein und fragen diese dann ab.

Sie sollten sich immer noch in der MySQL-Sitzung aus dem vorherigen Schritt befinden, mit der sichtbaren mysql> Eingabeaufforderung.

Fügen wir einige Zeilen Daten mit der Anweisung INSERT INTO in die Tabelle temp_employees ein. Führen Sie diese Befehle nacheinander aus:

INSERT INTO temp_employees (name, department) VALUES ('Alice Smith', 'Sales');
INSERT INTO temp_employees (name, department) VALUES ('Bob Johnson', 'Marketing');
INSERT INTO temp_employees (name, department) VALUES ('Charlie Brown', 'IT');

Diese Befehle fügen drei Mitarbeitereinträge zu Ihrer temporären Tabelle hinzu.

Um die gerade eingefügten Daten anzuzeigen, verwenden Sie die Anweisung SELECT. Das Sternchen (*) ist ein Platzhalter, der "alle Spalten" bedeutet.

SELECT * FROM temp_employees;

Dieser Befehl ruft alle Spalten und Zeilen aus der Tabelle temp_employees ab. Die Ausgabe sollte die von Ihnen eingefügten Daten anzeigen:

+----+---------------+------------+
| id | name          | department |
+----+---------------+------------+
|  1 | Alice Smith   | Sales      |
|  2 | Bob Johnson   | Marketing  |
|  3 | Charlie Brown | IT         |
+----+---------------+------------+
3 rows in set (0.00 sec)

Sie können die Ergebnisse auch mit einer WHERE-Klausel filtern. Um beispielsweise nur die Mitarbeiter in der Abteilung 'IT' zu finden, führen Sie die folgende Abfrage aus:

SELECT name FROM temp_employees WHERE department = 'IT';

Die Ausgabe zeigt nur den Namen des Mitarbeiters an, der der Bedingung entspricht:

+---------------+
| name          |
+---------------+
| Charlie Brown |
+---------------+
1 row in set (0.00 sec)

Dies zeigt, dass Standardoperationen zur Datenmanipulation und Abfrage wie erwartet auf temporären Tabellen funktionieren.

Gültigkeitsbereich temporärer Tabellen verstehen

Ein Hauptmerkmal von temporären Tabellen ist ihr sitzungsspezifischer Gültigkeitsbereich (scope). Das bedeutet, dass eine temporäre Tabelle, die in einer MySQL-Sitzung erstellt wurde, in einer anderen nicht sichtbar oder zugänglich ist, selbst wenn beide Sitzungen mit derselben Datenbank verbunden sind. Dieser Schritt wird dieses Verhalten demonstrieren.

Lassen Sie Ihre aktuelle MySQL-Sitzung im ersten Terminalfenster geöffnet.

Öffnen Sie nun ein neues Terminalfenster. Dies können Sie tun, indem Sie mit der rechten Maustaste auf den Desktop-Hintergrund klicken und "Terminal hier öffnen" auswählen.

Verbinden Sie sich in diesem neuen Terminal erneut mit dem MySQL-Server. Dies erstellt eine zweite, unabhängige Sitzung.

sudo mysql -u root

Nachdem Sie den Befehl ausgeführt haben, sollten Sie die MySQL-Eingabeaufforderung sehen, die wie mysql> aussieht. Dies zeigt an, dass Sie erfolgreich mit dem MySQL-Server verbunden sind und nun SQL-Befehle ausführen können.

Wählen Sie als Nächstes die Datenbank test aus.

USE test;

Sie haben nun zwei separate Terminals, jedes mit seiner eigenen MySQL-Sitzung. Versuchen Sie in dieser neuen Sitzung, die Tabelle temp_employees abzufragen, die Sie in der ersten Sitzung erstellt haben:

SELECT * FROM temp_employees;

Sie erhalten eine Fehlermeldung, da diese Sitzung keine Kenntnis von der temporären Tabelle hat, die in der anderen Sitzung erstellt wurde.

ERROR 1146 (42S02): Table 'test.temp_employees' doesn't exist

Dieser Fehler bestätigt, dass die Tabelle temp_employees auf die Sitzung beschränkt ist, in der sie erstellt wurde. Sie können auch versuchen, die Tabelle zu beschreiben, was zum selben Fehler führt.

DESCRIBE temp_employees;
ERROR 1146 (42S02): Table 'test.temp_employees' doesn't exist

Dieses Verhalten ist grundlegend für die Funktionsweise von temporären Tabellen und macht sie sicher für die Speicherung temporärer Daten, ohne andere Benutzer oder Prozesse zu beeinträchtigen.

Sie können dieses neue Terminalfenster nun schließen und zu Ihrem ursprünglichen Terminal zurückkehren.

Temporäre Tabelle löschen und Sitzung beenden

Temporäre Tabellen werden automatisch gelöscht, wenn die MySQL-Sitzung endet. Sie können eine temporäre Tabelle jedoch auch explizit mit der Anweisung DROP TEMPORARY TABLE löschen. Dies ist eine gute Vorgehensweise, wenn Sie die Tabelle vor dem Ende Ihrer Sitzung nicht mehr benötigen, da dadurch Ressourcen freigegeben werden.

Sie sollten sich wieder in Ihrem ursprünglichen Terminalfenster befinden, in dem die Tabelle temp_employees existiert.

Um die temporäre Tabelle explizit zu löschen, verwenden Sie den folgenden Befehl in der mysql> Eingabeaufforderung:

DROP TEMPORARY TABLE temp_employees;

Nach einem erfolgreichen Löschen sehen Sie die Meldung Query OK. Um zu bestätigen, dass die Tabelle entfernt wurde, versuchen Sie, sie erneut abzufragen:

SELECT * FROM temp_employees;

Sie sollten nun die Fehlermeldung "Table doesn't exist" erhalten, was bestätigt, dass die Tabelle in dieser Sitzung nicht mehr verfügbar ist.

ERROR 1146 (42S02): Table 'test.temp_employees' doesn't exist

Schließlich geben Sie zum Beenden Ihrer MySQL-Sitzung exit ein und drücken Sie Enter.

exit

Dadurch wird die Verbindung zum MySQL-Server geschlossen und Sie kehren zur normalen Terminal-Eingabeaufforderung zurück. Wenn Sie die temporäre Tabelle nicht explizit gelöscht hätten, wäre sie zu diesem Zeitpunkt automatisch entfernt worden.

Zusammenfassung

In diesem Lab haben Sie die Grundlagen der Arbeit mit temporären Tabellen in MySQL kennengelernt. Sie haben erfolgreich eine Verbindung zum MySQL-Server hergestellt, eine temporäre Tabelle mit CREATE TEMPORARY TABLE erstellt und sie mit Daten mittels INSERT INTO gefüllt. Anschließend haben Sie das Abrufen dieser Daten mit SELECT-Abfragen geübt.

Entscheidend war die Untersuchung des sitzungsspezifischen Gültigkeitsbereichs von temporären Tabellen, indem Sie gezeigt haben, dass sie für andere Sitzungen unsichtbar sind. Schließlich haben Sie gelernt, wie man eine temporäre Tabelle explizit mit DROP TEMPORARY TABLE entfernt, und verstanden, dass sie automatisch bereinigt werden, wenn eine Sitzung endet. Temporäre Tabellen sind ein wertvolles Werkzeug für die Verwaltung sitzungsspezifischer Daten und Zwischenergebnisse in Ihren Datenbank-Workflows.