Belajar MySQL Part 22 : Menubah data Tabel MySQL(query UPDATE)
Dalam tutorial belajar MySQL kali ini, kita akan membahas tentang query UPDATE yang digunakan untuk mengubah atau memperbarui data dalam sebuah tabel MySQL.
Mempersiapkan Tabel Sample: daftar_dosen
Untuk tabel contoh, saya masih menggunakan tabel daftar_dosen yang kita buat pada tutorial query SELECT MySQL. Tetapi jika anda mengikuti tutorial tentang query DELETE sebelum tutorial ini, maka tabel daftar_dosen telah kosong disebabkan query TRUNCATE sebelumnya.
Cara Mengubah Data Tabel Menggunakan Query UPDATE
Query UPDATE digunakan untuk melakukan perubahan data pada tabel MySQL, yakni update baris atau record. Format dasar query UPDATE adalah sebagai berikut:
UPDATE nama_table SET nama_kolom = data_baru WHERE kondisi
- nama_tabel adalah nama dari tabel yang record/barisnya akan diperbaharui (update)
- nama_kolom adalah nama kolom dari tabel yang akan diupdate.
- data_baru adalah nilai data yang akan diinput sebagai nilai baru dari kolom
- kondisi adalah kodisi atau syarat dari baris yang akan diubah, misalnya jika kolom nama dosen= Sabrina Sari maka lakukan update.
Sebagai contoh, jika saya ingin merubah no HP dari dosen Sabrina Sari menjadi 085298710065 dari tabel daftar_dosen, maka querynya adalah sebagai berikut:
mysql> SELECT * FROM daftar_dosen WHERE nama_dosen='Sabrina Sari';
+------------+--------------+------------+-----------+
| NIP_dosen | nama_dosen | no_hp | alamat |
+------------+--------------+------------+-----------+
| 0160436012 | Sabrina Sari | 0812349900 | Pekanbaru |
+------------+--------------+------------+-----------+
1 row in set (0.08 sec)
mysql> UPDATE daftar_dosen SET no_hp ='085298710065'
WHERE nama_dosen='Sabrina Sari';
Query OK, 1 row affected (0.07 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> SELECT * FROM daftar_dosen WHERE nama_dosen='Sabrina Sari';
+------------+--------------+--------------+-----------+
| NIP_dosen | nama_dosen | no_hp | alamat |
+------------+--------------+--------------+-----------+
| 0160436012 | Sabrina Sari | 085298710065 | Pekanbaru |
+------------+--------------+--------------+-----------+
1 row in set (0.00 sec)
Dari query diatas dapat dilihat bahwa kolom no_hp untuk nama dosen Sabrina Sari telah diupdate menjadi nomor baru.
Cara Mengupdate Lebih dari 1 Baris
Untuk query yang lebih rumit, kita bisa merubah beberapa kolom sekaligus. Syarat untuk kondisi juga dapat menggunakan operator logika seperti OR atau AND sekaligus.
mysql> SELECT * FROM daftar_dosen;
+------------+----------------+------------+-----------+
| NIP_dosen | nama_dosen | no_hp | alamat |
+------------+----------------+------------+-----------+
| 0160436012 | Sabrina Sari | 0812349900 | Pekanbaru |
| 0260432002 | Maya Ari Putri | 0812345234 | Palembang |
| 0275430005 | Susi Indriani | 0812656532 | Bogor |
| 0480432066 | Tia Santrini | 0812451177 | Padang |
| 0576431001 | M. Siddiq | 0812979005 | Jakarta |
| 0770435006 | Rubin Hadi | 0812567678 | Papua |
| 0869437003 | Mustalifah | 0812338877 | Aceh |
| 1080432007 | Arif Budiman | 0812456345 | Makasar |
+------------+----------------+------------+-----------+
8 rows in set (0.00 sec)
mysql> UPDATE daftar_dosen SET alamat ='Surabaya' WHERE
nama_dosen='Rubin Hadi' OR NIP_dosen='1080432007'
OR no_hp='0812345234';
Query OK, 3 rows affected (0.16 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql> SELECT * FROM daftar_dosen;
+------------+----------------+------------+-----------+
| NIP_dosen | nama_dosen | no_hp | alamat |
+------------+----------------+------------+-----------+
| 0160436012 | Sabrina Sari | 0812349900 | Pekanbaru |
| 0260432002 | Maya Ari Putri | 0812345234 | Surabaya |
| 0275430005 | Susi Indriani | 0812656532 | Bogor |
| 0480432066 | Tia Santrini | 0812451177 | Padang |
| 0576431001 | M. Siddiq | 0812979005 | Jakarta |
| 0770435006 | Rubin Hadi | 0812567678 | Surabaya |
| 0869437003 | Mustalifah | 0812338877 | Aceh |
| 1080432007 | Arif Budiman | 0812456345 | Surabaya |
+------------+----------------+------------+-----------+
8 rows in set (0.00 sec)
Dari query diatas terlihat bahwa 3 baris/record telah berubah alamatnya menjadi Surabaya. Dalam satu statement UPDATE, kita membuat 3 buah logika OR.
Peringatan !
Dalam manual MySQL, format penulisan lengkap dari query UPDATE adalah :
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
Penjelasan tentang penggunaan perintah ORDER BY dan LIMIT akan kita bahas sebentar lagi
Cara Mengupdate Record dengan Query UPDATE..ORDER BY..LIMIT
Sama seperti query DELETE, query UPDATE juga memiliki perintah opsional ORDER BY..LIMIT untuk pemrosesan tingkat lanjut. Perintah ORDER BY..LIMIT digunakan untuk membatasi perintah UPDATE dengan batas tertentu.
Misalkan kita ingin mengubah alamat dari 5 baris awal tabel daftar_dosen yang diurutkan berdasarkan nama, maka querynya:
mysql> SELECT * FROM daftar_dosen ORDER BY nama_dosen;
+------------+----------------+------------+-----------+
| NIP_dosen | nama_dosen | no_hp | alamat |
+------------+----------------+------------+-----------+
| 1080432007 | Arif Budiman | 0812456345 | Surabaya |
| 0576431001 | M. Siddiq | 0812979005 | Jakarta |
| 0260432002 | Maya Ari Putri | 0812345234 | Surabaya |
| 0869437003 | Mustalifah | 0812338877 | Aceh |
| 0770435006 | Rubin Hadi | 0812567678 | Surabaya |
| 0160436012 | Sabrina Sari | 0812349900 | Pekanbaru |
| 0275430005 | Susi Indriani | 0812656532 | Bogor |
| 0480432066 | Tia Santrini | 0812451177 | Padang |
+------------+----------------+------------+-----------+
8 rows in set (0.00 sec)
mysql> UPDATE daftar_dosen SET alamat ='Bali' ORDER BY nama_dosen LIMIT 5;
Query OK, 5 rows affected (0.09 sec)
Rows matched: 5 Changed: 5 Warnings: 0
mysql> SELECT * FROM daftar_dosen ORDER BY nama_dosen;
+------------+----------------+------------+-----------+
| NIP_dosen | nama_dosen | no_hp | alamat |
+------------+----------------+------------+-----------+
| 1080432007 | Arif Budiman | 0812456345 | Bali |
| 0576431001 | M. Siddiq | 0812979005 | Bali |
| 0260432002 | Maya Ari Putri | 0812345234 | Bali |
| 0869437003 | Mustalifah | 0812338877 | Bali |
| 0770435006 | Rubin Hadi | 0812567678 | Bali |
| 0160436012 | Sabrina Sari | 0812349900 | Pekanbaru |
| 0275430005 | Susi Indriani | 0812656532 | Bogor |
| 0480432066 | Tia Santrini | 0812451177 | Padang |
+------------+----------------+------------+-----------+
8 rows in set (0.06 sec)
Dari hasil query tersebut kita dapat melihat 5 baris awal dari tabel daftar_dosen, alamatnya telah berubah menjadi Bali.
Cara Mengupdate Seluruh Kolom dari Tabel MySQL
Jika kita tidak hati-hati dan lupa memberikan kodisi pada perintah WHERE, maka query UPDATE kita akan merubah seluruh kolom dari tabel tersebut.
mysql> SELECT * FROM daftar_dosen;
+------------+----------------+------------+-----------+
| NIP_dosen | nama_dosen | no_hp | alamat |
+------------+----------------+------------+-----------+
| 0160436012 | Sabrina Sari | 0812349900 | Pekanbaru |
| 0260432002 | Maya Ari Putri | 0812345234 | Bali |
| 0275430005 | Susi Indriani | 0812656532 | Bogor |
| 0480432066 | Tia Santrini | 0812451177 | Padang |
| 0576431001 | M. Siddiq | 0812979005 | Bali |
| 0770435006 | Rubin Hadi | 0812567678 | Bali |
| 0869437003 | Mustalifah | 0812338877 | Bali |
| 1080432007 | Arif Budiman | 0812456345 | Bali |
+------------+----------------+------------+-----------+
8 rows in set (0.00 sec)
mysql> UPDATE daftar_dosen SET no_hp='085278790005';
Query OK, 8 rows affected (0.06 sec)
Rows matched: 8 Changed: 8 Warnings: 0
mysql> SELECT * FROM daftar_dosen;
+------------+----------------+--------------+-----------+
| NIP_dosen | nama_dosen | no_hp | alamat |
+------------+----------------+--------------+-----------+
| 0160436012 | Sabrina Sari | 085278790005 | Pekanbaru |
| 0260432002 | Maya Ari Putri | 085278790005 | Bali |
| 0275430005 | Susi Indriani | 085278790005 | Bogor |
| 0480432066 | Tia Santrini | 085278790005 | Padang |
| 0576431001 | M. Siddiq | 085278790005 | Bali |
| 0770435006 | Rubin Hadi | 085278790005 | Bali |
| 0869437003 | Mustalifah | 085278790005 | Bali |
| 1080432007 | Arif Budiman | 085278790005 | Bali |
+------------+----------------+--------------+-----------+
8 rows in set (0.00 sec)
Dapat dilihat dengan mengeliminasi kondisi WHERE, mengakibatkan seluruh kolom tabel akan diupdate. Terkadang hasil seperti ini memang yang kita harapkan, namun seperti contoh diatas, kesalahan dalam membuat logika WHERE akan berdampak fatal terhadap keseluruhan tabel.
Dalam tutorial selanjutnya, kita akan membahas tentang Cara Mengganti Tampilan Nama Kolom Menggunakan Alias (AS).
artikelnya sangat membantu
ReplyDeleteAndroid