Anda di halaman 1dari 5

7 Variasi Perintah INSERT di MySQL yang

Sering Terlupakan
15 Feb 2011 Achmad Solichin
Data Manipulation Language (DML) merupakan bagian dari perintah SQL (Structured
Query Language) yang terdiri dari berbagai perintah untuk memanipulasi data di dalam
suatu database. Empat perintah utama yang termasuk dalam perintah DML adalah
perintah SELECT, INSERT, UPDATE dan DELETE. MySQL sebagai salah satu software
database terkemuka tentunya mendukung keempat perintah DML tersebut dengan sangat
baik. Di dalam tutorial kali ini, akan dibahas mengenai perintah INSERT dimana ternyata
cukup banyak variasi perintah INSERT di MySQL yang sering terlupakan (terabaikan),
namun sebenarnya sangat berguna.
Selain bentuk dasar perintah INSERT, saya mencatat setidaknya ada 7 (tujuh) variasi
bentuk perintah INSERT yang saya yakin suatu saat akan berguna untuk Anda. Berikut ini
ketujuh perintah INSERT tersebut yang selanjutnya akan saya jelaskan satu per satu.

1. INSERT INTO (field1, field2, …) VALUES (…)


2. INSERT … SELECT …
3. INSERT IGNORE …
4. INSERT DELAYED …
5. INSERT LOW PRIORITY | HIGH PRIORITY …
6. INSERT … ON DUPLICATE KEY UPDATE
7. REPLACE INTO …

Untuk mempermudah pemahaman terhadap tutorial ini, maka seluruh contoh yang
disajikan akan mengacu pada struktur tabel sebagai berikut:

Nama tabel: tblmhs


mysql> desc tblmhs;

+----------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+----------+-------------+------+-----+---------+-------+

| nim | varchar(10) | NO | PRI | NULL | |

| nama | varchar(40) | NO | | NULL | |

| alamat | text | NO | | NULL | |

+----------+-------------+------+-----+---------+-------+

3 rows in set (0.00 sec)

Di sini tidak saya bahas mengenai bagaimana membuat struktur tabel di atas, karena sudah
saya bahas pada tutorial mengenai perintah dasar MySQL. Lebih lengkapnya, Anda juga
bisa pelajari buku gratis MySQLyang dapat didownload di website ini juga.
Bentuk Dasar Perintah INSERT
Sebelum membahas variasi dari perintah INSERT, alangkah baiknya kita mengingat
kembali mengenai bagaimana bentuk dasar dari perintah INSERT tersebut. Perintah
INSERT pada dasarnya merupakan perintah yang dapat digunakan untuk memasukkan
data (record) ke sebuah tabel di database. Bentuk perintah ini cukup sederhana. Berikut ini
contoh sederhana perintah INSERT untuk memasukkan data seorang mahasiswa dengan
nim ‘1011500100‘, nama ‘ACHMAD SOLICHIN‘ dan alamat di JAKARTA SELATAN.
INSERT INTO tblmhs VALUES('1011500100', 'ACHMAD SOLICHIN', 'JAKARTA
SELATAN');

Hal yang penting dari contoh perintah INSERT di atas adalah urutan dari nilai data yang
akan ditambahkan harus sama dengan urutan field (kolom) di tabel. Urutan field di dalam
tabel tblmhs adalah nim, nama lalu alamat, sehingga waktu melakukan INSERT urutan
seharusnya juga nim, nama dan alamat. Jika urutan tidak sesuai, maka data yang
dimasukkan bisa jadi menempati kolom yang salah juga
#1. INSERT INTO tabel (field1, field2) VALUES …
Pada bentuk dasar perintah INSERT di atas, kita harus menyebutkan nilai dari seluruh
kolom. Jadi jumlah nilai yang akan ditambahkan harus sesuai dengan jumlah kolom dalam
tabel. Namun ada kalanya kita hanya ingin menambahkan sebagian dari kolom tabel, jadi
tidak semua kolom kita masukkan. Jika demikian, variasi perintah INSERT yang pertama ini
tentu tepat untuk digunakan. Kita menyebutkan kolom-kolom yang akan di-insert-kan di
belakang nama tabel. Urutannya juga tidak harus sesuai dengan urutan di dalam struktur
tabel. Sebagai contoh, kita akan memasukkan data nim dan nama seorang mahasiswa,
tanpa memasukkan alamatnya. Urutan fieldnya sengaja dibalik, nama terlebih dahulu baru
nim. Berikut perintahnya:

INSERT INTO tblmhs (nama, nim) VALUES('CHOTIMATUL MUSYAROFAH', '1012501983');

Terlihat pada contoh di atas bahwa urutan yang harus disesuaikan adalah urutan field yang
berada di belakang nama tabel ‘tblmhs’ dan urutan data (values) yang akan di-insert-kan.

#2. INSERT … SELECT …


Ada kalanya kita ingin memindahkan atau meng-copy sejumlah data yang berada pada
suatu tabel ke tabel yang lainnya. Singkatnya copy data antar tabel. Untuk menyelesaikan
permasalahan tersebut, tentunya sangat kurang efektif jika kita harus melakukan insert
satu per satu. Untuk melakukan copy record antar tabel, akan lebih efektif jika kita
menggunakan bentuk perintah “INSERT … SELECT …” yang menggabungkan proses insert
(menambahkan data) dan select (mengambil data). Sebagai contoh, kita ingin
memindahkan data nim dan nama mahasiswa yang berada di tabel tblpendaftaran ke tabel
tblmhs, berikut ini perintahnya:

INSERT INTO tblmhs(nim, nama) SELECT nim, nama FROM tblpendaftaran;

#3. INSERT IGNORE


Saya pernah membuat suatu absensi pada suatu perusahaan dimana data absensi diimport
dari suatu file teks hasil keluaran dari mesin finger. Setelah diimport, data absensi
karyawan akan diperiksa dan dilengkapi oleh staf HRD. Proses import dari teks file dapat
terjadi berulang-ulang sehingga diperlukan mekanisme agar pada saat proses import data
yang mungkin sudah diedit oleh staf HRD tidak tertimpa. Jadi intinya, saat proses import,
harus diperiksa apakah data absensi yang akan dimasukkan ke tabel sudah ada atau belum.
Jika sudah ada, maka tidak perlu dilakukan insert, namun jika tidak ada maka lakukan
proses import. Awalnya terpikir untuk melakukan pengecekan data ke database terlebih
dahulu sebelum insert, namun dari isi efektivitas tentu hal ini tidak baik, apalagi jika
datanya cukup banyak. Beruntung kemudian ketemu bentuk perintah INSERT IGNORE … di
MySQL. Dengan perintah ini, permasalahan tersebut dapat terselesaikan hanya dengan satu
perintah.

Dalam contoh berikut ini, akan melakukan insert data ke tabel tblmhs hanya jika data nim
belum ada di tabel. Pemeriksaan data didasarkan pada field yang menjadi primary key. Jadi
jika terjadi duplikasi primary key maka data akan diabaikan (ignored).

INSERT IGNORE INTO tblmhs VALUES('1012501983','BUNGA', 'TANGERANG');


#4. INSERT DELAYED
Bentuk perintah INSERT DELAYED … merupakan bentuk perintah yang mungkin akan kita
perlukan saat membuat suatu aplikasi transaksional dengan beberapa pengguna dalam
satu waktu. Dengan tambahan perintah “DELAYED” maka proses menambahkan data akan
ditangguhkan hingga tidak ada user yang mengakses tabel. Contoh berikut ini
menggambarkan bagaimana perintah tersebut:

INSERT DELAYED INTO tblmhs (nim, nama) VALUES ('1011500121', 'LINTANG',


'TANGERANG');

Penjelasan lebih lanjut mengenai perintah ini dapat dilihat di manual MySQL.
#5. INSERT LOW PRIORITY | HIGH PRIORITY
Tambahan perintah LOW PRIORITY atau HIGH PRIORITY dibelakang perintah INSERT
dapat digunakan untuk mengatur prioritas dari perintah INSERT yang akan dijalankan.
Perintah dengan prioritas lebih tinggi tentu akan didahulukan untuk dijalankan. Sama
seperti bentuk perintah INSERT DELAYED, perintah ini juga berguna saat kita “bermain”
dengan proses transaksional. Berikut ini contoh sederhananya:

INSERT INTO tblmhs VALUES('1111500111', 'INDAH', 'JAKARTA');

#6. INSERT … ON DUPLICATE KEY UPDATE


Variasi perintah INSERT ini mungkin suatu saat akan kita perlukan. Misalnya pada kasus
dimana pada proses insert sejumlah data, jika datanya sudah ada, dalam arti terjadi
duplikasi primary key, maka lakukan perintah update untuk kolom tertentu. Sebagai
contoh, kita akan melakukan penambahan data ke tblmhs, jika datanya sudah ada, maka
update field alamat dengan alamat yang baru. Berikut ini perintahnya:

INSERT INTO tblmhs (nim, nama, alamat) VALUES('1111500111', 'WULAN',


'MALANG') ON DUPLICATE KEY UPDATE alamat='JAKARTA';

Untuk penjelasan lebih rinci terkait perintah ini dapat dilihat di dokumentasi MySQL
(http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html).

#7. REPLACE INTO …


Saya sangat senang dengan adanya bentuk perintah REPLACE di MySQL ini. Perintah ini
sangatlah membantu. Contohnya saat saya ingin melakukan penambahan data secara
massal seperti pada kasus import absensi karyawan di atas. Jika pada proses import, kita
menginginkan agar data selalu up to date, maka jika data sudah ada harus dilakukan proses
update. Perintah REPLACE INTO berperan untuk melakukan dua tugas sekaligus, yaitu
INSERT jika datanya belum ada dan UPDATE jika datanya sudah ada. Berikut ini contoh
perintah ini:

REPLACE INTO tblmhs VALUES('1011500100', 'ACHMAD SOLICHIN', 'TANGERANG


SELATAN');

Demikian ketujuh bentuk variasi perintah INSERT di dalam MySQL yang sering terlupakan
namun seringkali kita butuhkan. Semoga postingan ini bermanfaat untuk kita semua. Mari
terus semangat berbagi demi Indonesia!

Anda mungkin juga menyukai