SQL Academy · Pelajaran

INSERT dengan Pelbagai Baris

Masukkan satu atau banyak baris dengan satu pernyataan, dan gunakan INSERT ... SELECT untuk menyalin data antara jadual.

Pelajaran 1 daripada 413 langkah

INSERT dengan Pelbagai Baris ialah pelajaran SQL Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran SQL Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus SQL Academy merangkumi sejumlah 4 pelajaran.

INSERT Satu Baris

Bentuk paling mudah menamakan lajur dan membekalkan nilai:

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

INSERT Berbilang Baris

Sisipkan banyak baris dalam satu pernyataan. Lebih pantas daripada banyak perjalanan pergi balik:

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

Mengapa Berbilang Baris Lebih Pantas

Lebih sedikit perjalanan ulang-alik ke pangkalan data, lebih sedikit kitaran penghuraian dan perancangan, serta satu pembilasan WAL. Untuk sisipan pukal sebanyak ratusan baris, VALUES berbilang adalah 5–10 kali lebih pantas daripada sisipan satu demi satu.

Nilai Lalai

Abaikan lajur untuk menggunakan DEFAULT (atau NULL):

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

DEFAULT Eksplisit

Atau gunakan kata kunci DEFAULT:

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

RETURNING

Dapatkan semula lajur bagi baris yang disisipkan tanpa pertanyaan kedua (PostgreSQL):

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

INSERT … SELECT

Salin atau ubah baris daripada jadual lain:

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

Pemuatan Pukal dengan COPY

Untuk puluhan ribu baris atau lebih, gunakan arahan COPY — laluan yang jauh paling pantas:

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

Elakkan Penyisipan dalam Transaksi Besar Tanpa Sebab

Satu transaksi = satu blok atomik. Jika import sejuta baris gagal di tengah jalan, semuanya akan dibuat ROLLBACK. Kadangkala anda mahukan begitu; kadangkala anda memprosesnya dalam kelompok 10k baris.

Petua Prestasi INSERT

Untuk sisipan besar:

  • Gugurkan indeks sekunder, lakukan sisipan, kemudian bina semula indeks tersebut
  • Lumpuhkan pencetus atau pemeriksaan FK jika selamat
  • Gunakan COPY apabila boleh
  • Laraskan maintenance_work_mem untuk pembinaan semula indeks

Pratonton Pengendalian Konflik

Untuk menyisipkan "jika baharu, jika tidak kemas kini", gunakan INSERT ... ON CONFLICT — perkara ini akan dibincangkan dalam pelajaran seterusnya.

Ringkasan

INSERT adalah mudah; VALUES berbilang baris dan INSERT … SELECT merangkumi kes harian. RETURNING mengelakkan perjalanan ulang-alik tambahan. Untuk data pukal, gunakan COPY.

Semakan Pantas

Apakah cara paling pantas untuk memuatkan 100,000 baris daripada fail CSV ke dalam PostgreSQL?

Percuma untuk bermula

Pelajari SQL dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
46
Pelajaran
183

Soalan Lazim

Adakah pelajaran “INSERT dengan Pelbagai Baris” percuma?

Ya — teks penuh “INSERT dengan Pelbagai Baris” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus SQL Academy, tingkat taraf kepada CoddyKit PRO. Kursus SQL Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “INSERT dengan Pelbagai Baris”?

Masukkan satu atau banyak baris dengan satu pernyataan, dan gunakan INSERT ... SELECT untuk menyalin data antara jadual. Anda berlatih SQL Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan SQL Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran SQL Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “INSERT dengan Pelbagai Baris” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran SQL Academy ini?

Ya. Setiap pelajaran SQL Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. INSERT dengan Pelbagai Baris
  2. UPSERT: ON CONFLICT DO UPDATE (PostgreSQL)
  3. UPDATE dengan FROM dan Kemas Kini Gaya JOIN
  4. DELETE dengan USING dan Corak Selamat
← Kembali ke SQL Academy