TABELA DE QUEDA MySQL – 02

Resumo : neste tutorial, você aprenderá como usar a DROP TABLEinstrução MySQL para eliminar uma tabela do banco de dados.

DROP TABLESintaxe de instrução MySQL

Para remover tabelas existentes, você usa a DROP TABLEinstrução MySQL.

Aqui está a sintaxe básica da DROP TABLEinstrução:

DROP [TEMPORARY] TABLE [IF EXISTS] table_name [, table_name] ...
[RESTRICT | CASCADE]Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A DROP TABLEinstrução remove uma tabela e seus dados permanentemente do banco de dados. No MySQL, você também pode remover várias tabelas usando uma única DROP TABLEinstrução, cada tabela é separada por uma vírgula (,).

A TEMPORARYopção permite remover apenas tabelas temporárias . Ele garante que você não remova acidentalmente tabelas não temporárias.

A IF EXISTSopção descarta condicionalmente uma tabela somente se ela existir. Se você eliminar uma tabela inexistente com a IF EXISTSopção, o MySQL gerará uma NOTA, que pode ser recuperada usando a SHOW WARNINGSinstrução.

Observe que a DROP TABLEinstrução apenas elimina tabelas. Ele não remove privilégios de usuário específicos associados às tabelas. Portanto, se você criar uma tabela com o mesmo nome da tabela eliminada, o MySQL aplicará os privilégios existentes à nova tabela, o que pode representar um risco de segurança.

As opções RESTRICTe CASCADE  são reservadas para versões futuras do MySQL.

Para executar a DROP TABLEinstrução, você deve ter DROPprivilégios na tabela que deseja remover.

DROP TABLEExemplos de MySQL

Vejamos alguns exemplos de uso da DROP TABLEdeclaração.

1) Usando o MySQL DROP TABLE para eliminar um exemplo de tabela única

Primeiro, crie uma tabela nomeada insurancespara fins de teste:

CREATE TABLE insurances (
    id INT AUTO_INCREMENT,
    title VARCHAR(100) NOT NULL,
    effectiveDate DATE NOT NULL,
    duration INT NOT NULL,
    amount DEC(10 , 2 ) NOT NULL,
    PRIMARY KEY(id)
);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Segundo, use o DROP TABLEpara excluir a insurancestabela:

DROP TABLE insurances;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

2) Usando MySQL DROP TABLE para eliminar múltiplas tabelas

Primeiro, crie duas tabelas chamadas CarAccessoriese CarGadgets:

CREATE TABLE CarAccessories (
    id INT AUTO_INCREMENT,
    name VARCHAR(100) NOT NULL,
    price DEC(10 , 2 ) NOT NULL,
    PRIMARY KEY(id)
);

CREATE TABLE CarGadgets (
    id INT AUTO_INCREMENT,
    name VARCHAR(100) NOT NULL,
    price DEC(10 , 2 ) NOT NULL,
    PRIMARY KEY(id)
);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Segundo, use a DROP TABLEinstrução para eliminar as duas tabelas:

DROP TABLE CarAccessories, CarGadgets;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

3) Usando MySQL DROP TABLE para eliminar uma tabela inexistente

Esta instrução tenta eliminar uma tabela inexistente:

DROP TABLE aliens;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

MySQL emitiu o seguinte erro:

Error Code: 1051. Unknown table 'classicmodels.aliens'
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

No entanto, se você usar a IF EXISTSopção na DROP TABLEdeclaração:

DROP TABLE IF EXISTS aliens;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Em vez disso, o MySQL emitiu um aviso:

0 row(s) affected, 1 warning(s): 1051 Unknown table 'classicmodels.aliens'
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Para mostrar o aviso, você pode usar a SHOW WARNINGSinstrução:

SHOW WARNINGS;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
MySQL DROP TABLE remove tabela inexistente

MySQL DROP TABLE baseado em um padrão

Suponha que você tenha muitas tabelas cujos nomes começam com testem seu banco de dados e queira remover todas elas usando uma única DROP TABLEinstrução.

Infelizmente, o MySQL não possui a DROP TABLE LIKEinstrução que pode remover tabelas com base na correspondência de padrões:

DROP TABLE LIKE '%pattern%'Linguagem de código:  JavaScript  ( javascript )

No entanto, existem algumas soluções alternativas. Discutiremos um deles aqui para sua referência.

Primeiro, crie três tabelas test1, test2, test4para demonstração:

CREATE TABLE test1(
  id INT AUTO_INCREMENT,
  PRIMARY KEY(id)
);

CREATE TABLE IF NOT EXISTS test2 LIKE test1;
CREATE TABLE IF NOT EXISTS test3 LIKE test1;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Suponha que você queira remover todas test*as tabelas.

Segundo, declare duas variáveis ​​que aceitam o esquema do banco de dados e um padrão que você deseja que as tabelas correspondam:

-- set table schema and pattern matching for tables
SET @schema = 'classicmodels';
SET @pattern = 'test%';Linguagem de código:  CSS  ( css )

Terceiro, construa uma DROP TABLEdeclaração dinâmica:

-- construct dynamic sql (DROP TABLE tbl1, tbl2...;)
SELECT CONCAT('DROP TABLE ',GROUP_CONCAT(CONCAT(@schema,'.',table_name)),';')
INTO @droplike
FROM information_schema.tables
WHERE @schema = database()
AND table_name LIKE @pattern;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A consulta instrui o MySQL a ir para a tabela information_schema, que contém informações sobre todas as tabelas em todos os bancos de dados, e concatena todas as tabelas no banco de dados @schema( classicmodels ) que correspondem ao padrão @pattern ( test%) com o prefixo DROP TABLE . A GROUP_CONCATfunção cria uma lista de tabelas separadas por vírgulas.

Quarto, exiba o SQL dinâmico para verificar se funciona corretamente:

-- display the dynamic sql statement
SELECT @droplike;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
tabela suspensa mysql como

Como você pode ver, o resultado é o que esperávamos.

Quinto, execute a instrução usando uma instrução preparada  conforme mostrado na consulta a seguir:

-- execute dynamic sql
PREPARE stmt FROM @droplike;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Juntando tudo.

-- set table schema and pattern matching for tables
SET @schema = 'classicmodels';
SET @pattern = 'test%';

-- build dynamic sql (DROP TABLE tbl1, tbl2...;)
SELECT CONCAT('DROP TABLE ',GROUP_CONCAT(CONCAT(@schema,'.',table_name)),';')
INTO @droplike
FROM information_schema.tables
WHERE @schema = database()
AND table_name LIKE @pattern;

-- display the dynamic sql statement
SELECT @droplike;

-- execute dynamic sql
PREPARE stmt FROM @droplike;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Portanto, se você deseja eliminar várias tabelas que possuem um padrão específico em um banco de dados, basta usar o script acima para economizar tempo.

Tudo que você precisa fazer é substituir o padrão e o esquema do banco de dados@pattern em variáveis @schema.

Se você tiver que lidar com essa tarefa com frequência, poderá desenvolver um procedimento armazenado baseado no script e reutilizá-lo.

Neste tutorial, você aprendeu como usar a DROP TABLEinstrução MySQL para remover tabelas existentes de um banco de dados.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *