Excluir MySQL

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 DELETEinstrução permite excluir linhas de uma tabela e retorna o número de linhas excluídas.

Aqui está a sintaxe básica da DELETEinstruçã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 FROMpalavra-chave.
  • Segundo, especifique uma condição para determinar quais linhas serão excluídas na WHEREcláusula.

A WHEREcláusula é opcional. Se você omitir a WHEREcláusula, a DELETEinstruçã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 TABLEinstruçã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 CASCADEopção.

Exemplos de instruções DELETE do MySQL

Criaremos uma tabela chamada contactscom 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 DELETEinstrução para excluir uma única linha da contactstabela:

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 DELETEinstrução exclui a linha com id 1. Como a condição retorna apenas uma linha, a DELETEinstruçã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 contactscom 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 DELETEinstruçã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 DELETEinstrução com as cláusulas ORDER BYe :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 DELETEinstruçã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 DELETEinstrução sem WHEREcláusula para excluir todas as linhas da contactstabela:

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 contactstabela.

Se você recuperar dados da contactstabela, 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 DELETEinstrução para excluir uma ou mais linhas de uma tabela.
  • Use a DELETEinstrução sem WHEREcláusula para excluir todas as linhas de uma tabela.
  • Use a DELETEinstrução com uma LIMITcláusula para excluir várias linhas de uma tabela.

Deixe um comentário

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