UPDATE în MySQL

Adăugare, modificare, ștergere Toate versiunile MySQL și MariaDB

Modifică valorile din rândurile existente ale unui tabel.

Sintaxă
UPDATE tabel SET coloana1 = valoare1, coloana2 = valoare2 WHERE conditie;

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. Clientul mysql pornit cu --safe-updates refuză astfel de comenzi.
  • Scrii SET pret = 100 AND stoc = 5. Coloanele se separă prin virgulă, nu prin AND. Cu AND, MySQL calculează o expresie logică și pune 0 sau 1 în pret.

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