UPDATE упит

UPDATE упити служе као што им име сугерише за промјену вриједности у већ постојећим редовима табела. INSERT убацује ред у табелу, DELETE брише ред и UPDATE мијења.

Генерална структура UPDATE упита је следећа:

UPDATE <ime tabele čije podatke mjenjamo>
SET <kolona1>=<nova vrijednost1>, <kolona2>=<nova vrijednost2>, <kolona3>=<nova vrijednost3>
WHERE <uslov koji kaže na koje redove ovo primjenjujemo>

Примјер: Имамо следећу табелу под називом Tabela1:

ID Naziv KlasaID Cijena
7 Abcd 4 17
8 Defg 3 22
9 Wxyz 4 7

Желимо да направимо упит којиме ћемо код свих редова код којих је KlasaID 4 промјенити цијену на 15 и KlasaID на 7.

Рјешење:

UPDATE Tabela1
SET KlasaID=7, Cijena=15
WHERE KlasaID=4

Примјетити да смо у SET секцији дефинисали нове вриједности које ће бити примјењене на одређене редове табеле. Сваки пар колона-нова вриједност је раздвојен од осталих са зарезом.

На које ће колоне ово бити примјењено одређено је у WHERE упиту. И ако погледамо табелу послије овог нашег UPDATE упита она би требало да изгледа овако:

ID Naziv KlasaID Cijena
7 Abcd 7 15
8 Defg 3 22
9 Wxyz 7 15

Као што се и види сви редови код којих је услов био тачан су измјењени на нове вриједности.

Честе грешке

Не навођење услова

Ако се не наведе услов сегмент упита упит ће бити извршен на СВЕ редове табеле. Следећи упит ће у СВИМ редовима промјенити телефон у ABC.

UPDATE Shippers
SET Phone="ABC"

Не раздвајање нових вриједности зарезима

Овакав упит: 

UPDATE Shippers
SET ShipperName="DEF" Phone="111-222"
WHERE ShipperID=1

изазваће грешку: "Error 1: could not prepare statement (1 near "Phone": syntax error)". Као што грешка каже проблем је близу Phone, а тачније проблем је што нема зареза између нове вриједности за ShipperName и Phone.

Правилан упит:

UPDATE Shippers
SET ShipperName="DEF" Phone="111-222"
WHERE ShipperID=1

Стављање вриједности без да се одреде колоне

UPDATE Shippers
SET "DEF" "111-222"
WHERE ShipperID=1

Компјутери нису видовити да могу да погоде шта ви желите да урадите са овим вриједностима. Требају се тачно навести једнакости којима се дају вриједности колонама.

UPDATE Shippers
SET ShipperName="DEF", Phone="111-222"
WHERE ShipperID=1

Последња измена: недеља, 10. мај 2020, 16:14