Query Dasar MySQL
17. Mengubah Data
Tutorial Belajar MySQL Part 26: Cara Mengubah Data Tabel MySQL (query UPDATE)
Dalam tutorial belajar MySQL kali ini kita akan membahas tentang query UPDATE. Query ini digunakan untuk mengubah atau memperbarui data dalam sebuah tabel MySQL.
Mempersiapkan Tabel Sample: daftar_dosen
Untuk tabel contoh, saya masih memakai tabel daftar_dosen yang kita buat pada tutorial query SELECT MySQL. Namun jika anda mengikuti tutorial query DELETE sebelumnya, maka tabel daftar_dosen telah kosong sebagai efek dari query TRUNCATE.
Oleh karena itu silahkan buat ulang tabel daftar_dosen agar bisa mengikuti contoh dalam tutorial ini.
Isi tabel daftar_dosen:
NIP | 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 |
Cara Mengubah Data Tabel Menggunakan Query UPDATE
Query UPDATE
dipakai untuk melakukan perubahan data pada tabel MySQL, yakni proses update baris atau record. Format dasar query UPDATE adalah sebagai berikut:
UPDATE nama_tabel 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 kolomkondisi
adalah kondisi atau syarat dari baris yang akan diubah, misalnya jika kolom nama dosen= Sabrina Sari maka lakukan update.
Sebagai contoh, jika ingin mengubah no HP milik dosen Sabrina Sari menjadi 085298710065 dari tabel daftar_dosen, maka querynya adalah sebagai berikut:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | 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.
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 bisa dipakai untuk membatasi perintah UPDATE dengan batas tertentu.
Misalkan ingin mengubah alamat dari 5 dosen pertama yang diurutkan berdasarkan nama, maka querynya:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | 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 bisa melihat 5 dosen awal alamatnya telah berubah menjadi Bali.
Cara Mengupdate Seluruh Kolom dari Tabel MySQL
Jika kita tidak hati-hati dan lupa memberikan kondisi pada perintah WHERE, maka query UPDATE kita akan merubah seluruh kolom dari tabel tersebut. Berikut contoh kasusnya:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | 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, seluruh kolom tabel akan ter-update. Terkadang hasil seperti ini memang kita harapkan. Namun seperti contoh di atas, kesalahan dalam membuat logika WHERE bisa berdampak fatal terhadap keseluruhan tabel.