Panduan INSERT DATA di Database MySQL
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 bertambahnim
: Nomor Induk Mahasiswa (unik, tidak boleh NULL)nama
: Nama lengkap mahasiswajurusan
: Jurusan yang diambilsemester
: 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
-
Gunakan transaksi untuk multiple INSERT penting:
START TRANSACTION; INSERT INTO tabel1 VALUES (...); INSERT INTO tabel2 VALUES (...); COMMIT;
-
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;
- Validasi data sebelum insert
- Gunakan prepared statement untuk aplikasi
- Backup database sebelum operasi massal