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.