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

Como truncar a tabela no MySQL


Às vezes, você pode precisar excluir todas as linhas de uma tabela no banco de dados MySQL. Existem várias maneiras de fazer isso usando as instruções TRUNCATE TABLE, DROP TABLE e DELETE. Neste artigo, veremos como truncar a tabela no MySQL usando a instrução MySQL TRUNCATE TABLE.


Como truncar tabela no MySQL


Veja como truncar a tabela no MySQL usando a instrução TRUNCATE TABLE. Aqui está a sintaxe da instrução MySQL TRUNCATE TABLE.
TRUNCATE [TABLE] table_name;

Na consulta acima, você precisa especificar o nome da sua tabela a ser truncada, no lugar de table_name.

A palavra-chave TABLE é opcional após TRUNCATE.

Bônus de leitura:MySQL DROP VIEW


Exemplos de TRUNCATE TABLE do MySQL


Digamos que você tenha a tabela pedidos em MySQL.
mysql> create table daily_orders(id int, order_date date,amount int);

mysql> insert into daily_orders(id, order_date, amount) 
       values(1, '2020-07-01',250),(2,'2020-07-02',320),
       (3,'2020-07-03',450);

mysql> select * from daily_orders;
+------+------------+--------+
| id   | order_date | amount |
+------+------------+--------+
|    1 | 2020-07-01 |    250 |
|    2 | 2020-07-02 |    320 |
|    3 | 2020-07-03 |    450 |
+------+------------+--------+

Aqui está a consulta SQL para truncar a tabela no MySQL.
mysql> truncate table daily_orders;

mysql> select * from daily_orders;
Empty set (0.00 sec)

Bônus de leitura:Como criar índice no MySQL


MySQL TRUNCATE vs DELETE


TRUNCATE TABLE é semelhante à instrução DELETE no MySQL. No entanto, existem algumas diferenças importantes. Aqui está a diferença entre TRUNCATE e DELETE no MySQL.

EXCLUIR MySQL

  • DELETE é uma instrução de linguagem de manipulação de dados (DML). Ele exclui uma linha por vez. Portanto, é executado usando o bloqueio de linha e cada linha é bloqueada para exclusão
  • As operações DELETE são registradas
  • Você pode especificar a cláusula WHERE na instrução DELETE para excluir apenas linhas específicas em sua tabela
  • DELETE é mais lento que truncate, pois as operações de exclusão são registradas

TRUNCATE MySQL

  • TRUNCATE é um comando de linguagem de descrição de dados (DDL) que bloqueia a tabela para exclusão, mas não as linhas.
  • TRUNCATE remove todos os dados da tabela. Portanto, você não pode especificar a cláusula WHERE na instrução TRUNCATE.
  • As operações TRUNCATE não são registradas e, portanto, são muito mais rápidas que a instrução DELETE.

A reversão é possível nas instruções DELETE e TRUNCATE.

Bônus de leitura:Como criar um procedimento armazenado no MySQL


Como truncar a tabela com chave estrangeira


Se sua tabela tiver restrição de chave estrangeira, quando você executar a instrução TRUNCATE para essa tabela, receberá o seguinte erro.
ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key 
constraint fails

Então você precisa fazer login no MySQL e desabilitar as verificações de chave estrangeira antes de truncar tabelas, usando o seguinte comando
SET FOREIGN_KEY_CHECKS=0;

Depois de truncar tabelas, reative as verificações de chave estrangeira
SET FOREIGN_KEY_CHECKS=1;

Bônus de leitura:Como criar usuário no MySQL


Como truncar todas as tabelas no MySQL


MySQL TRUNCATE TABLE permite que você exclua apenas uma tabela por vez. Portanto, se você quiser excluir várias tabelas, precisará emitir comandos TRUNCATE TABLE separados. Aqui está um exemplo para truncar várias tabelas table1, table2, table3, …
mysql> TRUNCATE TABLE table1;
mysql> TRUNCATE TABLE table2;
mysql> TRUNCATE TABLE table3;

Bônus de leitura:Como criar banco de dados no MySQL

Aqui está uma consulta SQL para gerar várias instruções TRUNCATE TABLE, usando os nomes das tabelas em seu banco de dados. Substitua DATABASE_NAME na consulta a seguir pelo nome do seu banco de dados.
mysql> SELECT Concat('TRUNCATE TABLE ',table_schema,'.',TABLE_NAME, ';')
     FROM INFORMATION_SCHEMA.TABLES where  table_schema in ('sample');
+------------------------------------------------------------+
| Concat('TRUNCATE TABLE ',table_schema,'.',TABLE_NAME, ';') |
+------------------------------------------------------------+
| TRUNCATE TABLE sample.a;                                   |
| TRUNCATE TABLE sample.calendar;                            |
| TRUNCATE TABLE sample.categories;                          |
| TRUNCATE TABLE sample.daily_orders;                        |
| TRUNCATE TABLE sample.login;                               |
| TRUNCATE TABLE sample.meeting;                             |
| TRUNCATE TABLE sample.order_status;                        |
| TRUNCATE TABLE sample.orders;                              |
| TRUNCATE TABLE sample.orders2;                             |
| TRUNCATE TABLE sample.orders3;                             |
| TRUNCATE TABLE sample.product_sales;                       |
| TRUNCATE TABLE sample.products;                            |
| TRUNCATE TABLE sample.sales;                               |
| TRUNCATE TABLE sample.user_data;                           |
| TRUNCATE TABLE sample.users;                               |
+------------------------------------------------------------+

Use o resultado da consulta acima para truncar todas as tabelas no banco de dados. Espero que agora você possa truncar a tabela no MySQL

O Ubiq facilita a visualização de dados em minutos e o monitoramento em painéis em tempo real. Experimente hoje!