Ce face DELETE
DELETE șterge toate rândurile care îndeplinesc condiția din WHERE. Ștergerea este definitivă, dacă nu lucrezi într-o tranzacție.
Fără WHERE, sunt șterse toate rândurile din tabel. Verifică întâi cu un SELECT ce rânduri vor fi șterse. Pentru a goli complet un tabel mare, TRUNCATE TABLE este mai rapid.
Parametri
| Parametru | Descriere |
|---|---|
WHERE conditie |
Rândurile șterse. |
Exemple
Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.
CREATE TABLE produse (
id INT PRIMARY KEY,
nume VARCHAR(50) NOT NULL,
categorie VARCHAR(30),
pret INT,
stoc INT
);
INSERT INTO produse VALUES
(1, 'Laptop', 'Electronice', 3500, 4),
(2, 'Mouse', 'Electronice', 80, 25),
(3, 'Birou', 'Mobilier', 900, 0),
(4, 'Scaun', 'Mobilier', 650, 7),
(5, 'Monitor', 'Electronice', 1200, 3);
Exemplul 1: Ștergerea unui rând
DELETE FROM produse WHERE id = 3;
SELECT id, nume FROM produse;
Rezultat
+----+---------+
| id | nume |
+----+---------+
| 1 | Laptop |
| 2 | Mouse |
| 4 | Scaun |
| 5 | Monitor |
+----+---------+
Exemplul 2: Verificare cu SELECT, apoi ștergere
SELECT COUNT(*) FROM produse WHERE stoc = 0;
DELETE FROM produse WHERE stoc = 0;
SELECT COUNT(*) FROM produse;
Rezultat
+----------+
| COUNT(*) |
+----------+
| 1 |
+----------+
+----------+
| COUNT(*) |
+----------+
| 4 |
+----------+
Greșeli frecvente
- Rulezi
DELETE FROM produsefărăWHEREși golești tabelul. - Ștergi un rând de care depind alte tabele. Cu o cheie străină, MySQL refuză ștergerea sau, cu
ON DELETE CASCADE, șterge și rândurile legate.
Comenzi înrudite
WHERE: Filtrează rândurile: păstrează doar rândurile care îndeplinesc o condiție.UPDATE: Modifică valorile din rândurile existente ale unui tabel.START TRANSACTION / COMMIT / ROLLBACK: Grupează mai multe modificări: fie se aplică toate (COMMIT), fie niciuna (ROLLBACK).DROP TABLE / TRUNCATE: Șterge un tabel cu totul (DROP) sau doar toate rândurile lui (TRUNCATE).