Aqui estão quatro maneiras de verificar se existe ou não uma tabela em um banco de dados MariaDB.
O information_schema.TABLES
Tabela
O
information_schema.TABLES
tabela contém informações sobre os vários não-TEMPORARY
tabelas (exceto tabelas do banco de dados Information Schema) e visualizações no servidor. Aqui está um exemplo de consulta a esta tabela:
SELECT
TABLE_SCHEMA,
TABLE_NAME,
TABLE_TYPE
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'PetHouse' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Pets';
Resultado:
+--------------+------------+------------+ | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | +--------------+------------+------------+ | PetHouse | pets | BASE TABLE | +--------------+------------+------------+
Aqui, retornei a tabela base chamada
Pets
do banco de dados chamado PetHouse
. 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 'PetHouse' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Pets'
);
Resultado:
1
Ou podemos obter a contagem:
SELECT COUNT(TABLE_NAME)
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'PetHouse' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Pets';
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. 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_pethouse LIKE 'Pets';
Resultado:
+--------------------+------------+ | Tables_in_pethouse | Table_type | +--------------------+------------+ | Pets | BASE TABLE | +--------------------+------------+
Neste caso, o nome do banco de dados é
pethouse
, e assim a primeira coluna é Tables_in_pethouse
. 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. Exemplo:
SHOW TABLE STATUS
FROM PetHouse
WHERE Name = 'Pets';
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 | Max_index_length | Temporary | +------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+------------------+-----------+ | Pets | InnoDB | 10 | Dynamic | 8 | 2048 | 16384 | 0 | 32768 | 0 | NULL | 2021-04-01 15:42:43 | NULL | NULL | utf8mb4_general_ci | NULL | | | 0 | N | +------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+------------------+-----------+
O mariadb-show
Cliente
Outra maneira de fazer isso é com o
mariadb-show
Utilitário. Para usar esta opção, abra um prompt de linha de comando/janela de terminal e execute o seguinte (substituindo
pethouse
com o banco de dados em que você está interessado):mariadb-show pethouse;
Resultado:
+---------------+ | Tables | +---------------+ | Owners | | PetTypes | | Pets | | vownercount | | vpetcount | | vpetsowners | | vpetstypes | | vpettypecount | +---------------+
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, 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.
O cliente também pode ser executado como
mysqlshow
:mysqlshow pethouse;
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), etc. Consulte a documentação do MariaDB para obter uma lista completa de opções.
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 criar uma tabela apenas se ela não existir no MariaDB para obter um exemplo.