sql >> Database teknologi >  >> RDS >> Mysql

4 måder at liste alle tabeller i en MySQL-database

Nedenfor er fire måder at vise tabellerne i en MySQL-database ved hjælp af SQL eller kommandolinjen.

SHOW TABLES Kommando

SHOW TABLES kommandoen viser den ikke-TEMPORARY tabeller og visninger i en given database:

SHOW TABLES;

Resultat:

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

Det listede alle tabeller i den aktuelle database, som kaldes Music .

Vi kan også bruge FULL modifikator for at returnere en anden kolonne, der viser typen:

SHOW FULL TABLES;

Resultat:

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

Vi kan se, at de fleste af resultaterne, der er anført her, faktisk er visninger.

Hvis vi kun ønsker, at basistabeller skal returneres, kan vi bruge en WHERE klausul mod Table_type kolonne:

SHOW FULL TABLES
WHERE Table_type = 'BASE TABLE';

Resultat:

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

SHOW TABLES accepterer også en LIKE klausul, der kan bruges til at indsnævre resultaterne til kun de tabeller, der matcher et givet mønster:

SHOW TABLES
LIKE 'a%';

Resultat:

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

I dette tilfælde returnerede jeg alle tabeller, der starter med bogstavet a .

SHOW TABLE STATUS Kommando

SHOW TABLE STATUS kommandoen ligner SHOW TABLES kommando, men giver mere omfattende information om hver (ikke-TEMPORARY). ) bord.

Den accepterer også en WHERE og LIKE klausul, som SHOW TABLES .

Eksempel:

SHOW TABLE STATUS
LIKE 'a%';

Resultat:

+---------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+
| 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 |                |         |
+---------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+

information_schema.TABLES Tabel

Vi kan også forespørge på information_schema.TABLES tabel:

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

Resultat:

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

Forespørger om dette uden at filtrere resultaterne efter TABLE_SCHEMA returnerer tabeller fra alle databaser. På samme måde kan du forespørge efter det uden at filtrere efter TABLE_TYPE returnerer alle tabeltyper.

mysqlshow Klient

En anden måde at gøre det på er med mysqlshow nytte.

For at bruge denne mulighed skal du åbne en kommandolinjeprompt/terminalvindue og køre følgende (erstat music med den database, du er interesseret i):

mysqlshow music;

Resultat:

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

Dette returnerer visninger og tabeller.

Outputtet viser kun navnene på de databaser, tabeller eller kolonner, som du har nogle privilegier til.

Hvis der ikke er angivet nogen database, vises en liste over databasenavne. Hvis der ikke er angivet nogen tabel, vises alle matchende tabeller i databasen. Hvis der ikke er angivet nogen kolonne, vises alle matchende kolonner og kolonnetyper i tabellen.

Hvis du får en "adgang nægtet"-fejl, skal du muligvis bruge sudo , og indtast din adgangskode ved prompten:

sudo mysqlshow music;

Dette værktøj accepterer en hel del muligheder, såsom --user (så du kan videregive brugernavnet), --password (så du kan videregive adgangskoden), --host for værten som MySQL-serveren er placeret på osv.

Se MySQLs dokumentation for en komplet liste over muligheder.


  1. Udfyldning af nuller til venstre i postgreSQL

  2. Sådan indsætter du data fra en databasetabel til en anden databasetabel i Mysql

  3. ORACLE - ORA-01843:ikke en gyldig måned

  4. MySQL "NOT IN" forespørgsel 3 tabeller