DROP TABLE (Português)

Sintaxe

DROP TABLE tbl_name ... 

Descrição

DROP TABLE remove uma ou mais tabelas. Você deve ter o DROP privilegefor cada tabela. Todos os dados da tabela e a definição da tabela são removidos, bem como gatilhos associados à tabela, por isso tenha cuidado com esta afirmação! Se alguma das tabelas nomeadas na lista de argumentos não existir, MariaDB retorna um erro indicando pelo nome que o tablesit não-existente não foi capaz de cair, mas também retira todas as tabelas na lista que doexist.,

importante: quando uma tabela é retirada, os privilégios de utilizador na tabela não são automaticamente retirados. Vê o GRANT.

Se outro tópico estiver a usar a tabela numa transacção explícita ou numa transacção autocommit, então o tópico adquire um bloqueio de meta-dados (MDL) na tabela. A instrução DROP TABLE irá esperar no estado de “Waiting for table metadata lock” até que o MDL seja lançado. MDLs são liberados nos seguintes casos:

  • Se uma MDL é adquirida em uma transação explícita, então a MDL será liberada quando a transação terminar.,
  • Se uma MDL é adquirida em uma transação de autocommit, então a MDL será liberada quando a declaração terminar.as tabelas transacionais e não transacionais são tratadas da mesma forma.

Note que para uma tabela particionada, DROP TABLE remove permanentemente a tabledefinition, todas as suas partições, e todos os dados que foram armazenados inthose partições. Ele também remove a definição de particionamento (.par) fileassociado com a mesa abandonada.

para cada tabela referenciada, DROP TABLE deixa cair uma tabela temporária com esse nome, se existir., Se não existir, e o TEMPORARY keyword não for usado, ele deixa cair uma tabela não-Temporária com o mesmo nome, se existir. A palavra-chave

garante que uma tabela não-temporária não será acidentalmente derrubada.

UseIF EXISTS para evitar que ocorra um erro nas tabelas que não existem. A NOTE é gerada para cada tabela inexistente ao usarIF EXISTS. Veja mostrar os avisos.

Se uma chave estrangeira referencia esta tabela, a tabela não pode ser retirada., Neste caso, é necessário largar primeiro a chave estrangeira.

RESTRICTeCASCADE podem facilitar a transmissão a partir de outros sistemas de bases de dados. Em MariaDB, eles não fazem nada.

O Comentário antes dos nomes das tabelas (/*COMMENT TO SAVE*/) é armazenado no log binário. Esse recurso pode ser usado por ferramentas de replicação para enviar suas mensagens internas.

é possível especificar os nomes das tabelas como db_name.tab_name. Isto é útil para excluir tabelas de várias bases de dados com uma declaração., Veja os qualificadores de identificação para mais detalhes.

A privilégio de gota é necessária para usar DROP TABLE em tabelas não temporárias. Para tabelas temporárias, nenhum privilégio é necessário, porque tais tabelas só são visíveis para a sessão atual.

Nota: DROP TABLE comete automaticamente a transacção activa actual,a menos que use oTEMPORARY palavra-chave.

MariaDB começando com 10.5.4

de MariaDB 10.5.,4, DROP TABLE remove fiavelmente restos de tabela dentro de um motor de armazenamento, mesmo que o arquivo.frm esteja em falta. Antes disso, um arquivo em falta .frm resultaria na falha da declaração.

MariaDB começando com 10. 3. 1

espera/NOWAIT

define o tempo-limite de espera do bloqueio. Espera e espera.

DROP TABLE em replicação

DROP TABLE tem as seguintes características de replicação:

  • DROP TABLE IF EXISTS são sempre registados.,
  • DROP TABLE sem SE EXISTE para tabelas que não existem não são escritos no log binário.
  • largando deTEMPORARY as tabelas são prefixadas no log comTEMPORARY . Estas gotas só são registadas ao executar a instrução ou a replicação em modo misto.,
  • Um DROP TABLE instrução pode ser conectado com até 3 diferentes DROP instruções:
    • DROP TABELA TEMPORÁRIA list_of_non_transactional_temporary_tables
    • DROP TABELA TEMPORÁRIA list_of_transactional_temporary_tables
    • DROP TABLE list_of_normal_tables

Começando do MariaDB 10.0.,8, DROP TABLE no mestre é tratada no slave DROP TABLE IF EXISTS. Você pode mudar isso ao definir o modo slave-ddl-exec para STRICT.

largando um #sql -… Table

If the mysqld process is killed during an ALTER TABLE you may find a table named #sql -… no seu directório de dados. Em MariaDB 10.3, as tabelas InnoDB com este prefixo serão apagadas automaticamente durante startup.In MariaDB 10.4 garantiremos que estas tabelas temporárias serão sempre apagadas automaticamente.,

Se você deseja excluir uma dessas tabelas, explicitamente, você pode fazer isso usando a seguinte sintaxe:

DROP TABLE `#mysql50##sql-...`;

durante a execução de uma ALTER TABLE…ALGORITHM=INPLACE que reconstrói a tabela, o InnoDB irá criar um interno #sql-ib tabela. Para estas tabelas, o arquivo .frm será chamado de outra coisa. Para largar tal tabela depois de um estoiro no servidor, terá de mudar o nome do ficheiro #sql*.frm para corresponder ao ficheiro #sql-ib*.ibd.,

largando todas as tabelas numa base de dados

a melhor maneira de largar todas as tabelas numa base de dados é executando DROP DATABASE, que irá largar a própria base de dados, e todas as tabelas nela contidas.

no entanto, se quiser largar todas as tabelas na base de dados, mas também quiser manter a base de dados em si e quaisquer outros objectos Não-tabelas nela, então terá de executar DROP TABLE para largar cada tabela individual. Você pode construir estes DROP TABLE comandos consultando o TABLES tabela information_schema banco de dados., Por exemplo:

SELECT CONCAT('DROP TABLE IF EXISTS `', TABLE_SCHEMA, '`.`', TABLE_NAME, '`;')FROM information_schema.TABLESWHERE TABLE_SCHEMA = 'mydb';

Exemplos

DROP TABLE Employees, Customers;

Notas

tenha em atenção que DROP TABLE pode soltar ambas as tabelas e sequências. Isto é feito principalmente para permitir ferramentas antigas como mysqldump para trabalhar com sequências.

Ver também

  • Criar tabela
  • alterar tabela
  • mostrar Criar tabela
  • sequência de queda
  • variável slave-ddl-exec-mode.

Leave a Comment