Resumo : neste tutorial, você aprenderá como usar a instrução MySQL DELETE para excluir linhas de uma tabela e retornar o número de linhas excluídas.
Introdução à instrução DELETE do MySQL
A DELETE
instrução permite excluir linhas de uma tabela e retorna o número de linhas excluídas.
Aqui está a sintaxe básica da DELETE
instrução:
DELETE FROM table_name
WHERE condition;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta sintaxe:
- Primeiro, especifique a tabela da qual você exclui os dados após a
FROM
palavra-chave. - Segundo, especifique uma condição para determinar quais linhas serão excluídas na
WHERE
cláusula.
A WHERE
cláusula é opcional. Se você omitir a WHERE
cláusula, a DELETE
instrução excluirá todas as linhas da tabela:
DELETE FROM table_name;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Observe que para excluir dados de várias tabelas relacionadas, você usa a instrução DELETE JOIN .
Quando você precisar remover todas as linhas de uma tabela grande e não precisar saber o número exato de linhas excluídas, deverá usar a TRUNCATE TABLE
instrução para obter melhor desempenho.
Em uma tabela que possui uma restrição de chave estrangeira , quando você exclui linhas da tabela pai, o MySQL exclui automaticamente as linhas da tabela filha se a chave estrangeira usar a ON DELETE CASCADE
opção.
Exemplos de instruções DELETE do MySQL
Criaremos uma tabela chamada contacts
com alguns dados de exemplo para demonstração:
CREATE TABLE contacts (
id INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
email VARCHAR(100) UNIQUE,
phone VARCHAR(20)
);
INSERT INTO contacts (first_name, last_name, email, phone)
VALUES
('John', 'Doe', '[email protected]', '123-456-7890'),
('Jane', 'Smith', '[email protected]', '987-654-3210'),
('Alice', 'Doe', '[email protected]', '555-123-4567'),
('Bob', 'Johnson', '[email protected]', '789-321-6540'),
('Eva', 'Doe', '[email protected]', '111-222-3333'),
('Michael', 'Smith', '[email protected]', '444-555-6666'),
('Sophia', 'Johnson', '[email protected]', '777-888-9999'),
('Matthew', 'Doe', '[email protected]', '333-222-1111'),
('Olivia', 'Smith', '[email protected]', '999-888-7777'),
('Daniel', 'Johnson', '[email protected]', '666-555-4444'),
('Emma', 'Doe', '[email protected]', '222-333-4444'),
('William', 'Smith', '[email protected]', '888-999-0000'),
('Ava', 'Johnson', '[email protected]', '111-000-9999'),
('Liam', 'Doe', '[email protected]', '444-777-3333'),
('Mia', 'Smith', '[email protected]', '222-444-8888'),
('James', 'Johnson', '[email protected]', '555-666-1111'),
('Grace', 'Doe', '[email protected]', '777-222-8888'),
('Benjamin', 'Smith', '[email protected]', '999-111-3333'),
('Chloe', 'Johnson', '[email protected]', '111-444-7777'),
('Logan', 'Doe', '[email protected]', '333-555-9999');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
1) Excluir um exemplo de linha
O exemplo a seguir usa a DELETE
instrução para excluir uma única linha da contacts
tabela:
DELETE FROM contacts
WHERE id = 1;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
Query OK, 1 row affected (0.01 sec)
Linguagem de código: CSS ( css )
Neste exemplo, a DELETE
instrução exclui a linha com id 1. Como a condição retorna apenas uma linha, a DELETE
instrução excluiu uma única linha.
A saída indica que uma linha foi excluída.
2) Exemplo de exclusão de várias linhas
A instrução a seguir recupera o contacts
com o sobrenome Smith
:
SELECT * FROM contacts
WHERE last_name = 'Smith';
Linguagem de código: JavaScript ( javascript )
Saída:
+----+------------+-----------+--------------------------+--------------+
| id | first_name | last_name | email | phone |
+----+------------+-----------+--------------------------+--------------+
| 2 | Jane | Smith | [email protected] | 987-654-3210 |
| 6 | Michael | Smith | [email protected] | 444-555-6666 |
| 9 | Olivia | Smith | [email protected] | 999-888-7777 |
| 12 | William | Smith | [email protected] | 888-999-0000 |
| 15 | Mia | Smith | [email protected] | 222-444-8888 |
| 18 | Benjamin | Smith | [email protected] | 999-111-3333 |
+----+------------+-----------+--------------------------+--------------+
6 rows in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
Ele retorna 6 linhas.
Para excluir essas 6 linhas, você pode usar a seguinte DELETE
instrução:
DELETE FROM contacts
WHERE last_name = 'Smith';
Linguagem de código: JavaScript ( javascript )
Saída:
Query OK, 6 rows affected (0.01 sec)
Linguagem de código: CSS ( css )
A saída indica que 6 linhas foram excluídas.
3) Usando a instrução MySQL DELETE com cláusula LIMIT
A instrução a seguir recupera os contatos e os classifica pelos primeiros nomes:
SELECT * FROM contacts
ORDER BY first_name;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+----+------------+-----------+--------------------------+--------------+
| id | first_name | last_name | email | phone |
+----+------------+-----------+--------------------------+--------------+
| 3 | Alice | Doe | [email protected] | 555-123-4567 |
| 13 | Ava | Johnson | [email protected] | 111-000-9999 |
| 4 | Bob | Johnson | [email protected] | 789-321-6540 |
| 19 | Chloe | Johnson | [email protected] | 111-444-7777 |
| 10 | Daniel | Johnson | [email protected] | 666-555-4444 |
| 11 | Emma | Doe | [email protected] | 222-333-4444 |
| 5 | Eva | Doe | [email protected] | 111-222-3333 |
| 17 | Grace | Doe | [email protected] | 777-222-8888 |
| 16 | James | Johnson | [email protected] | 555-666-1111 |
| 14 | Liam | Doe | [email protected] | 444-777-3333 |
| 20 | Logan | Doe | [email protected] | 333-555-9999 |
| 8 | Matthew | Doe | [email protected] | 333-222-1111 |
| 7 | Sophia | Johnson | [email protected] | 777-888-9999 |
+----+------------+-----------+--------------------------+--------------+
13 rows in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
Para excluir as três primeiras linhas, você pode usar a DELETE
instrução com as cláusulas ORDER BY
e :LIMIT
DELETE FROM table_table
ORDER BY sort_expression
LIMIT row_count;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Por exemplo, o exemplo a seguir usa a DELETE
instrução para excluir os três primeiros contatos classificados pelos primeiros nomes:
DELETE FROM contacts
ORDER BY first_name
LIMIT 3;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
Query OK, 3 rows affected (0.00 sec)
Linguagem de código: CSS ( css )
4) Usando a instrução MySQL DELETE para excluir todas as linhas
O exemplo a seguir usa a DELETE
instrução sem WHERE
cláusula para excluir todas as linhas da contacts
tabela:
DELETE FROM contacts;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
Query OK, 10 rows affected (0.01 sec)
Linguagem de código: CSS ( css )
A instrução excluiu todas as linhas (10 linhas) da contacts
tabela.
Se você recuperar dados da contacts
tabela, verá um conjunto de resultados vazio:
SELECT * FROM contacts;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
Empty set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
Resumo
- Use a
DELETE
instrução para excluir uma ou mais linhas de uma tabela. - Use a
DELETE
instrução semWHERE
cláusula para excluir todas as linhas de uma tabela. - Use a
DELETE
instrução com umaLIMIT
cláusula para excluir várias linhas de uma tabela.