Bayangkan kamu sudah dengan susah payah menyiapkan lemari arsip yang rapi — laci-lacinya sudah ada label, urutannya sudah benar, formatnya sudah sempurna. Tapi... lacinya kosong. Itu persis situasinya setelah kamu membuat tabel di MySQL. Nah, untuk mulai mengisi "laci" tersebut dengan data, kamu butuh perintah INSERT INTO MySQL.
Di artikel ketiga dari seri Belajar Query SQL MySQL ini, kita akan bahas tuntas cara memasukkan data ke tabel — mulai dari sintaks dasarnya, cara insert banyak data sekaligus, sampai tips biar kamu tidak salah langkah. Kalau kamu belum baca artikel sebelumnya tentang CREATE TABLE, bisa lihat dulu di sini.
Semua contoh di artikel ini menggunakan studi kasus toko online — tabel produk, pelanggan, dan pesanan. Jadi selain belajar sintaks, kamu juga langsung latihan dengan konteks yang relevan. Yuk mulai!
Menurut laporan DB-Engines, MySQL adalah RDBMS paling populer kedua di dunia per 2024. Artinya, perintah INSERT INTO yang kamu pelajari hari ini dipakai oleh jutaan developer di seluruh planet untuk mengisi database aplikasi mereka — dari startup kecil sampai raksasa seperti Facebook dan YouTube yang pernah menggunakan MySQL di infrastruktur mereka.
1. Sintaks Dasar INSERT INTO MySQL
Anggap saja INSERT INTO itu seperti formulir pendaftaran. Kamu harus menyebutkan mau diisi di kolom apa, dan nilai apa yang mau dimasukkan. Dua bagian ini wajib ada dan harus sinkron — jumlah kolom harus sama dengan jumlah nilai.
INSERT INTO nama_tabel (kolom1, kolom2, kolom3) VALUES (nilai1, nilai2, nilai3); -- Keterangan: -- nama_tabel : tabel tujuan tempat data disimpan -- (kolom1...) : daftar kolom yang mau diisi -- VALUES : kata kunci wajib sebelum nilai -- (nilai1...) : data yang mau dimasukkan (urutan harus sama!)
Sekarang kita langsung praktik. Misalkan toko online kita punya tabel produk dengan struktur seperti ini:
CREATE TABLE produk ( id_produk INT AUTO_INCREMENT PRIMARY KEY, nama_produk VARCHAR(150) NOT NULL, harga DECIMAL(12,2) NOT NULL, stok INT DEFAULT 0, kategori VARCHAR(50) );
INSERT INTO produk (nama_produk, harga, stok, kategori) VALUES ('Sepatu Lari Nike Air', 850000.00, 50, 'Sepatu');
📊 Hasil di Tabel produk:
| id_produk | nama_produk | harga | stok | kategori |
|---|---|---|---|---|
| 1 | Sepatu Lari Nike Air | 850000.00 | 50 | Sepatu |
Perhatikan kolom id_produk — kita tidak memasukkan nilainya secara manual karena sudah ada AUTO_INCREMENT. MySQL akan otomatis mengisinya mulai dari angka 1, 2, 3, dan seterusnya. Kamu hanya perlu menulis kolom-kolom yang benar-benar perlu kamu isi!
2. Insert Banyak Data Sekaligus dengan INSERT INTO MySQL
Bayangkan kamu kerja di gudang toko online dan harus input 100 produk baru. Kalau satu per satu, bisa pegal jari dan habis setengah hari! Untungnya, MySQL memungkinkan kamu memasukkan banyak baris data sekaligus dalam satu perintah INSERT INTO — ini disebut bulk insert atau multi-row insert.
INSERT INTO produk (nama_produk, harga, stok, kategori) VALUES ('Kaos Polos Putih', 89000.00, 200, 'Pakaian'), ('Celana Jogger Abu', 175000.00, 120, 'Pakaian'), ('Topi Snapback Hitam', 120000.00, 80, 'Aksesoris'), ('Tas Ransel Canvas', 320000.00, 45, 'Tas');
📊 Hasil di Tabel produk setelah semua insert:
| id_produk | nama_produk | harga | stok | kategori |
|---|---|---|---|---|
| 1 | Sepatu Lari Nike Air | 850000.00 | 50 | Sepatu |
| 2 | Kaos Polos Putih | 89000.00 | 200 | Pakaian |
| 3 | Celana Jogger Abu | 175000.00 | 120 | Pakaian |
| 4 | Topi Snapback Hitam | 120000.00 | 80 | Aksesoris |
| 5 | Tas Ransel Canvas | 320000.00 | 45 | Tas |
Multi-row insert jauh lebih cepat daripada INSERT satu per satu. Untuk 1.000 baris data, satu perintah multi-row insert bisa 10–15x lebih cepat dibanding 1.000 perintah INSERT terpisah karena mengurangi jumlah round-trip ke database server.
3. Studi Kasus: INSERT INTO untuk Tabel Pelanggan dan Pesanan
Di toko online sungguhan, bukan cuma tabel produk yang perlu diisi. Kita juga butuh tabel pelanggan dan pesanan. Mari kita praktikkan INSERT INTO MySQL untuk kedua tabel ini dan lihat bagaimana data antar tabel saling terhubung.
a. Mengisi Tabel Pelanggan
INSERT INTO pelanggan (nama, email, nomor_hp, kota) VALUES ('Budi Santoso', 'budi@email.com', '08123456789', 'Jakarta'), ('Rina Amelia', 'rina@email.com', '08234567890', 'Bandung'), ('Doni Pratama', 'doni@email.com', '08345678901', 'Surabaya');
📊 Hasil Tabel pelanggan:
| id_pelanggan | nama | nomor_hp | kota | |
|---|---|---|---|---|
| 1 | Budi Santoso | budi@email.com | 08123456789 | Jakarta |
| 2 | Rina Amelia | rina@email.com | 08234567890 | Bandung |
| 3 | Doni Pratama | doni@email.com | 08345678901 | Surabaya |
b. Mengisi Tabel Pesanan (dengan Foreign Key)
Tabel pesanan menyimpan transaksi dan mereferensikan data dari tabel pelanggan dan produk menggunakan ID. Kamu harus pastikan ID yang dimasukkan benar-benar ada di tabel yang dirujuk.
INSERT INTO pesanan (id_pelanggan, id_produk, jumlah, tanggal_pesan) VALUES (1, 1, 2, '2024-11-15'), -- Budi beli 2 Sepatu Nike (2, 2, 3, '2024-11-16'), -- Rina beli 3 Kaos Putih (3, 5, 1, '2024-11-16'); -- Doni beli 1 Tas Ransel
📊 Hasil Tabel pesanan:
| id_pesanan | id_pelanggan | id_produk | jumlah | tanggal_pesan |
|---|---|---|---|---|
| 1 | 1 | 1 | 2 | 2024-11-15 |
| 2 | 2 | 2 | 3 | 2024-11-16 |
| 3 | 3 | 5 | 1 | 2024-11-16 |
Saat memasukkan data ke tabel yang punya Foreign Key, pastikan nilai ID yang kamu masukkan sudah ada di tabel yang direferensikan. Misalnya, id_pelanggan = 99 tidak bisa dimasukkan ke tabel pesanan kalau pelanggan dengan ID 99 belum ada. MySQL akan menolak dan menampilkan error.
4. Panduan Praktikum: Dari Nol Sampai Bisa
Buka MySQL Workbench atau Terminal
Jalankan MySQL dan pastikan kamu sudah terhubung ke database yang benar. Gunakan perintah berikut untuk memilih database:
USE toko_online;
Cek Struktur Tabel Terlebih Dahulu
Sebelum insert, pastikan kamu tahu kolom apa saja yang ada di tabel. Gunakan DESCRIBE:
DESCRIBE produk; -- Atau singkatnya: DESC produk;
Tulis Perintah INSERT INTO dan Eksekusi
Tulis query INSERT-mu, lalu jalankan. Jika berhasil, MySQL akan menampilkan pesan seperti:
Query OK, 1 row affected (0.01 sec) -- Atau untuk multi-row insert: Query OK, 4 rows affected (0.02 sec) Records: 4 Duplicates: 0 Warnings: 0
Verifikasi Data yang Sudah Masuk
Setelah insert, selalu cek hasilnya dengan SELECT untuk memastikan data sudah masuk dengan benar:
SELECT * FROM produk; -- Tampilkan semua data di tabel produk
Cek ID Terakhir yang Digenerate
MySQL punya fungsi bawaan untuk mengecek ID terakhir yang di-generate oleh AUTO_INCREMENT — sangat berguna saat perlu membuat pesanan setelah insert pelanggan baru:
SELECT LAST_INSERT_ID(); -- Mengembalikan ID terakhir yang digenerate di sesi ini
5. Ringkasan: Variasi Penggunaan INSERT INTO
| Teknik | Digunakan Saat | Keunggulan | Catatan |
|---|---|---|---|
| Single Row INSERT | Input data satu per satu | Mudah dibaca & di-debug | Lambat untuk data banyak |
| Multi-Row INSERT | Input banyak data sekaligus | Jauh lebih cepat & efisien | Jika 1 baris error, semua gagal |
| INSERT dengan DEFAULT | Kolom punya nilai default | Query lebih singkat | Pastikan default sudah benar |
| INSERT IGNORE | Hindari error duplikat | Proses tidak terhenti | Duplikat di-skip tanpa pesan |
| INSERT ... SELECT | Salin data antar tabel | Powerful untuk migrasi data | Struktur kolom harus kompatibel |
Selalu sebutkan nama kolom secara eksplisit saat menggunakan INSERT INTO. Meskipun MySQL membolehkan INSERT tanpa menyebut nama kolom (langsung VALUES saja), kebiasaan ini berbahaya karena jika suatu saat struktur tabelmu berubah — misalnya ada kolom baru ditambahkan — querymu bisa error atau memasukkan data di kolom yang salah. Selalu tulis INSERT INTO tabel (kolom1, kolom2) VALUES (...).
Gunakan transaksi (TRANSACTION) untuk insert data penting. Kalau kamu insert data pelanggan baru sekaligus membuat pesanannya — dan di tengah jalan terjadi error — kamu tidak mau pelanggan berhasil dibuat tapi pesanannya tidak. Pakai START TRANSACTION, lalu COMMIT kalau berhasil, atau ROLLBACK kalau gagal. Ini materi lanjutan, tapi penting kamu tahu sejak awal.
🎓 Kesimpulan
- ▸ Perintah INSERT INTO MySQL adalah cara utama untuk memasukkan data ke tabel database.
- ▸ Selalu sebutkan nama kolom secara eksplisit untuk kode yang lebih aman dan maintainable.
- ▸ Multi-row insert jauh lebih efisien daripada insert satu per satu untuk data dalam jumlah besar.
- ▸ Perhatikan tipe data dan constraint (NOT NULL, UNIQUE, FK) sebelum insert agar tidak error.
- ▸ Selalu verifikasi data yang sudah masuk menggunakan SELECT setelah INSERT.
Data adalah nyawa dari aplikasi. Menguasai INSERT INTO bukan sekadar hafal sintaks — kamu sudah mulai membangun fondasi sistem yang hidup dan berfungsi. Setiap baris data yang kamu masukkan adalah satu langkah lebih dekat menuju aplikasi yang sesungguhnya. Keep going! 🚀
💬 Gimana, udah berhasil coba INSERT-nya?
Tulis pengalaman atau pertanyaanmu di kolom komentar di bawah! Kalau artikel ini membantu, bantu share ke teman-teman yang lagi belajar SQL juga ya. Dan jangan lupa bookmark seri ini biar tidak ketinggalan artikel selanjutnya! 🔖
📚 Artikel Selanjutnya dalam Seri