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

5 maneiras de verificar se existe uma tabela no MySQL


Aqui estão cinco maneiras de verificar se uma tabela existe ou não em um banco de dados MySQL.

A table_exists() Procedimento


No MySQL, o sys.table_exists() procedimento armazenado testa se uma determinada tabela existe como uma tabela regular, um TEMPORARY mesa ou uma vista. O procedimento retorna o tipo de tabela em um OUT parâmetro.

Exemplo:
CALL sys.table_exists('Music', 'Albums', @table_type); 
SELECT @table_type;

Resultado:
+-------------+
| @table_type |
+-------------+
| BASE TABLE  |
+-------------+

Observe que, se existir uma tabela temporária e uma permanente com o nome fornecido, TEMPORARY é devolvido.

O information_schema.TABLES Tabela


Outra maneira de verificar se existe uma tabela é consultar o information_schema.TABLES tabela:
SELECT 
   TABLE_SCHEMA, 
   TABLE_NAME,
   TABLE_TYPE
FROM 
   information_schema.TABLES 
WHERE 
   TABLE_SCHEMA LIKE 'music'    AND 
	TABLE_TYPE LIKE 'BASE TABLE' AND
	TABLE_NAME = 'Artists';

Resultado:
+--------------+------------+------------+
| TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE |
+--------------+------------+------------+
| Music        | Artists    | BASE TABLE |
+--------------+------------+------------+

Neste caso, retornei a tabela base chamada Artists do banco de dados chamado music . Consultando isso sem filtrar os resultados por TABLE_SCHEMA retorna tabelas base de todos os bancos de dados. Consultando sem filtrar por TABLE_TYPE retorna todos os tipos de tabela.

Se não precisarmos de todas essas informações, podemos fazer isso:
SELECT EXISTS (
    SELECT 
        TABLE_NAME
    FROM 
    information_schema.TABLES 
    WHERE 
    TABLE_SCHEMA LIKE 'music' AND 
        TABLE_TYPE LIKE 'BASE TABLE' AND
        TABLE_NAME = 'Artists'
    );

Resultado:
1

Ou podemos obter a contagem:
SELECT COUNT(TABLE_NAME)
FROM 
   information_schema.TABLES 
WHERE 
   TABLE_SCHEMA LIKE 'music' AND 
	TABLE_TYPE LIKE 'BASE TABLE' AND
	TABLE_NAME = 'Artists';

Resultado:
+-------------------+
| COUNT(TABLE_NAME) |
+-------------------+
|                 1 |
+-------------------+

O SHOW TABLES Comando


O SHOW TABLES O comando lista o não-TEMPORARY tabelas, sequências e visualizações em um determinado banco de dados MySQL. Podemos usar o WHERE cláusula para reduzi-lo a um determinado tipo.

Também podemos usar o FULL modificador para retornar uma segunda coluna que exibe o tipo:
SHOW FULL TABLES
WHERE Table_Type LIKE 'BASE TABLE'
AND Tables_in_music LIKE 'Albums';

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

Neste caso, o nome do banco de dados é music , e assim a primeira coluna é Tables_in_music .

O SHOW TABLE STATUS Comando


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

Exemplo:
SHOW TABLE STATUS
FROM Music
WHERE Name = 'Albums';

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 | 2021-11-13 12:56:02 | 2021-11-13 12:56:13 | NULL       | utf8mb4_0900_ai_ci |     NULL |                |         |
+--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+

O mysqlshow Cliente


Outra maneira de verificar as tabelas em um banco de dados MySQL é usar o mysqlshow cliente.

Para usar este utilitário, abra um prompt de linha de comando/janela de terminal e execute o seguinte:
mysqlshow --user root --password music;

Certifique-se de substituir music com o banco de dados em que você está interessado e root com o usuário aplicável. A --password bit resulta na solicitação da senha ao usuário.

Resultado:
Enter password: 
Database: music
+----------------+
|     Tables     |
+----------------+
| Albums         |
| Artists        |
| Genres         |
| valbumsartists |
| valbumsgenres  |
| vallalbums     |
| vallartists    |
| vallgenres     |
+----------------+

O mysqlshow cliente retorna visualizações e tabelas.

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

Se nenhum banco de dados for fornecido, todos os bancos de dados correspondentes serão mostrados. 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.

Verifique se já existe uma tabela antes de criá-la


Se você precisar criar a tabela se ela não existir, você pode usar o IF NOT EXISTS cláusula do CREATE TABLE demonstração. Se a tabela não existir, ela será criada. Se já existir, não será criado.

Veja Como verificar se uma tabela já existe antes de criá-la no MySQL para obter um exemplo.