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.