Pada panduan belajar MySQL kali ini, kita akan membahas mengenai query UPDATE yang digunakan bagi mengubah atau memperbarui data pada sebuah tabel MySQL.
Mempersiapkan Tabel Sampel: daftar_dosen
Bagi tabel contoh, saya masih menggunakan tabel daftar_dosen yang kita bikin di tutorial query SELECT MySQL. Tetapi seandainya sahabat mengikuti panduan mengenai query DELETE sebelum panduan ini, karenanya tabel daftar_dosen telah kosong disebabkan query TRUNCATE sebelumnya.
Tabel daftar_dosen
NIP | Nama Dosen | No HP | Tempat tinggal |
---|---|---|---|
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 |
Cara Mengubah Data Tabel Menggunakan Query UPDATE
Query UPDATE digunakan bagi menjalankan perubahan data di tabel MySQL, yakni update baris atau record. Format mendasar query UPDATE ialah selaku berikut:
1 |
UPDATE nama_tabel SET nama_kolom = data_baru WHERE kondisi |
- nama_tabel ialah nama dari tabel yang record/barisnya akan diperbaharui (update)
- nama_kolom ialah nama kolom dari tabel yang akan diupdate.
- data_baru ialah nilai data yang akan diinput selaku nilai baru dari kolom
- kondisi ialah kodisi atau syarat dari baris yang akan diubah, misalnya seandainya kolom nama dosen= Sabrina Sari karenanya lakukan update.
Selaku contoh, seandainya saya ingin merubah no HP dari dosen Sabrina Sari menjadi 085298710065 dari tabel daftar_dosen, karenanya querynya ialah selaku berikut:
1 |
mysql> SELECT * FROM daftar_dosen WHERE nama_dosen='Sabrina Sari';<br/>+------------+--------------+------------+-----------+<br/>| NIP_dosen | nama_dosen | no_hp | tempat tinggal |<br/>+------------+--------------+------------+-----------+<br/>| 0160436012 | Sabrina Sari | 0812349900 | Pekanbaru |<br/>+------------+--------------+------------+-----------+<br/>1 row in set (0.08 sec)<br/><br/>mysql> UPDATE daftar_dosen SET no_hp ='085298710065'<br/>WHERE nama_dosen='Sabrina Sari';<br/>Query OK, 1 row affected (0.07 sec)<br/>Rows matched: 1 Changed: 1 Warnings: 0<br/><br/>mysql> SELECT * FROM daftar_dosen WHERE nama_dosen='Sabrina Sari';<br/>+------------+--------------+--------------+-----------+<br/>| NIP_dosen | nama_dosen | no_hp | tempat tinggal |<br/>+------------+--------------+--------------+-----------+<br/>| 0160436012 | Sabrina Sari | 085298710065 | Pekanbaru |<br/>+------------+--------------+--------------+-----------+<br/>1 row in set (0.00 sec) |
Dari query diatas dapat dilihat bahwa kolom no_hp bagi nama dosen Sabrina Sari telah diupdate menjadi nomor baru.
Cara Mengupdate Lebih dari 1 Baris
Bagi query yang lebih rumit, kita dapat merubah beberapa kolom sekaligus. Syarat bagi kondisi pun dapat menggunakan operator logika seperti OR atau AND sekaligus.
1 |
mysql> SELECT * FROM daftar_dosen;<br/>+------------+----------------+------------+-----------+<br/>| NIP_dosen | nama_dosen | no_hp | tempat tinggal |<br/>+------------+----------------+------------+-----------+<br/>| 0160436012 | Sabrina Sari | 0812349900 | Pekanbaru |<br/>| 0260432002 | Maya Ari Putri | 0812345234 | Palembang |<br/>| 0275430005 | Susi Indriani | 0812656532 | Bogor |<br/>| 0480432066 | Tia Santrini | 0812451177 | Padang |<br/>| 0576431001 | M. Siddiq | 0812979005 | Jakarta |<br/>| 0770435006 | Rubin Hadi | 0812567678 | Papua |<br/>| 0869437003 | Mustalifah | 0812338877 | Aceh |<br/>| 1080432007 | Arif Budiman | 0812456345 | Makasar |<br/>+------------+----------------+------------+-----------+<br/>8 rows in set (0.00 sec)<br/><br/>mysql> UPDATE daftar_dosen SET tempat tinggal ='Surabaya' WHERE <br/>nama_dosen='Rubin Hadi' OR NIP_dosen='1080432007' <br/>OR no_hp='0812345234';<br/>Query OK, 3 rows affected (0.16 sec)<br/>Rows matched: 3 Changed: 3 Warnings: 0<br/><br/>mysql> SELECT * FROM daftar_dosen;<br/>+------------+----------------+------------+-----------+<br/>| NIP_dosen | nama_dosen | no_hp | tempat tinggal |<br/>+------------+----------------+------------+-----------+<br/>| 0160436012 | Sabrina Sari | 0812349900 | Pekanbaru |<br/>| 0260432002 | Maya Ari Putri | 0812345234 | Surabaya |<br/>| 0275430005 | Susi Indriani | 0812656532 | Bogor |<br/>| 0480432066 | Tia Santrini | 0812451177 | Padang |<br/>| 0576431001 | M. Siddiq | 0812979005 | Jakarta |<br/>| 0770435006 | Rubin Hadi | 0812567678 | Surabaya |<br/>| 0869437003 | Mustalifah | 0812338877 | Aceh |<br/>| 1080432007 | Arif Budiman | 0812456345 | Surabaya |<br/>+------------+----------------+------------+-----------+<br/>8 rows in set (0.00 sec) |
Dari query diatas terlihat bahwa 3 baris/record telah berubah alamatnya menjadi Surabaya. Pada satu statement UPDATE, kita merancang 3 buah logika OR.
1 |
UPDATE [LOW_PRIORITY] [IGNORE] table_reference<br/>SET col_name1=DEFAULT [, col_name2=DEFAULT] ...<br/>[WHERE where_condition]<br/>[ORDER BY ...]<br/>[LIMIT row_count] |
Penjelasan mengenai pemakaian petunjuk ORDER BY dan LIMIT akan kita bahas sebentar lagi
Cara Mengupdate Record dengan Query UPDATE..ORDER BY..LIMIT
Sama seperti query DELETE, query UPDATE pun mempunyai petunjuk opsional ORDER BY..LIMIT bagi pemrosesan tingkat lanjut. Petunjuk ORDER BY..LIMIT digunakan bagi membatasi petunjuk UPDATE dengan batas tertentu.
Misalkan kita ingin mengubah tempat tinggal dari 5 baris awal tabel daftar_dosen yang diurutkan menurut nama, karenanya querynya:
1 |
mysql> SELECT * FROM daftar_dosen ORDER BY nama_dosen;<br/>+------------+----------------+------------+-----------+<br/>| NIP_dosen | nama_dosen | no_hp | tempat tinggal |<br/>+------------+----------------+------------+-----------+<br/>| 1080432007 | Arif Budiman | 0812456345 | Surabaya |<br/>| 0576431001 | M. Siddiq | 0812979005 | Jakarta |<br/>| 0260432002 | Maya Ari Putri | 0812345234 | Surabaya |<br/>| 0869437003 | Mustalifah | 0812338877 | Aceh |<br/>| 0770435006 | Rubin Hadi | 0812567678 | Surabaya |<br/>| 0160436012 | Sabrina Sari | 0812349900 | Pekanbaru |<br/>| 0275430005 | Susi Indriani | 0812656532 | Bogor |<br/>| 0480432066 | Tia Santrini | 0812451177 | Padang |<br/>+------------+----------------+------------+-----------+<br/>8 rows in set (0.00 sec)<br/><br/>mysql> UPDATE daftar_dosen SET tempat tinggal ='Bali' ORDER BY nama_dosen LIMIT 5;<br/>Query OK, 5 rows affected (0.09 sec)<br/>Rows matched: 5 Changed: 5 Warnings: 0<br/><br/>mysql> SELECT * FROM daftar_dosen ORDER BY nama_dosen;<br/>+------------+----------------+------------+-----------+<br/>| NIP_dosen | nama_dosen | no_hp | tempat tinggal |<br/>+------------+----------------+------------+-----------+<br/>| 1080432007 | Arif Budiman | 0812456345 | Bali |<br/>| 0576431001 | M. Siddiq | 0812979005 | Bali |<br/>| 0260432002 | Maya Ari Putri | 0812345234 | Bali |<br/>| 0869437003 | Mustalifah | 0812338877 | Bali |<br/>| 0770435006 | Rubin Hadi | 0812567678 | Bali |<br/>| 0160436012 | Sabrina Sari | 0812349900 | Pekanbaru |<br/>| 0275430005 | Susi Indriani | 0812656532 | Bogor |<br/>| 0480432066 | Tia Santrini | 0812451177 | Padang |<br/>+------------+----------------+------------+-----------+<br/>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
Seandainya kita tak hati-hati dan lupa memberikan kodisi di petunjuk WHERE, karenanya query UPDATE kita akan merubah seluruh kolom dari tabel tersebut.
1 |
mysql> SELECT * FROM daftar_dosen;<br/>+------------+----------------+------------+-----------+<br/>| NIP_dosen | nama_dosen | no_hp | tempat tinggal |<br/>+------------+----------------+------------+-----------+<br/>| 0160436012 | Sabrina Sari | 0812349900 | Pekanbaru |<br/>| 0260432002 | Maya Ari Putri | 0812345234 | Bali |<br/>| 0275430005 | Susi Indriani | 0812656532 | Bogor |<br/>| 0480432066 | Tia Santrini | 0812451177 | Padang |<br/>| 0576431001 | M. Siddiq | 0812979005 | Bali |<br/>| 0770435006 | Rubin Hadi | 0812567678 | Bali |<br/>| 0869437003 | Mustalifah | 0812338877 | Bali |<br/>| 1080432007 | Arif Budiman | 0812456345 | Bali |<br/>+------------+----------------+------------+-----------+<br/>8 rows in set (0.00 sec)<br/><br/>mysql> UPDATE daftar_dosen SET no_hp='085278790005';<br/>Query OK, 8 rows affected (0.06 sec)<br/>Rows matched: 8 Changed: 8 Warnings: 0<br/><br/>mysql> SELECT * FROM daftar_dosen;<br/>+------------+----------------+--------------+-----------+<br/>| NIP_dosen | nama_dosen | no_hp | tempat tinggal |<br/>+------------+----------------+--------------+-----------+<br/>| 0160436012 | Sabrina Sari | 085278790005 | Pekanbaru |<br/>| 0260432002 | Maya Ari Putri | 085278790005 | Bali |<br/>| 0275430005 | Susi Indriani | 085278790005 | Bogor |<br/>| 0480432066 | Tia Santrini | 085278790005 | Padang |<br/>| 0576431001 | M. Siddiq | 085278790005 | Bali |<br/>| 0770435006 | Rubin Hadi | 085278790005 | Bali |<br/>| 0869437003 | Mustalifah | 085278790005 | Bali |<br/>| 1080432007 | Arif Budiman | 085278790005 | Bali |<br/>+------------+----------------+--------------+-----------+<br/>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 pada merancang logika WHERE akan berdampak fatal kepada keseluruhan tabel.
Pada panduan berikutnya, kita akan membahas mengenai Cara Mengganti Tampilan Nama Kolom Menggunakan Alias (AS).
Sumber https://www.duniailkom.com/