SQL izmena podataka (UPDATE)

Uneti podaci se mogu izmeniti korišćenjem iskaza UPDATE. U ovom upitu se navode polja koja želimo da izmenimo i nove vrednosti koje ubacujemo. Možemo izmeniti sva ili samo neka polja u tabeli.

UPDATE [tabela] SET polje=vrednost, polje=vrednost...

Vodite računa da zadate vrednosti moraju odgovarati tipovima podataka.

Ako kreiramo UPDATE iskaz na ovakav način, odnosiće se na sve redove tabele. U praksi, gotovo uvek koristimo izmenu podataka za one redove koji zadovoljavaju određeni uslov. Da bismo to postigli, dodajemo klauzulu WHERE, slično kao za SELECT upit.

UPDATE [tabela] SET polje=vrednost, polje=vrednost... WHERE uslov

Vrednost polja ne mora da bude samo konstanta već i rezultat MySQL funkcije, kao i izraz u kome učestvuje postojeća vrednost tog ili nekog drugog polja.

Primer

Pogledajmo najpre primer u kome ima smisla navesti UPDATE iskaz bez zadavanja uslova. Recimo da se bavimo prodajom kompjuterske opreme. Imamo tabelu komponente i u njoj podatke o opremi. Primećujemo da imamo nabavnu cenu, ali kada smo unosili podatke nismo znali koja će biti prodajna cena. Trenutno stanje u tabeli je ovakvo:

id tip nabavna prodajna naziv
MT22 Monitor 390 0 Samsung LED 23"
HD51 Hard disk 180 0 WD 4TB
MM04 Memorija 34 0 Kingston DDR3 4GB
TS08 Tastatura 20 0 Genius USB Slim
MS28 Miš 15 0 Logitech USB Optic

Sada znamo da će se ta cena formirati kada na nabavnu cenu dodamo 20% i tu promenu treba da uradimo za sve podatke u tabeli. Primenićemo ovakav upit:


  UPDATE komponente
  SET prodajna = nabavna * 1.2

Ovaj primer je specifičan i po tome što nismo zadali neku konkretnu vrednost kao podatak koji se unosi u polje, već smo zadali vrednost kao izraz. Znači da će baza podataka "proći" kroz sve redove tabele (naravno, pošto nismo "filtrirali" redove pomoću WHERE klauzule) i u svakom redu uzeti vrednost iz polja nabavna, pomnožiti je sa 1.2 i tu vrednost ubaciti u polje prodajna. (Kada želimo da izračunamo vrednost uvećanu za 20%, dovoljno je da je pomnožimo sa 1.2).

id tip nabavna prodajna naziv
MT22 Monitor 390 468 Samsung LED 23"
HD51 Hard disk 180 216 WD 4TB
MM04 Memorija 34 40.8 Kingston DDR3 4GB
TS08 Tastatura 20 24 Genius USB Slim
MS28 Miš 15 18 Logitech USB Optic

Hajde sada da izmenimo par polja u jednom redu tabele:


  UPDATE komponente
  SET tip='HDD', naziv='WD 4TB/64MB'
  WHERE id='HD51'

Ovaj put smo "hirurški precizno" izmenili samo jedan red tabele, pošto smo zadali WHERE klauzulu sa uslovom koji filtrira samo jedan red tabele. Logično, zato što smo zadali vrednost primernog ključa id koji i jeste jedinstven u tabeli.

Zadali smo nove vrednosti za polja tip i naziv, i posle ovog upita situacija je sledeća:

id tip nabavna prodajna naziv
MT22 Monitor 390 468 Samsung LED 23"
HD51 HDD 180 216 WD 4TB/64MB
MM04 Memorija 34 40.8 Kingston DDR3 4GB
TS08 Tastatura 20 24 Genius USB Slim
MS28 Miš 15 18 Logitech USB Optic
Svi elementi sajta Web'n'Study, osim onih za koje je navedeno da su u javnom vlasništvu, vlasništvo su autora i ne smeju se koristiti, u celosti ili delimično bez pismenog odobrenja autora. To uključuje tekstove, slike, ilustracije, animacije, prateći grafički materijal i programski kod.
Ovaj sajt koristi tehnologiju kolačića (cookies). Detaljnije o tome možete pročitati u tekstu o našoj politici privatnosti.