Panduan INSERT DATA di Database MySQL

Oleh: Andi Ardiansyah Nasir Terakhir diperbarui: 20 Juni 2025

Apa Itu INSERT dalam SQL?

Perintah INSERT dalam SQL digunakan untuk menambahkan data baru ke dalam tabel database. Ini adalah salah satu operasi dasar dalam manipulasi data (DML - Data Manipulation Language) yang memungkinkan kita menyimpan informasi ke dalam database.

Ada beberapa cara untuk melakukan INSERT data:

  • Insert satu baris data
  • Insert beberapa baris data sekaligus
  • Insert data dari tabel lain
  • Insert data dengan nilai default

Membuat Tabel Contoh

Sebelum kita bisa menginsert data, kita perlu membuat tabel terlebih dahulu. Berikut contoh pembuatan tabel yang akan kita gunakan:

CREATE TABLE mahasiswa (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nim VARCHAR(10) NOT NULL UNIQUE,
    nama VARCHAR(100) NOT NULL,
    jurusan VARCHAR(50) NOT NULL,
    semester INT DEFAULT 1,
    ipk DECIMAL(3,2) DEFAULT 0.00,
    tanggal_masuk DATE NOT NULL
);

Penjelasan struktur tabel:

  • id: Primary key yang otomatis bertambah
  • nim: Nomor Induk Mahasiswa (unik, tidak boleh NULL)
  • nama: Nama lengkap mahasiswa
  • jurusan: Jurusan yang diambil
  • semester: Semester saat ini (default 1)
  • ipk: Indeks Prestasi Kumulatif (default 0.00)
  • tanggal_masuk: Tanggal pertama masuk kuliah

Insert Data Dasar

Format dasar perintah INSERT:

INSERT INTO nama_tabel (kolom1, kolom2, ...)
VALUES (nilai1, nilai2, ...);

Contoh insert data ke tabel mahasiswa:

INSERT INTO mahasiswa (nim, nama, jurusan, semester, ipk, tanggal_masuk)
VALUES ('20250001', 'Andi Ardiansyah', 'Teknik Informatika', 3, 3.75, '2023-08-15');

Kita juga bisa menyederhanakan penulisan jika mengisi semua kolom (kecuali yang auto-increment):

INSERT INTO mahasiswa
VALUES (NULL, '20250002', 'Budi Santoso', 'Sistem Informasi', 5, 3.25, '2022-08-20');

Catatan: NULL untuk kolom id karena auto-increment.

Insert Beberapa Data Sekaligus

MySQL memungkinkan insert beberapa baris dalam satu perintah:

INSERT INTO mahasiswa (nim, nama, jurusan, semester, ipk, tanggal_masuk)
VALUES 
    ('20250003', 'Citra Dewi', 'Teknik Elektro', 2, 3.50, '2024-08-10'),
    ('20250004', 'Dian Pratama', 'Manajemen', 4, 3.20, '2023-08-15'),
    ('20250005', 'Eka Wijaya', 'Akuntansi', 6, 3.80, '2022-08-20');

Teknik ini lebih efisien karena:

  • Hanya satu koneksi ke database
  • Lebih cepat daripada multiple INSERT terpisah
  • Atomic operation (semua berhasil atau semua gagal)

Insert Data Parsial (Sebagian Kolom)

Kita bisa menginsert data hanya ke kolom tertentu, asalkan kolom lain memiliki nilai default atau boleh NULL:

INSERT INTO mahasiswa (nim, nama, jurusan, tanggal_masuk)
VALUES ('20250006', 'Fajar Nugraha', 'Teknik Sipil', '2024-08-10');

Pada contoh di atas, kolom semester dan ipk akan diisi dengan nilai default (1 dan 0.00).

Insert Data dari Tabel Lain

Kita bisa menginsert data dari hasil query tabel lain:

-- Buat tabel alumni terlebih dahulu
CREATE TABLE alumni (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nim VARCHAR(10) NOT NULL UNIQUE,
    nama VARCHAR(100) NOT NULL,
    jurusan VARCHAR(50) NOT NULL,
    ipk DECIMAL(3,2),
    tahun_lulus YEAR NOT NULL
);

-- Insert data dari tabel mahasiswa ke alumni
INSERT INTO alumni (nim, nama, jurusan, ipk, tahun_lulus)
SELECT nim, nama, jurusan, ipk, YEAR(CURDATE())
FROM mahasiswa
WHERE semester >= 8;

INSERT IGNORE

INSERT IGNORE adalah perintah di MySQL (juga MariaDB) yang digunakan untuk memasukkan data ke dalam tabel, tetapi akan mengabaikan (tidak error) jika terjadi pelanggaran aturan seperti: Duplikat kunci (PRIMARY KEY atau UNIQUE) atau Pelanggaran constraint (misalnya NOT NULL) :

INSERT IGNORE INTO mahasiswa (nim, nama, jurusan, tanggal_masuk)
VALUES ('20250001', 'Nama Baru', 'Jurusan Baru', '2024-08-10');

Pada contoh di atas, karena NIM '20250001' sudah ada, data tidak akan dimasukkan tetapi tidak menyebabkan error.

ON DUPLICATE KEY UPDATE

ON DUPLICATE KEY UPDATE adalah fitur di MySQL (dan MariaDB) yang digunakan saat melakukan INSERT, tapi ingin meng-update baris yang sudah ada jika terjadi konflik pada kunci unik (misalnya PRIMARY KEY atau UNIQUE).:

INSERT INTO mahasiswa (nim, nama, jurusan, semester, ipk, tanggal_masuk)
VALUES ('20250001', 'Andi Ardiansyah', 'Teknik Informatika', 3, 3.85, '2023-08-15')
ON DUPLICATE KEY UPDATE 
    nama = VALUES(nama),
    jurusan = VALUES(jurusan),
    semester = VALUES(semester),
    ipk = VALUES(ipk);

Jika NIM sudah ada, data akan diupdate dengan nilai baru.

Best Practices INSERT Data

  1. Gunakan transaksi untuk multiple INSERT penting:
    START TRANSACTION;
    INSERT INTO tabel1 VALUES (...);
    INSERT INTO tabel2 VALUES (...);
    COMMIT;
  2. Untuk bulk insert, gunakan LOAD DATA INFILE (lebih cepat):
    LOAD DATA INFILE '/path/data.csv' 
    INTO TABLE mahasiswa
    FIELDS TERMINATED BY ',' 
    ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    IGNORE 1 ROWS;
  3. Validasi data sebelum insert
  4. Gunakan prepared statement untuk aplikasi
  5. Backup database sebelum operasi massal