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

4 modi per elencare tutte le tabelle in un database MySQL

Di seguito sono riportati quattro modi per elencare le tabelle in un database MySQL utilizzando SQL o la riga di comando.

Gli SHOW TABLES Comando

Il SHOW TABLES il comando elenca il non-TEMPORARY tabelle e viste in un determinato database:

SHOW TABLES;

Risultato:

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

Ciò elencava tutte le tabelle nel database corrente, che si chiama Music .

Possiamo anche usare il FULL modificatore per restituire una seconda colonna che mostra il tipo:

SHOW FULL TABLES;

Risultato:

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

Possiamo vedere che la maggior parte dei risultati qui elencati sono in realtà visualizzazioni.

Se vogliamo che vengano restituite solo le tabelle di base, possiamo usare un WHERE clausola contro il Table_type colonna:

SHOW FULL TABLES
WHERE Table_type = 'BASE TABLE';

Risultato:

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

SHOW TABLES accetta anche un LIKE clausola che può essere utilizzata per restringere i risultati solo a quelle tabelle che corrispondono a un determinato modello:

SHOW TABLES
LIKE 'a%';

Risultato:

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

In questo caso ho restituito tutte le tabelle che iniziano con la lettera a .

Lo SHOW TABLE STATUS Comando

Lo SHOW TABLE STATUS il comando è simile a SHOW TABLES comando ma fornisce informazioni più estese su ciascuno (non-TEMPORARY ) tavolo.

Accetta anche un WHERE e LIKE clausola, come SHOW TABLES .

Esempio:

SHOW TABLE STATUS
LIKE 'a%';

Risultato:

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

Il information_schema.TABLES Tabella

Possiamo anche interrogare il information_schema.TABLES tabella:

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

Risultato:

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

Interrogazione senza filtrare i risultati per TABLE_SCHEMA restituisce le tabelle da tutti i database. Allo stesso modo, interrogandolo senza filtrare per TABLE_TYPE restituisce tutti i tipi di tabella.

Il mysqlshow Cliente

Un altro modo per farlo è con mysqlshow utilità.

Per utilizzare questa opzione, apri un prompt della riga di comando/una finestra del terminale ed esegui quanto segue (sostituendo music con il database che ti interessa):

mysqlshow music;

Risultato:

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

Ciò restituisce viste e tabelle.

L'output mostra solo i nomi di quei database, tabelle o colonne per i quali disponi di alcuni privilegi.

Se non viene fornito alcun database, viene visualizzato un elenco di nomi di database. Se non viene fornita alcuna tabella, vengono visualizzate tutte le tabelle corrispondenti nel database. Se non viene fornita alcuna colonna, vengono visualizzate tutte le colonne e i tipi di colonna corrispondenti nella tabella.

Se ricevi un errore di "accesso negato", potrebbe essere necessario utilizzare sudo , e inserisci la tua password quando richiesto:

sudo mysqlshow music;

Questa utility accetta alcune opzioni, come --user (in modo da poter passare il nome utente), --password (in modo da poter passare la password), --host per l'host su cui si trova il server MySQL, ecc.

Consulta la documentazione di MySQL per un elenco completo delle opzioni.