Variasi perintah insert mysql
Dalam perintah sql terdapat perintah pokok yang sering kita
gunakan yaitu SELECT, INSERT, UPDATE dan DELETE. Banyak orang tidak akan
meninggalkan perintah ini dalam bahasa pemprograman, akan tetapi perintah
tersebut hanyalah dasar perintah yang
harus di ketahuiseorang programmer dan merasa cukup dengan perintah tersebut.
Sangat banyak orang yang bergelut di bidang programmer
sering hanya menggunakan perintah insert hanya sebagai perintah input dan hanya
beberapa perintah yang digunakan contohnya hanya menggunakan INSERT INTO (field
1,...)VALUES(......), akan tetapi masih ada beberapa perintah yang dapat kita gunakan di script MySql. Di artikel
ini kita akan membahas INSERT terlebih dahulu,
Berikut ini perintah
INSERT.
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 …
#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('Hadi', '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',
'GEMBONG');
#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', 'KUDUS');
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',
'SITI', 'RWMBANG') ON DUPLICATE KEY UPDATE alamat='LASEM';
#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', 'PUJI',
'PATI');
Demikian 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!
Sumber: achmatim.net