Tutorial Belajar MySQL Part 26: Cara Mengubah 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.

Tabel daftar_dosen

NIPNama DosenNo HPAlamat
0160436012Sabrina Sari0812349900Pekanbaru
0260432002Maya Ari Putri0812345234Palembang
0275430005Susi Indriani0812656532Bogor
0480432066Tia Santrini0812451177Padang
0576431001M. Siddiq0812979005Jakarta
0770435006Rubin Hadi0812567678Papua
0869437003Mustalifah0812338877Aceh
1080432007Arif Budiman0812456345Makasar

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_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 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.

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).


Tutorial Terkait:

31 Comments

  1. Yogha
    13 Dec 13
    • Andre
      16 Dec 13
  2. Nizar
    26 Apr 15
    • Andre
      26 Apr 15
  3. alung
    29 Apr 15
    • Andre
      29 Apr 15
  4. azhari
    13 Aug 15
    • Andre
      16 Aug 15
  5. melani
    09 Sep 15
  6. brians
    11 Mar 16
  7. Limz Puth
    18 May 16
    • Limz Puth
      18 May 16
      • Andre
        19 May 16
        • Limz Puth
          19 May 16
        • Andre
          19 May 16
    • Anonymous
      31 May 17
  8. Anonymous
    17 Jun 16
    • Andre
      18 Jun 16
  9. rekananda
    15 Jul 16
    • rekananda
      15 Jul 16
      • Andre
        15 Jul 16
  10. Akhmad Sulaiman
    10 Nov 16
    • Andre
      11 Nov 16
  11. Anonymous
    31 May 17
  12. Galih
    13 Jun 17
    • Andre
      14 Jun 17
  13. Ndun
    04 Jul 17
  14. johans putra
    22 Oct 17
    • Andre
      23 Oct 17
  15. Azwani
    23 Oct 17

Add Comment