Resumo : neste tutorial, você aprenderá como usar a TRUNCATE TABLE
instrução MySQL para excluir todos os dados de uma tabela.
Introdução à instrução MySQL TRUNCATE TABLE
No MySQL, a TRUNCATE TABLE
instrução permite excluir todas as linhas de uma tabela.
Aqui está a sintaxe básica da TRUNCATE TABLE
instrução:
TRUNCATE [TABLE] table_name;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta sintaxe, você especifica o nome da tabela da qual deseja excluir todas as linhas após as TRUNCATE TABLE
palavras-chave.
A TABLE
palavra-chave é opcional. No entanto, é uma boa prática usar a TABLE
palavra-chave para distinguir entre a TRUNCATE TABLE
instrução e a TRUNCATE()
função.
Se houver alguma FOREIGN KEY
restrição de outras tabelas que façam referência à tabela que você truncou, a TRUNCATE TABLE
instrução falhará.
Como uma operação truncada causa um commit implícito, ela não pode ser revertida. Além disso, a TRUNCATE TABLE
instrução não dispara DELETE
gatilhos associados à tabela que está sendo truncada.
A TRUNCATE TABLE
instrução redefine o valor na coluna AUTO_INCREMENT para seu valor inicial se a tabela tiver uma AUTO_INCREMENT
coluna.
Ao contrário de uma DELETE
instrução, o número de linhas afetadas pela TRUNCATE TABLE
instrução é 0, o que deve ser interpretado como nenhuma informação.
Funcionalmente, a TRUNCATE TABLE
instrução é como uma DELETE
instrução sem WHERE
cláusula que exclui todas as linhas de uma tabela:
DELETE FROM table_name;
Ou uma sequência de instruções DROP TABLE
e CREATE TABLE
:
DROP TABLE table_name;
CREATE TABLE table_name (
/* ... */
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
No entanto, a TRUNCATE TABLE
instrução é mais eficiente que a DELETE
instrução porque descarta e recria a tabela em vez de excluir as linhas uma por uma.
Exemplo de TRUNCATE TABLE MySQL
Vejamos um exemplo de uso da TRUNCATE TABLE
instrução.
Primeiro, crie uma nova tabela com o nome books
da demonstração:
CREATE TABLE books (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL
) ENGINE=INNODB;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Em seguida, insira dados fictícios na books
tabela usando o seguinte procedimento armazenado :
DELIMITER $$
CREATE PROCEDURE load_book_data(IN num INT(4))
BEGIN
DECLARE counter INT(4) DEFAULT 0;
DECLARE book_title VARCHAR(255) DEFAULT '';
WHILE counter < num DO
SET book_title = CONCAT('Book title #',counter);
SET counter = counter + 1;
INSERT INTO books(title)
VALUES(book_title);
END WHILE;
END$$
DELIMITER ;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Em seguida, carregue 10.000 linhas na books
tabela. Vai demorar algum tempo.
CALL load_book_data(10000);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Depois disso, verifique os dados da books
tabela:
SELECT * FROM books;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Finalmente, use a TRUNCATE TABLE
instrução para excluir todas as linhas da books
tabela:
TRUNCATE TABLE books;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Observe que você pode comparar o desempenho do TRUNCATE TABLE
com a DELETE
instrução.
Resumo
- Use a
TRUNCATE TABLE
instrução para excluir todas as linhas de uma tabela com eficiência. - A
TRUNCATE TABLE
instrução redefine oAUTO_INCREMENT
contador.