In MySQL können Sie den IF NOT EXISTS
verwenden -Klausel von CREATE TABLE
-Anweisung, um zu prüfen, ob eine gleichnamige Tabelle bereits in der Datenbank existiert.
Wenn die Tabelle nicht existiert, wird sie erstellt. Wenn es bereits existiert, wird es nicht erstellt.
Beispiel
Das geht so:
CREATE TABLE IF NOT EXISTS t1 (
c1 INT,
c2 VARCHAR(10)
);
Wobei t1
ist der Tabellenname, und alles zwischen den Klammern ist die Tabellendefinition (d. h. Spalten usw.).
In diesem Fall wird die Tabelle nur erstellt, wenn noch keine mit dem Namen t1
vorhanden ist .
Überprüfen Sie, ob die Tabelle jetzt existiert
Wir können sys.table_exists()
verwenden Prozedur, um zu prüfen, ob die Tabelle jetzt existiert:
CALL sys.table_exists('test', 't1', @table_type);
SELECT @table_type;
Ergebnis:
+-------------+ | @table_type | +-------------+ | BASE TABLE | +-------------+
Hier test
der Name der Datenbank ist und t1
ist der Name der Tabelle, deren Existenz ich überprüfe.
In diesem Fall ist das Ergebnis BASE TABLE
was bedeutet, dass die Tabelle existiert.
Dies ist nur eine von vielen Möglichkeiten, um zu überprüfen, ob eine Tabelle in MySQL existiert.
Versuchen Sie erneut, die Tabelle zu erstellen
Wenn wir nun versuchen, diese Tabelle erneut zu erstellen:
CREATE TABLE IF NOT EXISTS t1 (
c1 INT,
c2 VARCHAR(10)
);
Wir erhalten keinen Fehler:
Query OK, 0 rows affected, 1 warning (0.00 sec)
Aber wir bekommen eine Warnung.
Sehen wir uns also die Warnung an:
SHOW WARNINGS;
Ergebnis:
+-------+------+---------------------------+ | Level | Code | Message | +-------+------+---------------------------+ | Note | 1050 | Table 't1' already exists | +-------+------+---------------------------+
Wie erwartet teilt es uns mit, dass die Tabelle bereits existiert.
Ohne den IF NOT EXISTS
Klausel
Folgendes passiert, wenn wir IF NOT EXISTS
nicht verwenden -Klausel, wenn versucht wird, eine bereits vorhandene Tabelle zu erstellen:
CREATE TABLE t1 (
c1 INT,
c2 VARCHAR(10)
);
Dieses Mal erhalten wir einen Fehler:
ERROR 1050 (42S01): Table 't1' already exists
Es ist wichtig zu beachten, dass der IF NOT EXISTS
-Klausel überprüft nicht die Tabellenstruktur/-definition. Es überprüft einfach, ob es keine vorhandene Tabelle mit demselben Namen gibt, den wir der Tabelle zu geben versuchen, die wir erstellen.
Mit anderen Worten, nur weil eine Tabelle mit diesem Namen bereits existiert, bedeutet das nicht, dass sie die richtige Definition hat.