Hier sind fünf Möglichkeiten, um zu überprüfen, ob eine Tabelle in einer MySQL-Datenbank existiert oder nicht.
Die table_exists() Verfahren
In MySQL die sys.table_exists() Stored Procedure testet, ob eine gegebene Tabelle als reguläre Tabelle existiert, eine TEMPORARY Tabelle oder eine Ansicht. Die Prozedur gibt den Tabellentyp in einem OUT zurück Parameter.
Beispiel:
CALL sys.table_exists('Music', 'Albums', @table_type);
SELECT @table_type; Ergebnis:
+-------------+ | @table_type | +-------------+ | BASE TABLE | +-------------+
Beachten Sie, dass, wenn sowohl eine temporäre als auch eine permanente Tabelle mit dem angegebenen Namen vorhanden sind, TEMPORARY zurückgegeben wird.
Die information_schema.TABLES Tabelle
Eine andere Möglichkeit zu prüfen, ob eine Tabelle existiert, ist die Abfrage von information_schema.TABLES Tabelle:
SELECT
TABLE_SCHEMA,
TABLE_NAME,
TABLE_TYPE
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'music' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Artists'; Ergebnis:
+--------------+------------+------------+ | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | +--------------+------------+------------+ | Music | Artists | BASE TABLE | +--------------+------------+------------+
In diesem Fall habe ich die Basistabelle namens Artists zurückgegeben aus der Datenbank namens music . Abfrage ohne Filterung der Ergebnisse nach TABLE_SCHEMA gibt Basistabellen aus allen Datenbanken zurück. Abfrage ohne Filterung nach TABLE_TYPE gibt alle Tabellentypen zurück.
Wenn wir all diese Informationen nicht benötigen, können wir Folgendes tun:
SELECT EXISTS (
SELECT
TABLE_NAME
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'music' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Artists'
); Ergebnis:
1
Oder wir könnten die Anzahl abrufen:
SELECT COUNT(TABLE_NAME)
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'music' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Artists'; Ergebnis:
+-------------------+ | COUNT(TABLE_NAME) | +-------------------+ | 1 | +-------------------+
Die SHOW TABLES Befehl
Die SHOW TABLES Befehl listet die Nicht-TEMPORARY auf Tabellen, Sequenzen und Views in einer gegebenen MySQL-Datenbank. Wir können das WHERE verwenden -Klausel, um sie auf einen bestimmten Typ einzugrenzen.
Wir können auch den FULL verwenden Modifikator, um eine zweite Spalte zurückzugeben, die den Typ anzeigt:
SHOW FULL TABLES
WHERE Table_Type LIKE 'BASE TABLE'
AND Tables_in_music LIKE 'Albums'; Ergebnis:
+-----------------+------------+ | Tables_in_music | Table_type | +-----------------+------------+ | Albums | BASE TABLE | +-----------------+------------+
In diesem Fall lautet der Datenbankname music , also ist die erste Spalte Tables_in_music .
Der SHOW TABLE STATUS Befehl
In MySQL der SHOW TABLE STATUS Der Befehl ähnelt dem SHOW TABLES Befehl, bietet aber ausführlichere Informationen zu jedem (nicht-TEMPORARY )-Tabelle.
Beispiel:
SHOW TABLE STATUS
FROM Music
WHERE Name = 'Albums'; Ergebnis:
+--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+ | Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment | +--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+ | Albums | InnoDB | 10 | Dynamic | 20 | 819 | 16384 | 0 | 32768 | 0 | 21 | 2021-11-13 12:56:02 | 2021-11-13 12:56:13 | NULL | utf8mb4_0900_ai_ci | NULL | | | +--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+
Die mysqlshow Kunde
Eine andere Möglichkeit, die Tabellen in einer MySQL-Datenbank zu überprüfen, ist die Verwendung von mysqlshow Klient.
Um dieses Dienstprogramm zu verwenden, öffnen Sie eine Eingabeaufforderung/ein Terminalfenster und führen Sie Folgendes aus:
mysqlshow --user root --password music;
Achten Sie darauf, music zu ersetzen mit der Datenbank, an der Sie interessiert sind, und root mit dem entsprechenden Benutzer. Das --password Bit führt dazu, dass der Benutzer nach dem Passwort gefragt wird.
Ergebnis:
Enter password: Database: music +----------------+ | Tables | +----------------+ | Albums | | Artists | | Genres | | valbumsartists | | valbumsgenres | | vallalbums | | vallartists | | vallgenres | +----------------+
Die mysqlshow Client gibt Ansichten und Tabellen zurück.
Die Ausgabe zeigt nur die Namen der Datenbanken, Tabellen oder Spalten an, für die der Benutzer einige Berechtigungen hat.
Wenn keine Datenbank angegeben ist, werden alle passenden Datenbanken angezeigt. Wenn keine Tabelle angegeben ist, werden alle passenden Tabellen in der Datenbank angezeigt. Wenn keine Spalte angegeben ist, werden alle passenden Spalten und Spaltentypen in der Tabelle angezeigt.
Überprüfen Sie, ob eine Tabelle bereits existiert, bevor Sie sie erstellen
Wenn Sie die Tabelle erstellen müssen, wenn sie nicht existiert, können Sie den IF NOT EXISTS verwenden -Klausel von CREATE TABLE Erklärung. Wenn die Tabelle nicht existiert, wird sie erstellt. Wenn es bereits existiert, wird es nicht erstellt.
Ein Beispiel finden Sie unter So prüfen Sie, ob eine Tabelle bereits existiert, bevor Sie sie in MySQL erstellen.