MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

4 Möglichkeiten, um zu überprüfen, ob eine Tabelle in MariaDB existiert

Hier sind vier Möglichkeiten, um zu prüfen, ob eine Tabelle in einer MariaDB-Datenbank existiert oder nicht.

Die information_schema.TABLES Tabelle

Die information_schema.TABLES Tabelle enthält Informationen über die verschiedenen Nicht-TEMPORARY Tabellen (außer Tabellen aus der Information Schema-Datenbank) und Ansichten auf dem Server.

Hier ist ein Beispiel für die Abfrage dieser Tabelle:

SELECT 
   TABLE_SCHEMA, 
   TABLE_NAME,
   TABLE_TYPE
FROM 
   information_schema.TABLES 
WHERE 
   TABLE_SCHEMA LIKE 'PetHouse' AND 
	TABLE_TYPE LIKE 'BASE TABLE' AND
	TABLE_NAME = 'Pets';

Ergebnis:

+--------------+------------+------------+
| TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE |
+--------------+------------+------------+
| PetHouse     | pets       | BASE TABLE |
+--------------+------------+------------+

Hier habe ich die Basistabelle mit dem Namen Pets zurückgegeben aus der Datenbank namens PetHouse . 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 'PetHouse' AND 
        TABLE_TYPE LIKE 'BASE TABLE' AND
        TABLE_NAME = 'Pets'
    );

Ergebnis:

1

Oder wir könnten die Anzahl abrufen:

SELECT COUNT(TABLE_NAME)
FROM 
   information_schema.TABLES 
WHERE 
   TABLE_SCHEMA LIKE 'PetHouse' AND 
	TABLE_TYPE LIKE 'BASE TABLE' AND
	TABLE_NAME = 'Pets';

Ergebnis:

+-------------------+
| COUNT(TABLE_NAME) |
+-------------------+
|                 1 |
+-------------------+

Die SHOW TABLES Befehl

Die SHOW TABLES Befehl listet die Nicht-TEMPORARY auf Tabellen, Sequenzen und Ansichten in einer bestimmten 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_pethouse LIKE 'Pets';

Ergebnis:

+--------------------+------------+
| Tables_in_pethouse | Table_type |
+--------------------+------------+
| Pets               | BASE TABLE |
+--------------------+------------+

In diesem Fall ist der Datenbankname pethouse , also ist die erste Spalte Tables_in_pethouse .

Der SHOW TABLE STATUS Befehl

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 PetHouse
WHERE Name = 'Pets';

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 | Max_index_length | Temporary |
+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+------------------+-----------+
| Pets | InnoDB |      10 | Dynamic    |    8 |           2048 |       16384 |               0 |        32768 |         0 |           NULL | 2021-04-01 15:42:43 | NULL        | NULL       | utf8mb4_general_ci |     NULL |                |         |                0 | N         |
+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+------------------+-----------+

Die mariadb-show Kunde

Eine andere Möglichkeit ist die mariadb-show Nützlichkeit.

Um diese Option zu verwenden, öffnen Sie eine Eingabeaufforderung/ein Terminalfenster und führen Sie Folgendes aus (ersetzen Sie dabei pethouse mit der Datenbank, an der Sie interessiert sind):

mariadb-show pethouse;

Ergebnis:

+---------------+
|    Tables     |
+---------------+
| Owners        |
| PetTypes      |
| Pets          |
| vownercount   |
| vpetcount     |
| vpetsowners   |
| vpetstypes    |
| vpettypecount |
+---------------+

Dies gibt Ansichten und Tabellen zurück.

Die Ausgabe zeigt nur die Namen der Datenbanken, Tabellen oder Spalten an, für die Sie einige Berechtigungen haben.

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.

Der Client kann auch als mysqlshow ausgeführt werden :

mysqlshow pethouse;

Dieses Dienstprogramm akzeptiert einige Optionen, wie zum Beispiel --user (damit Sie den Benutzernamen übergeben können), --password (damit Sie das Passwort weitergeben können) usw.

Eine vollständige Liste der Optionen finden Sie in der MariaDB-Dokumentation.

Ü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 erstellen Sie eine Tabelle nur, wenn sie in MariaDB nicht vorhanden ist.