0Pricing
SQL Academy · Lekcja

INSERT z wieloma wierszami

Wstawiaj jeden lub wiele wierszy za pomocą pojedynczej instrukcji i używaj INSERT ... SELECT do kopiowania danych między tabelami.

INSERT z wieloma wierszami to bezpłatna lekcja SQL Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej SQL Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs SQL Academy zawiera 4 lekcji w sumie.

INSERT pojedynczego wiersza

Najprostsza forma wymienia kolumny i dostarcza wartości:

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

INSERT wielu wierszy

Wstaw wiele wierszy za pomocą jednego polecenia. Jest to szybsze niż wiele operacji wykonywanych w osobnych połączeniach:

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

Dlaczego wiele wierszy jest szybsze

Mniej podróży w obie strony do bazy danych, mniej cykli parsowania i planowania oraz jedno opróżnienie WAL. Przy zbiorczym wstawianiu setek wierszy wielowierszowe VALUES jest 5–10 razy szybsze niż wstawianie wiersz po wierszu.

Wartości domyślne

Pominięcie kolumny powoduje użycie jej wartości DEFAULT (lub NULL):

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

Jawne DEFAULT

Można też użyć słowa kluczowego DEFAULT:

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

RETURNING

Pobranie kolumn wstawionego wiersza lub wierszy bez wykonywania drugiego zapytania (PostgreSQL):

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

INSERT … SELECT

Kopiowanie lub przekształcanie wierszy z innej tabeli:

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

Ładowanie zbiorcze za pomocą COPY

W przypadku dziesiątek tysięcy wierszy lub większej liczby należy użyć polecenia COPY — zdecydowanie najszybszej metody:

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
 \.

Unikanie nieuzasadnionego wstawiania w dużych transakcjach

Jedna transakcja = jeden atomowy blok. Jeśli import miliona wierszy nie powiedzie się w połowie, całość zostanie wycofana. Czasami właśnie tego potrzeba, a czasami lepiej podzielić operację na partie po 10 tysięcy wierszy.

Wskazówki dotyczące wydajności INSERT

W przypadku dużych operacji wstawiania:

  • Usuń indeksy dodatkowe, wstaw dane, a następnie odtwórz indeksy
  • Wyłącz wyzwalacze i sprawdzanie kluczy obcych, jeśli jest to bezpieczne
  • W miarę możliwości używaj COPY
  • Dostosuj maintenance_work_mem podczas odbudowy indeksów

Zapowiedź obsługi konfliktów

Aby wstawić wiersz, jeśli jest nowy, a w przeciwnym razie go zaktualizować, należy użyć INSERT ... ON CONFLICT — temat ten zostanie omówiony w następnej lekcji.

Podsumowanie

INSERT jest prosty; wielowierszowe VALUES oraz INSERT … SELECT obejmują codzienne przypadki. RETURNING pozwala uniknąć dodatkowych podróży w obie strony. Do operacji zbiorczych należy używać COPY.

Szybki test

Jaki jest najszybszy sposób załadowania 100 000 wierszy z pliku CSV do PostgreSQL?

Często zadawane pytania

Czy lekcja „INSERT z wieloma wierszami” jest bezpłatna?

Tak — pełny tekst „INSERT z wieloma wierszami” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu SQL Academy, przejdź na CoddyKit PRO. Kurs SQL Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „INSERT z wieloma wierszami”?

Wstawiaj jeden lub wiele wierszy za pomocą pojedynczej instrukcji i używaj INSERT ... SELECT do kopiowania danych między tabelami. Ćwiczysz SQL Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć SQL Academy?

Nie wymagamy żadnego doświadczenia. SQL Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „INSERT z wieloma wierszami”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji SQL Academy?

Tak. Każda lekcja SQL Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. INSERT z wieloma wierszami
  2. UPSERT: ON CONFLICT DO UPDATE (PostgreSQL)
  3. UPDATE z FROM i aktualizacje w stylu JOIN
  4. DELETE z USING i bezpieczne wzorce
← Powrót do SQL Academy