Stavek UPDATE uporabljamo za spreminjanje obstoječih podatkov v tabeli. Z njim lahko popravimo eno vrstico, več vrstic ali vse vrstice v tabeli.
Pri spreminjanju podatkov je najpomembnejši pogoj WHERE, saj določa, katere vrstice se bodo spremenile. Če pogoj izpustimo, se sprememba lahko izvede nad vsemi vrsticami v tabeli.
Pomni: Stavek UPDATE ne dodaja novih zapisov in jih ne briše, ampak spreminja vrednosti v že obstoječih zapisih.
Pred izvedbo stavka UPDATE je priporočljivo najprej z enakim pogojem izvesti stavek SELECT. Tako preverimo, katere vrstice bodo spremenjene.
Vsebina strani
Osnovna pravila
Pri stavku UPDATE moramo določiti tabelo, stolpec oziroma stolpce, nove vrednosti in pogoj, ki pove, katere vrstice želimo spremeniti.
UPDATEdoloča tabelo, v kateri spreminjamo podatke.SETdoloča stolpce in njihove nove vrednosti.WHEREdoloča pogoj za izbiro vrstic, ki bodo spremenjene.- Besedilne vrednosti zapišemo med enojne narekovaje, na primer
'Slovenija'. - Številske vrednosti običajno zapišemo brez narekovajev.
- Če pogoj
WHEREmanjka, se lahko spremenijo vse vrstice v tabeli.
Pozor: Stavek UPDATE brez pogoja WHERE spremeni vse vrstice v tabeli. Tak ukaz uporabimo samo takrat, ko je to res namen poizvedbe.
Osnovna sintaksa stavka UPDATE
Osnovna oblika stavka je:
UPDATE ime_tabele
SET stolpec_1 = vrednost_1
WHERE pogoj;
Za besedo UPDATE napišemo ime tabele, za besedo SET določimo stolpec in njegovo novo vrednost, pogoj WHERE pa določa, katere vrstice želimo spremeniti.
Spreminjanje ene vrstice
Če pogoj določa en sam zapis, se spremeni samo ena vrstica. V naslednjem primeru spremenimo vrednost stolpca bdp v tabeli drzave, kjer je vrednost stolpca drzava enaka Slovenija:
UPDATE drzave
SET bdp = 10
WHERE drzava = 'Slovenija';
Pri spreminjanju ene vrstice je pogosto najvarneje uporabiti glavni ključ, na primer stolpec id ali drug enoličen identifikator.
Pomni: Najvarneje je spreminjati podatke po stolpcu, ki enolično določa zapis. Tako se zmanjša možnost, da bi se po pomoti spremenilo več zapisov.
Spreminjanje več stolpcev hkrati
Z enim stavkom UPDATE lahko spremenimo tudi več stolpcev. Posamezne dodelitve v delu SET ločimo z vejicami.
UPDATE dijaki
SET ime = 'Ana',
priimek = 'Novak'
WHERE id = 5;
V tem primeru se pri zapisu z vrednostjo id = 5 spremenita stolpca ime in priimek.
UPDATE brez pogoja WHERE
Če izpustimo pogoj WHERE, se sprememba izvede nad vsemi vrsticami v tabeli.
UPDATE dijaki
SET oddelek = '4a';
Ta ukaz spremeni vrednost stolpca oddelek v vseh zapisih tabele dijaki.
Pri stavku UPDATE je pogoj WHERE ključnega pomena. Manjkajoč ali napačen pogoj lahko spremeni napačne podatke.
Uporaba DEFAULT
Če ima stolpec določeno privzeto vrednost, lahko vrednost nastavimo nazaj na privzeto vrednost z besedo DEFAULT.
UPDATE uporabniki
SET status = DEFAULT
WHERE id = 3;
V tem primeru se stolpec status pri uporabniku z vrednostjo id = 3 nastavi na svojo privzeto vrednost.
ORDER BY in LIMIT
Pri enotabelnem stavku UPDATE lahko uporabimo tudi ORDER BY in LIMIT. To je uporabno, kadar želimo spremeniti samo določeno število vrstic.
UPDATE dijaki
SET oddelek = '4b'
ORDER BY priimek
LIMIT 3;
Ta primer spremeni samo prve tri vrstice glede na razvrstitev po stolpcu priimek.
Pozor: Uporaba ORDER BY in LIMIT pri spreminjanju podatkov zahteva previdnost. Pred izvedbo je treba preveriti, katere vrstice bodo izbrane.
Varno preverjanje pred spreminjanjem
Preden izvedemo UPDATE, je dobro z enakim pogojem najprej preveriti, katere vrstice bomo spreminjali:
SELECT * FROM drzave
WHERE drzava = 'Slovenija';
UPDATE drzave
SET bdp = 10
WHERE drzava = 'Slovenija';
Tako zmanjšamo možnost, da bi po pomoti spremenili napačne podatke.
Primerjava možnosti pri UPDATE
Stavek UPDATE lahko uporabimo na različne načine. Pomembno je, da razumemo, koliko vrstic se spremeni in zakaj.
| Oblika | Kaj naredi | Primer |
|---|---|---|
UPDATE ... WHERE |
Spremeni samo vrstice, ki ustrezajo pogoju. | UPDATE drzave SET bdp = 10 WHERE drzava = 'Slovenija'; |
UPDATE brez WHERE |
Spremeni vse vrstice v tabeli. | UPDATE dijaki SET oddelek = '4a'; |
več stolpcev v SET |
V isti vrstici spremeni več vrednosti. | SET ime = 'Ana', priimek = 'Novak' |
SET ... = DEFAULT |
Stolpec nastavi na privzeto vrednost. | SET status = DEFAULT |
ORDER BY in LIMIT |
Spremeni omejeno število vrstic glede na izbrano razvrstitev. | ORDER BY priimek LIMIT 3 |
Priporočila
- Pred stavkom
UPDATEpreveri izbrane zapise z ukazomSELECT. - Za spreminjanje posameznega zapisa uporabi glavni ključ ali drug enoličen stolpec.
- Pri spreminjanju več stolpcev jasno loči posamezne dodelitve z vejicami.
- Ukaza
UPDATEbrezWHEREne uporabljaj, razen če želiš spremeniti vse zapise. - Pri pomembnih podatkih pred množičnim spreminjanjem naredi varnostno kopijo.
- Pri uporabi
ORDER BYinLIMITnajprej preveri, katere vrstice bi bile izbrane.
Pogoste napake
- Manjkajoč pogoj
WHERE, zaradi česar se spremenijo vse vrstice. - Napačen pogoj
WHERE, zaradi katerega se spremenijo napačni zapisi. - Manjkajoča vejica med več dodelitvami v delu
SET. - Besedilna vrednost ni zapisana med enojnimi narekovaji.
- Spreminjanje po stolpcu, ki ni enoličen, čeprav je bil namen spremeniti samo en zapis.
- Uporaba neustrezne vrednosti glede na podatkovni tip stolpca.
- Izvedba množičnega spreminjanja brez predhodnega preverjanja z ukazom
SELECT.
Pozor: Stavek UPDATE lahko spremeni veliko podatkov hkrati. Zato je pred izvedbo treba preveriti pogoj, izbrane zapise in vrednosti, ki se bodo zapisale v tabelo.