Minggu, 07 Oktober 2018
perintah insert di mysql
Oktober 07, 2018
No comments
Variasi Perintah INSERT di MySQL yang Sering Terlupakan
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.
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 MySQL yang
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!
0 komentar:
Posting Komentar