Ce face UPDATE
UPDATE schimbă valorile coloanelor date în SET, pentru toate rândurile care îndeplinesc condiția din WHERE. Valoarea nouă poate fi calculată din cea veche, de exemplu stoc = stoc - 1.
Fără WHERE, sunt modificate toate rândurile din tabel. Înainte de un UPDATE important, rulează un SELECT cu aceeași condiție ca să vezi ce rânduri vor fi atinse.
Parametri
| Parametru | Descriere |
|---|---|
SET coloana = valoare |
Coloanele modificate și noile valori, separate prin virgulă. |
WHERE conditie |
Rândurile modificate. Practic obligatoriu. |
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: Modificarea unui singur rând
UPDATE produse SET pret = 3200, stoc = 6 WHERE id = 1;
SELECT * FROM produse WHERE id = 1;
Rezultat
+----+--------+-------------+------+------+
| id | nume | categorie | pret | stoc |
+----+--------+-------------+------+------+
| 1 | Laptop | Electronice | 3200 | 6 |
+----+--------+-------------+------+------+
Exemplul 2: Valoare calculată: o vânzare scade stocul
UPDATE produse SET stoc = stoc - 1 WHERE nume = 'Monitor';
SELECT nume, stoc FROM produse WHERE nume = 'Monitor';
Rezultat
+---------+------+
| nume | stoc |
+---------+------+
| Monitor | 2 |
+---------+------+
Exemplul 3: Mai multe rânduri deodată
UPDATE produse SET pret = pret + 50 WHERE categorie = 'Mobilier';
SELECT nume, pret FROM produse WHERE categorie = 'Mobilier';
Rezultat
+-------+------+
| nume | pret |
+-------+------+
| Birou | 950 |
| Scaun | 700 |
+-------+------+
Greșeli frecvente
- Uiți
WHEREși modifici tot tabelul. Clientulmysqlpornit cu--safe-updatesrefuză astfel de comenzi. - Scrii
SET pret = 100 AND stoc = 5. Coloanele se separă prin virgulă, nu prinAND. CuAND, MySQL calculează o expresie logică și pune 0 sau 1 înpret.
Comenzi înrudite
WHERE: Filtrează rândurile: păstrează doar rândurile care îndeplinesc o condiție.INSERT INTO: Adaugă unul sau mai multe rânduri noi într-un tabel.DELETE: Șterge rânduri dintr-un tabel.START TRANSACTION / COMMIT / ROLLBACK: Grupează mai multe modificări: fie se aplică toate (COMMIT), fie niciuna (ROLLBACK).