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

Como verificar se uma tabela já existe antes de criá-la no MySQL


No MySQL, você pode usar o IF NOT EXISTS cláusula do CREATE TABLE para verificar se já existe uma tabela com o mesmo nome no banco de dados.

Se a tabela não existir, ela será criada. Se já existir, não será criado.

Exemplo


Fica assim:
CREATE TABLE IF NOT EXISTS t1 (
  c1 INT,
  c2 VARCHAR(10)
);

Onde t1 é o nome da tabela e tudo entre os parênteses é a definição da tabela (ou seja, colunas, etc).

Nesse caso, a tabela só será criada se ainda não houver uma chamada t1 .

Verifique se a tabela já existe


Podemos usar o sys.table_exists() procedimento para verificar se a tabela agora existe:
CALL sys.table_exists('test', 't1', @table_type); 
SELECT @table_type;

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

Aqui, test é o nome do banco de dados e t1 é o nome da tabela que estou verificando a existência.

Neste caso, o resultado é BASE TABLE o que significa que a tabela existe.

Esta é apenas uma das muitas maneiras de verificar se existe uma tabela no MySQL.

Tente criar a tabela novamente


Agora, se tentarmos criar essa tabela novamente:
CREATE TABLE IF NOT EXISTS t1 (
  c1 INT,
  c2 VARCHAR(10)
);

Não recebemos um erro:
Query OK, 0 rows affected, 1 warning (0.00 sec)

Mas recebemos um aviso.

Então vamos verificar o aviso:
SHOW WARNINGS;

Resultado:
+-------+------+---------------------------+
| Level | Code | Message                   |
+-------+------+---------------------------+
| Note  | 1050 | Table 't1' already exists |
+-------+------+---------------------------+

Como esperado, ele nos diz que a tabela já existe.

Sem o IF NOT EXISTS Cláusula


Veja o que acontece quando não usamos o IF NOT EXISTS cláusula ao tentar criar uma tabela que já existe:
CREATE TABLE t1 (
  c1 INT,
  c2 VARCHAR(10)
);

Desta vez recebemos um erro:
ERROR 1050 (42S01): Table 't1' already exists

É importante observar que o IF NOT EXISTS cláusula não verifica a estrutura/definição da tabela. Ele simplesmente verifica se não há nenhuma tabela existente com o mesmo nome que estamos tentando dar à tabela que estamos criando.

Em outras palavras, só porque uma tabela com esse nome já existe, não significa que ela tenha a definição correta.