SQL Academy · Oppitunti

UPDATE FROM- ja JOIN-tyylisillä päivityksillä

Päivittäkää rivejä toisen taulun arvojen avulla rakenteella UPDATE ... FROM (PostgreSQL) ja standardin MERGE-lauseen avulla.

Oppitunti 3/414 vaihetta

UPDATE FROM- ja JOIN-tyylisillä päivityksillä on ilmainen SQL Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu SQL Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. SQL Academy-kurssilla on yhteensä 4 oppituntia.

Perusmuotoinen UPDATE

Muuta täsmäävien rivien arvoja:

UPDATE users SET full_name = 'Alice Adams' WHERE id = 1;

Useita sarakkeita

Pilkuilla eroteltu SET-luettelo:

UPDATE users
SET full_name = 'Alice', last_login = NOW(), visits = visits + 1
WHERE id = 1;

Useiden rivien päivittäminen

Kohdista päivitys yksinkertaisesti useampiin riveihin WHERE-ehdolla:

UPDATE orders SET status = 'archived'
WHERE created_at < NOW() - INTERVAL '5 years';

UPDATE alikyselyn kanssa

Laske uusi arvo toisesta kyselystä:

UPDATE products
SET review_count = (
  SELECT COUNT(*) FROM reviews WHERE reviews.product_id = products.id
);

UPDATE … FROM (PostgreSQL)

JOIN-tyylinen päivitys — hae arvoja toisesta taulusta:

UPDATE products p
SET stock = i.qty
FROM inventory i
WHERE i.product_id = p.id;

UPDATE … FROM useiden taulujen kanssa

FROM-luettelo voi sisältää useita tauluja:

UPDATE invoices inv
SET tax_rate = r.rate
FROM users u
JOIN rates r ON r.country = u.country
WHERE inv.user_id = u.id;

Standardi-SQL: UPDATE … FROM korreloivalla alikyselyllä

Siirrettävä vaihtoehto (hitaampi):

UPDATE products p
SET stock = (SELECT qty FROM inventory i WHERE i.product_id = p.id);

MERGE INSERT-, UPDATE- ja DELETE-toimintoihin

PostgreSQL 15+ tukee MERGE-komentoa yhdistettyihin toimintoihin — katso UPSERT-oppitunti.

RETURNING UPDATE-komennosta

Hae päivitetyt rivit yhdellä edestakaisella pyynnöllä:

UPDATE orders SET status = 'shipped', shipped_at = NOW()
WHERE id = $1
RETURNING id, status, shipped_at;

Päivittäminen CASE-lausekkeella

Ehdolliset uudet arvot:

UPDATE orders
SET status = CASE
  WHEN paid_at IS NOT NULL THEN 'paid'
  WHEN created_at < NOW() - INTERVAL '24h' THEN 'expired'
  ELSE status
END;

Varokaa puuttuvaa WHERE-ehtoa

UPDATE users SET active = false; päivittää JOKAISEN rivin. Tuotannossa:

  • Suorittakaa ensin SELECT ja tarkistakaa rivimäärä
  • Käärikää toiminto transaktioon ja tarkistakaa tulos ennen COMMIT-komentoa
  • Käyttäkää BEGIN; ...; SELECT count(*) FROM users WHERE active = false; ROLLBACK; -lauseketta koeajona

Päivityksen suorituskyky

UPDATE luo uuden riviversion ja merkitsee vanhan rivin kuolleeksi (MVCC). Usein päivitettävät taulut voivat paisua — tätä käsitellään VACUUM- ja MVCC-oppitunnissa.

Kertaus

UPDATE … FROM on JOIN-tyylinen päivitys, joka tekee joukkokorjauksista selkeitä.

  • Käyttäkää WHERE-ehtoa aina — älkää koskaan unohtako sitä
  • Käyttäkää RETURNING-lauseketta tarkistamiseen
  • Testatkaa transaktiossa ja käyttäkää ROLLBACK-komentoa

Pikatarkistus

Millä UPDATE-syntaksilla voitte viitata toiseen tauluun PostgreSQL:ssä?

Aloita maksutta

Opi SQL tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
46
Oppitunnit
183

Usein kysytyt kysymykset

Onko oppitunti ”UPDATE FROM- ja JOIN-tyylisillä päivityksillä” ilmainen?

Kyllä – oppitunnin ”UPDATE FROM- ja JOIN-tyylisillä päivityksillä” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko SQL Academy-kurssin, päivitä CoddyKit PROhon. SQL Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”UPDATE FROM- ja JOIN-tyylisillä päivityksillä”?

Päivittäkää rivejä toisen taulun arvojen avulla rakenteella UPDATE ... FROM (PostgreSQL) ja standardin MERGE-lauseen avulla. Harjoittelet SQL Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni SQL Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin SQL Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”UPDATE FROM- ja JOIN-tyylisillä päivityksillä”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä SQL Academy-oppitunnilla?

Kyllä. Jokainen SQL Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. INSERT useille riveille
  2. UPSERT: ON CONFLICT DO UPDATE (PostgreSQL)
  3. UPDATE FROM- ja JOIN-tyylisillä päivityksillä
  4. DELETE USING-lauseella ja turvalliset käytännöt
← Takaisin: SQL Academy