Bentuk Dasar Perintah INSERT docx

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!