Menggunakan Statement Replace Di MySQL

Sumber: azquotes

Statement replace di MySQL adalah statement yang secara fungsinya mirip dengan statement INSERT hanya saja ketika data yang ditambahkan sudah ada maka data tersebut akan dihapus terlebih dahulu sebelum diganti (replace) dengan data baru, hal tersebut hanya berlaku pada kolom yang memiliki constraint unik / primary key. Tentunya replace disini berbeda dengan fungsi replace pada operasi string mysql, sehingga penyebutan untuk keduanyapun berbeda dimana yang satu disebut sebagai statement replace sementara yang satu disebut sebagai fungsi replace. Berikut ini adalah format dan contoh penggunaan statement replace.

Format:

replace into nama_tabel (daftar_kolom) values (daftar_nilai);

Tabel:

mysql> desc contoh;
+--------+-------------+------+-----+---------+----------------+
| Field  | Type        | Null | Key | Default | Extra          |
+--------+-------------+------+-----+---------+----------------+
| kolom1 | int         | NO   | PRI | NULL    | auto_increment |
| kolom2 | int         | YES  | UNI | NULL    |                |
| kolom3 | varchar(20) | YES  |     | NULL    |                |
+--------+-------------+------+-----+---------+----------------+
3 rows in set (0.16 sec)

Contoh:

mysql> select * from contoh where kolom1 > 5;
+--------+--------+----------+
| kolom1 | kolom2 | kolom3   |
+--------+--------+----------+
|      6 |      6 | Enam     |
|      7 |      7 | Tujuh    |
|      8 |      8 | Delapan  |
|      9 |      9 | Sembilan |
+--------+--------+----------+
4 rows in set (0.00 sec)

mysql> replace into contoh (kolom2, kolom3) values (10, "Sepuluh");
Query OK, 1 row affected (0.02 sec)

mysql> select * from contoh where kolom1 > 5;
+--------+--------+----------+
| kolom1 | kolom2 | kolom3   |
+--------+--------+----------+
|      6 |      6 | Enam     |
|      7 |      7 | Tujuh    |
|      8 |      8 | Delapan  |
|      9 |      9 | Sembilan |
|     10 |     10 | Sepuluh  |
+--------+--------+----------+
5 rows in set (0.04 sec)

mysql> replace into contoh (kolom3) values ("Sebelas");
Query OK, 1 row affected (0.02 sec)

mysql> select * from contoh where kolom1 > 5;
+--------+--------+----------+
| kolom1 | kolom2 | kolom3   |
+--------+--------+----------+
|      6 |      6 | Enam     |
|      7 |      7 | Tujuh    |
|      8 |      8 | Delapan  |
|      9 |      9 | Sembilan |
|     10 |     10 | Sepuluh  |
|     11 |   NULL | Sebelas  |
+--------+--------+----------+
6 rows in set (0.00 sec)

Pada contoh diatas adalah contoh penggunan statement replace untuk menambahkan data baru dimana data yang ditambahkan tidak memiliki nilai duplikasi, selain itu pada kolom2 memiliki nilai null dikarenakan kolom tersebut memang di izinkan tidak memiliki nilai / NULL (nullable).

Statement Replace untuk Mengganti Data
Selain dapat menambahkan data kita juga bisa menggunakan statement replace untuk mengganti data yang sudah ada, berikut adalah contohnya:

mysql> replace into contoh (kolom2, kolom3) values (9, "Smbilan");
Query OK, 2 rows affected (0.10 sec)

mysql> select * from contoh where kolom1 > 6;
+--------+--------+----------+
| kolom1 | kolom2 | kolom3   |
+--------+--------+----------+
|      7 |      7 | Tujuh    |
|      8 |      8 | Delapan  |
|     10 |     10 | Sepuluh  |
|     11 |   NULL | Sebelas  |
|     12 |      9 | Smbilan  |
+--------+--------+----------+
5 rows in set (0.00 sec)

Dari contoh diatas dapat dilihat bahwa ketika kita mencoba merubah data yang sudah ada menggunakan statement replace sebetulnya data tersebut tidak langsung diperbaharui melainkan dihapus terlebih dahulu dan kemudian diganti dengan data yang baru, untuk itulah statement ini disebut dengan replace yang berarti mengganti.

Replace... Set...
Selain cara diatas untuk menambah atau mengganti data yang tersimpan menggunakan statement replace, kita dapat menggunakan cara lain dari statement replace untuk menambah ataupun mengubah data, format dan contohnya sebagai berikut:
Format:

Replace into nama_tabel set kolom 1 = nilai, kolom2 = nilai;

Contoh:

mysql> replace into contoh set kolom2 = 11, kolom3 = "Sebelas";
Query OK, 1 row affected (0.08 sec)

mysql> replace into contoh set kolom2 = 10, kolom3 = "Spluh";
Query OK, 2 rows affected (0.07 sec)

mysql> select * from contoh where kolom1 > 6;
+--------+--------+---------+
| kolom1 | kolom2 | kolom3  |
+--------+--------+---------+
|      7 |      7 | Tujuh   |
|      8 |      8 | Delapan |
|     11 |   NULL | Sebelas |
|     12 |      9 | Smbilan |
|     13 |     11 | Sebelas |
|     14 |     10 | Spluh   |
+--------+--------+---------+
6 rows in set (0.00 sec)

Pada dasarnya tidak ada bedanya dengan replace into yang sudah dijabarkan sebelumnya, replace... set.. hanya merubah bentuk penulisan saja sehingga lebih mirip dengan statement update.
Bayu Radityo

Seorang lulusan teknik informatika yang senang dalam berbagi ilmu pengetahuan, dan membuat karya digital berupa photomanipulation dan digital drawing. instagram external-link

Posting Komentar

Lebih baru Lebih lama