Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

4 maneiras de listar todas as tabelas em um banco de dados MySQL


Abaixo estão quatro maneiras de listar as tabelas em um banco de dados MySQL usando SQL ou a linha de comando.

O SHOW TABLES Comando


O SHOW TABLES O comando lista o não-TEMPORARY tabelas e visualizações em um determinado banco de dados:
SHOW TABLES;

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

Isso listou todas as tabelas no banco de dados atual, que é chamado de Music .

Também podemos usar o FULL modificador para retornar uma segunda coluna que exibe o tipo:
SHOW FULL TABLES;

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

Podemos ver que a maioria dos resultados listados aqui são na verdade visualizações.

Se quisermos apenas que as tabelas base sejam retornadas, podemos usar um WHERE cláusula contra o Table_type coluna:
SHOW FULL TABLES
WHERE Table_type = 'BASE TABLE';

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

SHOW TABLES também aceita um LIKE cláusula que pode ser usada para restringir os resultados apenas às tabelas que correspondem a um determinado padrão:
SHOW TABLES
LIKE 'a%';

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

Neste caso eu retornei todas as tabelas que começam com a letra a .

O SHOW TABLE STATUS Comando


O SHOW TABLE STATUS comando é semelhante ao SHOW TABLES mas fornece informações mais extensas sobre cada um (não-TEMPORARY ) tabela.

Ele também aceita um WHERE e LIKE cláusula, como SHOW TABLES .

Exemplo:
SHOW TABLE STATUS
LIKE 'a%';

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

O information_schema.TABLES Tabela


Também podemos consultar o information_schema.TABLES tabela:
SELECT 
    TABLE_NAME
FROM 
    information_schema.TABLES 
WHERE 
    TABLE_SCHEMA LIKE 'Music' AND TABLE_TYPE LIKE 'BASE_TABLE';

Resultado:
+------------+
| TABLE_NAME |
+------------+
| Artists    |
| Genres     |
| Albums     |
+------------+

Consultando isso sem filtrar os resultados por TABLE_SCHEMA retorna tabelas de todos os bancos de dados. Da mesma forma, consultando sem filtrar por TABLE_TYPE retorna todos os tipos de tabela.

O mysqlshow Cliente


Outra maneira de fazer isso é com o mysqlshow Utilitário.

Para usar esta opção, abra um prompt de linha de comando/janela de terminal e execute o seguinte (substituindo music com o banco de dados em que você está interessado):
mysqlshow music;

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

Isso retorna exibições e tabelas.

A saída exibe apenas os nomes dos bancos de dados, tabelas ou colunas para os quais você tem alguns privilégios.

Se nenhum banco de dados for fornecido, uma lista de nomes de banco de dados será exibida. Se nenhuma tabela for fornecida, todas as tabelas correspondentes no banco de dados serão mostradas. Se nenhuma coluna for fornecida, todas as colunas e tipos de coluna correspondentes na tabela serão mostrados.

Se você receber um erro de “acesso negado”, pode ser necessário usar sudo e digite sua senha no prompt:
sudo mysqlshow music;

Este utilitário aceita algumas opções, como --user (para que você possa passar o nome de usuário), --password (para que você possa passar a senha), --host para o host no qual o servidor MySQL está localizado, etc.

Veja a documentação do MySQL para uma lista completa de opções.