Mysql
 sql >> Datenbank >  >> RDS >> Mysql

4 Möglichkeiten, alle Tabellen in einer MySQL-Datenbank aufzulisten

Nachfolgend finden Sie vier Möglichkeiten, die Tabellen in einer MySQL-Datenbank mit SQL oder der Befehlszeile aufzulisten.

Die SHOW TABLES Befehl

Die SHOW TABLES Befehl listet die Nicht-TEMPORARY auf Tabellen und Ansichten in einer gegebenen Datenbank:

SHOW TABLES;

Ergebnis:

+-----------------+
| Tables_in_music |
+-----------------+
| Albums          |
| Artists         |
| Genres          |
| valbumsartists  |
| valbumsgenres   |
| vallalbums      |
| vallartists     |
| vallgenres      |
+-----------------+

Das listet alle Tabellen in der aktuellen Datenbank auf, die Music heißt .

Wir können auch den FULL verwenden Modifikator, um eine zweite Spalte zurückzugeben, die den Typ anzeigt:

SHOW FULL TABLES;

Ergebnis:

+-----------------+------------+
| Tables_in_music | Table_type |
+-----------------+------------+
| Albums          | BASE TABLE |
| Artists         | BASE TABLE |
| Genres          | BASE TABLE |
| valbumsartists  | VIEW       |
| valbumsgenres   | VIEW       |
| vallalbums      | VIEW       |
| vallartists     | VIEW       |
| vallgenres      | VIEW       |
+-----------------+------------+

Wir können sehen, dass die meisten der hier aufgelisteten Ergebnisse tatsächlich Aufrufe sind.

Wenn nur Basistabellen zurückgegeben werden sollen, können wir ein WHERE verwenden -Klausel gegen den Table_type Spalte:

SHOW FULL TABLES
WHERE Table_type = 'BASE TABLE';

Ergebnis:

+-----------------+------------+
| Tables_in_music | Table_type |
+-----------------+------------+
| Albums          | BASE TABLE |
| Artists         | BASE TABLE |
| Genres          | BASE TABLE |
+-----------------+------------+

SHOW TABLES akzeptiert auch ein LIKE -Klausel, die verwendet werden kann, um die Ergebnisse auf nur die Tabellen einzugrenzen, die einem bestimmten Muster entsprechen:

SHOW TABLES
LIKE 'a%';

Ergebnis:

+----------------------+
| Tables_in_music (a%) |
+----------------------+
| Albums               |
| Artists              |
+----------------------+

In diesem Fall habe ich alle Tabellen zurückgegeben, die mit dem Buchstaben a beginnen .

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 ) Tisch.

Es akzeptiert auch ein WHERE und LIKE Klausel, wie SHOW TABLES .

Beispiel:

SHOW TABLE STATUS
LIKE 'a%';

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 | 2022-02-15 09:10:36 | NULL        | NULL       | utf8mb4_0900_ai_ci |     NULL |                |         |
| Artists | InnoDB |      10 | Dynamic    |   16 |           1024 |       16384 |               0 |            0 |         0 |             17 | 2021-11-13 12:56:02 | NULL        | NULL       | utf8mb4_0900_ai_ci |     NULL |                |         |
+---------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+

Die information_schema.TABLES Tabelle

Wir können auch die information_schema.TABLES abfragen Tabelle:

SELECT 
    TABLE_NAME
FROM 
    information_schema.TABLES 
WHERE 
    TABLE_SCHEMA LIKE 'Music' AND TABLE_TYPE LIKE 'BASE_TABLE';

Ergebnis:

+------------+
| TABLE_NAME |
+------------+
| Artists    |
| Genres     |
| Albums     |
+------------+

Abfrage ohne Filterung der Ergebnisse nach TABLE_SCHEMA gibt Tabellen aus allen Datenbanken zurück. In ähnlicher Weise kann es abgefragt werden, ohne nach TABLE_TYPE zu filtern gibt alle Tabellentypen zurück.

Die mysqlshow Kunde

Eine andere Möglichkeit ist die Verwendung von mysqlshow Nützlichkeit.

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

mysqlshow music;

Ergebnis:

+----------------+
|     Tables     |
+----------------+
| Albums         |
| Artists        |
| Genres         |
| valbumsartists |
| valbumsgenres  |
| vallalbums     |
| vallartists    |
| vallgenres     |
+----------------+

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, wird eine Liste mit Datenbanknamen 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.

Wenn Sie die Fehlermeldung „Zugriff verweigert“ erhalten, müssen Sie möglicherweise sudo verwenden , und geben Sie an der Eingabeaufforderung Ihr Passwort ein:

sudo mysqlshow music;

Dieses Dienstprogramm akzeptiert einige Optionen, wie zum Beispiel --user (damit Sie den Benutzernamen übergeben können), --password (damit Sie das Passwort übergeben können), --host für den Host, auf dem sich der MySQL-Server befindet usw.

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