Načrtovanje in razvoj spletnih aplikacij

Urejanje podatkov - UPDATE

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.

  • UPDATE določa tabelo, v kateri spreminjamo podatke.
  • SET določa stolpce in njihove nove vrednosti.
  • WHERE določ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 WHERE manjka, 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 UPDATE preveri izbrane zapise z ukazom SELECT.
  • Za spreminjanje posameznega zapisa uporabi glavni ključ ali drug enoličen stolpec.
  • Pri spreminjanju več stolpcev jasno loči posamezne dodelitve z vejicami.
  • Ukaza UPDATE brez WHERE ne uporabljaj, razen če želiš spremeniti vse zapise.
  • Pri pomembnih podatkih pred množičnim spreminjanjem naredi varnostno kopijo.
  • Pri uporabi ORDER BY in LIMIT najprej 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.