Cara Menambahkan Data di Tabel Database Mysql Lebih Lanjut - Sinauo.Com

Cara Menambahkan Data di Tabel Database Mysql Lebih Lanjut

Sebelumnya admin sudah membahas sedikit tentang insert data di tabel mysql di dalam tutorial cara menampilkan menambha mengedit dan menghapus data di mysql. Tapi itu hanya sebagian belum begitu lengkap kali ini admin akan membahas lagi bagaimana cara menambahkan data di tabel mysql lebih lanjut.

Saat kalian bermain-main aplikasi yang menggunakan database maka tidak luput dari query insert data atau menambah data ke dalam tabel. Misalnya kalian saat mendaftarkan diri untuk gabung ke dalam aplikasi sosial media maka kalian diwajibkan untuk mendaftar terlebih dahulu. Kalian diminta untuk memasukan identitas kalian. Nantinya identitas kalian akan dimasukan kedalam salah satu tabel dalam database mereka.

Ok kali ini kita langsung aja membuat INSERT Database. Tapi sebelum menginput data kedalam database kita buat dulu database dan juga tabelnya.

mysql> create database latihan;
Query OK, 1 row affected (0.00 sec)

mysql> use latihan;
Database changed

mysql> create table data_diri (nik INT(16), nama_lengkap varchar(50), jenis_kelamin enum('L','P') DEFAULT 'L', alamat varchar(70), primary key(nik));
Query OK, 0 rows affected (0.97 sec)

mysql> desc data_diri;
+---------------+---------------+------+-----+---------+-------+
| Field         | Type          | Null | Key | Default | Extra |
+---------------+---------------+------+-----+---------+-------+
| nik           | int(16)       | NO   | PRI | 0       |       |
| nama_lengkap  | varchar(50)   | YES  |     | NULL    |       |
| jenis_kelamin | enum('L','P') | YES  |     | L       |       |
| alamat        | varchar(70)   | YES  |     | NULL    |       |
+---------------+---------------+------+-----+---------+-------+
4 rows in set (0.02 sec)

mysql>

Dari query diatas kita sudah membuat sebuah database dengan nama latihan dan juga tabel dengan nama data_diri. Dengan deskripsi tabel diatas mempunyai 4 field/kolom yaitu nik,nama_lengkap,jenis_kelamin, dan alamat dengan primary key nik.

Perintah Query Yang digunakan untuk menginput tabel kedalam database itu seperti dibawah ini.

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
{VALUES | VALUE} ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE
col_name=expr
[, col_name=expr] ... ]

Sedikit penjelasan dari queri diatas MySQL menyediakan beberapa opsional pilihan untuk menginputkan/memasukkan data ke dalam tabel Mysql. Perintah yang ada diantara 2 kurung siku ([…..]) adalah pilihan/opsional, kalian tidak harus menulis semua perintah yang ada tersebut, tapi dari format tersebut kalian bisa mengetahui opsi/pilihan yang dapat digunakan.

Untuk menginputkan/menambah data dengan query INSERT VALUES dan query INSERT ( nama_field ) VALUES sudah saya terangkan di tutorial cara menampilkan menambha mengedit dan menghapus data di mysql. Silahkan kalian baca di bagian Cara Menambah Data Dalam Tabel di Database Mysql. dan kali ini admin akan membahas lanjutan dari INPUTAN tabel ke mysql secara lanjut.

Cara Menambah Data dengan Query INSERT IGNORE VALUES

Dalam membuat sebuah tabel kita diharuskan membuat sebuah field/kolom dengan atribut PRIMARY KEY sebagai kata kunci utama dimana data yang ada dalam field/kolom tersebut tidak boleh sama / tidak boleh ada data duplikasi dalam filed tersbut jika terjadi duplikasi maka inputan akan gagal.

Pada tabel data_diri diatas kita sudah membuat / mendefinisikan filed nik sebagai PRIMARY KEY sehingga jika kita memasukan data nik yang sudah ada sebelumnya maka inputan tersebut akan gagal atau error dan semua perintah mysql akan dibatalkan.

Sebagai contoh kita ingin menambahkan sebuah data dengan nik 12345 pada tabel data_diri. Untuk data 12345 tersebut sudah ada di di field nik.

mysql> select*from data_diri;
+-------+--------------+---------------+----------------+
| nik   | nama_lengkap | jenis_kelamin | alamat         |
+-------+--------------+---------------+----------------+
| 12345 | Andi Gomez   | L             | BANGSRI JEPARA |
| 23456 | Angela Clara | P             | Jepara Jepara  |
+-------+--------------+---------------+----------------+
2 rows in set (0.00 sec)

mysql> INSERT INTO data_diri VALUES ('12345','Adinda','P','PAKIS AJI JEPARA'),('98789','Jumiarto','L','Mlonggo Jepara');
ERROR 1062 (23000): Duplicate entry '12345' for key 'PRIMARY'
mysql> select*from data_diri;
+-------+--------------+---------------+----------------+
| nik   | nama_lengkap | jenis_kelamin | alamat         |
+-------+--------------+---------------+----------------+
| 12345 | Andi Gomez   | L             | BANGSRI JEPARA |
| 23456 | Angela Clara | P             | Jepara Jepara  |
+-------+--------------+---------------+----------------+
2 rows in set (0.00 sec)

mysql>

Dari kode perintah Query diatas admin mencoba untuk memasukan dua data. Pada data nik yang inputan yang pertama (12345) sama dengan data nik yang sudah ada di field nik. dan data inputan nik yang kedua (98789) beda dan belum ada didalam data filed nik yang sudah tersimpan dalam tabel. Mengapa saat saya menginput data tersebut kok data nik yang kedua tidak masuk ? padahal belum ada dalam data field/kolom tersebut. Inputan nik yang kedua tidak masuk dikarenakan sudah terhalang alias terjadi error di awal inputan nik yang pertama terjadi duplicate entry sehingga untuk semua proses selanjutnya dibatalkan semua.

Untuk menagani masalah tersebut agar tidak dibatalakan untuk inputan nik yang kedua maka kita gunakan perintah opsional/pilihan IGNORE seperti pada query berikut ini.
  
mysql> select*from data_diri;
+-------+--------------+---------------+----------------+
| nik   | nama_lengkap | jenis_kelamin | alamat         |
+-------+--------------+---------------+----------------+
| 12345 | Andi Gomez   | L             | BANGSRI JEPARA |
| 23456 | Angela Clara | P             | Jepara Jepara  |
+-------+--------------+---------------+----------------+
2 rows in set (0.02 sec)

mysql> INSERT IGNORE INTO data_diri VALUES ('12345','Adinda','P','PAKIS AJI JEPARA'),('98789','Jumiarto','L','Mlonggo Jepara');
Query OK, 1 row affected (0.36 sec)
Records: 2  Duplicates: 1  Warnings: 0

mysql> select * from data_diri;
+-------+--------------+---------------+----------------+
| nik   | nama_lengkap | jenis_kelamin | alamat         |
+-------+--------------+---------------+----------------+
| 12345 | Andi Gomez   | L             | BANGSRI JEPARA |
| 23456 | Angela Clara | P             | Jepara Jepara  |
| 98789 | Jumiarto     | L             | Mlonggo Jepara |
+-------+--------------+---------------+----------------+
3 rows in set (0.00 sec)

mysql>

Dengan tambahan perintah IGNORE maka data inputan yang kedua tetap masuk walaupun data yang pertama terjadi error duplikasi PRIMARY KETY.

Cara Menambah Data dengan Penggunaan Query INSERT VALUES ON DUPLICATE KEY UPDATE

Selain perintah Opsional IGNORE sepoerti diatas tadi. Ada lagi pilihan/opsional lain untuk menagani duplikasi data dengan mengupdate data kolom lain. Langsung saja ke contoh querynya.

mysql> select * from data_diri;
+-------+--------------+---------------+----------------+
| nik   | nama_lengkap | jenis_kelamin | alamat         |
+-------+--------------+---------------+----------------+
| 12345 | Andi Gomez   | L             | BANGSRI JEPARA |
| 23456 | Angela Clara | P             | Jepara Jepara  |
| 98789 | Jumiarto     | L             | Mlonggo Jepara |
+-------+--------------+---------------+----------------+
3 rows in set (0.00 sec)

mysql> INSERT IGNORE INTO data_diri VALUES ('12345','Adinda','P','PAKIS AJI JEPARA') ON DUPLICATE KEY UPDATE nama_lengkap='Andika Mahesa';
Query OK, 2 rows affected (0.11 sec)

mysql> select * from data_diri;
+-------+---------------+---------------+----------------+
| nik   | nama_lengkap  | jenis_kelamin | alamat         |
+-------+---------------+---------------+----------------+
| 12345 | Andika Mahesa | L             | BANGSRI JEPARA |
| 23456 | Angela Clara  | P             | Jepara Jepara  |
| 98789 | Jumiarto      | L             | Mlonggo Jepara |
+-------+---------------+---------------+----------------+
3 rows in set (0.00 sec)

mysql>

Dari perintah query diatas bisa kita lihat admin menggunakan optional ON DUPLICATE KEY UPDATE dimana saat kita menginput data jika terjadi duplicate maka akan mengupdate data di salah satu field/kolom yang sudah kita tentukan. Contoh yang admin gunakan diatas saat menginput data jika terjadi duplikasi nik maka akan mengupdate field/kolom nama_lengkap (  ON DUPLICATE KEY UPDATE nama_lengkap='Andika Mahesa'; ) sesaui dengan kondisi data nik yang sama/yang terjadi duplikasi.

Sekian sedikit tutorial dari admin semoga bermanfaat SALAM SUKSES...!!
Please write your comments