SQL Academy · Oppitunti

INSERT useille riveille

Lisätkää yksi tai useita rivejä yhdellä lauseella ja kopioikaa tietoja taulujen välillä INSERT ... SELECT -rakenteella.

Oppitunti 1/413 vaihetta

INSERT useille riveille on ilmainen SQL Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/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.

Yhden rivin INSERT

Yksinkertaisimmassa muodossa ilmoitetaan sarakkeet ja annetaan arvot:

INSERT INTO users (email, full_name)
VALUES ('alice@example.com', 'Alice Adams');

Monen rivin INSERT

Lisää monta riviä yhdellä lauseella. Tämä on nopeampaa kuin useat erilliset verkkokutsut:

INSERT INTO users (email, full_name) VALUES
  ('alice@example.com', 'Alice Adams'),
  ('bob@example.com',   'Bob Brown'),
  ('carol@example.com', 'Carol Chen');

Miksi usean rivin lisäys on nopeampi

Vähemmän edestakaisia pyyntöjä tietokantaan, vähemmän jäsennys- ja suunnittelukierroksia sekä yksi WAL-huuhtelu. Satojen rivien joukkolisäyksissä monirivinen VALUES on 5–10 kertaa nopeampi kuin rivien lisääminen yksi kerrallaan.

Oletusarvot

Jätä sarake pois käyttääksesi sen DEFAULT-arvoa (tai NULL-arvoa):

INSERT INTO orders (user_id, total)
VALUES (1, 99.50);
-- id, created_at, status filled by DEFAULTs

Eksplisiittinen DEFAULT

Voit myös käyttää DEFAULT-avainsanaa:

INSERT INTO orders (id, user_id, total, status)
VALUES (DEFAULT, 1, 99.50, DEFAULT);

RETURNING

Hae lisätyn rivin tai lisättyjen rivien sarakkeet ilman toista kyselyä (PostgreSQL):

INSERT INTO users (email, full_name)
VALUES ('alice@example.com', 'Alice Adams')
RETURNING id, created_at;

INSERT … SELECT

Kopioi tai muunna rivejä toisesta taulusta:

INSERT INTO archive_orders (id, user_id, total)
SELECT id, user_id, total
FROM orders
WHERE created_at < NOW() - INTERVAL '5 years';

Joukkolataus COPY-komennolla

Kymmenientuhansien tai sitä useampien rivien lataamiseen käytä COPY-komentoa — se on selvästi nopein tapa:

COPY users (email, full_name) FROM '/tmp/users.csv' (FORMAT csv, HEADER true);

-- Or from STDIN in a client:
COPY users (email, full_name) FROM STDIN;
 alice@example.com\tAlice
 bob@example.com\tBob
 \.

Vältä lisäyksiä suuriin transaktioihin ilman syytä

Yksi transaktio = yksi atominen lohko. Jos miljoonan rivin tuonti epäonnistuu puolivälissä, koko toiminto perutaan. Joskus tämä on haluttua, mutta joskus rivit kannattaa käsitellä 10 000 rivin erissä.

INSERT-suorituskykyvinkit

Suurissa lisäyksissä:

  • Poistakaa toissijaiset indeksit, tehkää lisäys ja luokaa indeksit uudelleen
  • Poistakaa triggerit ja FK-tarkistukset käytöstä, jos se on turvallista
  • Käyttäkää COPY-komentoa aina kun mahdollista
  • Säätäkää maintenance_work_mem-asetusta indeksien uudelleenluontia varten

Konfliktien käsittelyn esikatselu

Kun haluatte lisätä rivin "jos uusi, muuten päivitä", käytätte INSERT ... ON CONFLICT -komentoa — sitä käsitellään seuraavassa oppitunnissa.

Kertaus

INSERT on suoraviivainen; monirivinen VALUES ja INSERT … SELECT kattavat tavallisimmat käyttötapaukset. RETURNING välttää ylimääräiset edestakaiset pyynnöt. Käyttäkää joukkolatauksiin COPY-komentoa.

Pikatarkistus

Mikä on nopein tapa ladata 100 000 riviä CSV-tiedostosta PostgreSQL-tietokantaan?

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 ”INSERT useille riveille” ilmainen?

Kyllä – oppitunnin ”INSERT useille riveille” 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 ”INSERT useille riveille”?

Lisätkää yksi tai useita rivejä yhdellä lauseella ja kopioikaa tietoja taulujen välillä INSERT ... SELECT -rakenteella. 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 1/4.

Kuinka kauan ”INSERT useille riveille”-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