Lompati ke konten utama
Modul 8 · Pelajaran 1 dari 429/57 dalam kursus~10 min
Pelajaran modul (1/4)

Memasukkan data: MASUKKAN

Sejauh ini Anda telah membaca data. Saatnya untuk menulis beberapa. INSERT adalah perintah yang menambahkan baris baru ke tabel.

Sintaks dasar

SQL
INSERT INTO tabella (col1, col2, …)
VALUES (val1, val2, …);

Contoh pada kumpulan data kami:

SQL
INSERT INTO customers (first_name, last_name, email, city, country, signed_up_on)
VALUES ('Marco', 'Bianchi', 'marco.bianchi@example.com', 'Verona', 'Italia', '2025-07-15');

Memberi nama kolom adalah praktik yang disarankan: ini membuat kueri kuat terhadap perubahan skema di masa depan (misalnya kolom phone opsional baru tidak merusak apa pun) dan mendokumentasikan diri sendiri.

INSERT multi-baris

Pernyataan tunggal, beberapa baris — jauh lebih cepat daripada N INSERTs yang terpisah:

SQL
INSERT INTO categories (name, parent_id) VALUES
  ('Gaming',         1),
  ('Smart Home',     1),
  ('Cucina vegana',  8);

RETURNING: membaca nilai yang baru saja Anda masukkan

Karakteristik klausa PostgreSQL: RETURNING mengembalikan baris yang baru saja dibuat. Sangat berguna untuk mengambil id yang dibuat secara otomatis:

SQL
INSERT INTO categories (name, parent_id)
VALUES ('Gaming', 1)
RETURNING id, name;

Outputnya adalah tabel satu baris dengan id (ditugaskan oleh SERIAL) dan name.

Apa yang terjadi jika ada kolom yang hilang

Jika Anda menghilangkan kolom di INSERT:

  • jika NOT NULL tanpa DEFAULT → error;
  • jika memiliki DEFAULT (termasuk SERIAL untuk id) → yang digunakan;
  • jika menerima NULL → menjadi NULL.
SQL
-- Va bene: id è SERIAL (auto), country ha NOT NULL ma forniamo tutti i campi
INSERT INTO customers (first_name, last_name, email, city, country, signed_up_on)
VALUES ('Olivia', 'Marini', 'olivia.marini@example.com', 'Bari', 'Italia', '2025-07-20');

-- Errore: first_name è NOT NULL e non è fornito
INSERT INTO customers (last_name, email, city, country, signed_up_on)
VALUES ('Marini', 'olivia.marini@example.com', 'Bari', 'Italia', '2025-07-20');

Giliranmu

Latihan#sql.m8.l1.e1
Upaya: 0Memuat…

Masukkan ke dalam tabel pelanggan pelanggan baru dengan nama_depan 'Marco', nama_belakang 'Bianchi', email 'marco.bianchi@example.com', kota 'Verona', negara 'Italia' dan ditandatangani_up_pada '15-07-2025'. Beri nama semua kolom secara eksplisit.

Memuat editor…
Tunjukkan petunjuk

Urutan nilai dalam VALUES harus sesuai dengan urutan kolom yang Anda beri nama.

Solusi tersedia setelah 3 upaya

Tinjau latihan

Latihan#sql.m8.l1.e2
Upaya: 0Memuat…

Masukkan kategori 'Gaming' baru sebagai turunan dari 'Elettronica' (id = 1). Gunakan klausa RETURNING untuk mengembalikan id dan nama kategori yang baru dibuat.

Memuat editor…
Tunjukkan petunjuk

RETURNING menerima daftar kolom (atau '*') persis seperti SELECT.

Solusi tersedia setelah 3 upaya