Cara menyimpan / menambahkan data pada Tabel MySQL

Source: Unsplash

Sebagai sebuah "penyimpanan data" maka sudah sewajarnya menyimpan/menambah data ke dalam database menjadi salah satu aktivitas dasar dari sebuah database, tentunya untuk menyimpan data ini dapat dilakukan setelah skema database telah dibuat. 

Data biasanya disimpan melalui program aplikasi yang berjalan diatas database dan dikenal sebagai rdbms atau program aplikasi lainnya yang terhubung dengan rdbms. Pada rdbms mysql dapat menggunakan perintah INSERT INTO untuk menyimpan sebuah data kedalam tabel, untuk lebih jelasnya dalam menggunakan perintah insert into, berikut adalah format sintaks dan contohnya:

INSERT INTO pada semua kolom:
Format:
Insert into nama_tabel values (nilai_kolom_1, nilai_kolom_2.... nilai_kolomN);
Contoh:
Tabel:

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

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

Sintaks:

mysql> Insert into contoh values (1, 1, "satu");
Query OK, 1 row affected (0.11 sec)

mysql> select * from contoh;
+--------+--------+--------+
| kolom1 | kolom2 | kolom3 |
+--------+--------+--------+
|      1 |      1 | satu   |
+--------+--------+--------+
2 rows in set (0.00 sec)

mysql> Insert into contoh2 values (1, 1, "satu");
Query OK, 1 row affected (0.08 sec)

mysql> select * from contoh2;
+--------+--------+--------+
| kolom1 | kolom2 | kolom3 |
+--------+--------+--------+
|      1 | 1      | satu   |
+--------+--------+--------+
2 rows in set (0.08 sec)

Pada contoh diatas kita tetap dapat menyimpan/menambah data pada tabel yang sudah memiliki atribut auto_increment.

INSERT INTO pada kolom tertentu:
Selain cara diatas, kita juga dapat menyimpan data pada kolom tertentu, namun ada kondisi tertentu sehingga data dapat tersimpan, diantaranya sebagai berikut:
  • Tidak dapat mengabaikan kolom dengan primary key
  • Tidak dapat mengabaikan kolom dengan atribut not null
  • Dapat mengabaikan kolom dengan auto_increment
Contoh dan formatnya adalah sebagai berikut:
Format:
Insert into nama_tabel (kolom1, kolom2,...., kolomN) values (nilai_kolom_1, nilai_kolom_2.... nilai_kolomN)

Contoh:

mysql> Insert into contoh (kolom2, kolom3) values (2, "dua");
Query OK, 1 row affected (0.01 sec)

mysql> select * from contoh;
+--------+--------+--------+
| kolom1 | kolom2 | kolom3 |
+--------+--------+--------+
|      1 |      1 | satu   |
|      2 |      2 | dua    |
+--------+--------+--------+
2 rows in set (0.00 sec)

mysql> Insert into contoh2 (kolom2, kolom3) values (2, "dua");
ERROR 1364 (HY000): Field 'kolom1' doesn't have a default value

mysql> Insert into contoh2 (kolom1, kolom3) values (2, "dua");
Query OK, 1 row affected (0.01 sec)

mysql> select * from contoh2;
+--------+--------+--------+
| kolom1 | kolom2 | kolom3 |
+--------+--------+--------+
|      1 | 1      | satu   |
|      2 | NULL   | dua    |
+--------+--------+--------+
2 rows in set (0.08 sec)
Dari contoh diatas, penulis dapat menambahkan data pada tabel contoh dengan mengabaikan kolom1 karena pada kolom tersebut telah memiliki atribut auto_increment sehingga secara otomatis akan menambah nilainya sendiri, sementara pada tabel contoh2 saat penulis mencoba mengabaikan kolom1 justru menampilkan pesan error 1364 atau Field doesn't have a default value karena disebabkan kolom tersebut selain memiliki atribut not null juga tidak memiliki nilai default ataupun auto_increment sehingga kolom1 pada tabel contoh2 tidak dapat diabaikan, namun perhatikan pada kolom2 dari tabel contoh2 yang bernilai Null dikarenakan pada kolom2 diizinkan untuk bernilai Null (nullable) dengan menggunakan atibut null sehingga dapat di abaikan saat menambahkan data.

Kita juga dapat merubah urutan kolom pada saat menambah/menyimpan data pada kolom tertentu, selama sesuai dengan tipe data yang digunakan, contohnya seperti berikut:

mysql> insert into contoh (kolom3, kolom2) values ("tiga", 3);
Query OK, 1 row affected (0.15 sec)

mysql> select * from contoh;
+--------+--------+--------+
| kolom1 | kolom2 | kolom3 |
+--------+--------+--------+
|      1 |      1 | satu   |
|      2 |      2 | dua    |
|      3 |      3 | tiga   |
+--------+--------+--------+
3 rows in set (0.00 sec)

Merubah urutan kolom tidak akan memberikan pengaruh atau error selama data yang disimpan sesuai dengan penggunaan tipe data yang digunakan.

Menyimpan banyak Data
Menyimpan banyak data sekaligus pada mysql bisa dilakukan dengan dua cara diatas, format dan contohnya sebagai berikut

Format:

Insert into nama_tabel values (nilai_kolom_1, nilai_kolom_2.... nilai_kolomN),...., (nilai_kolom_1, nilai_kolom_2.... nilai_kolomN) ;
Insert into nama_tabel (kolom1, kolom2,...., kolomN) values (nilai_kolom_1, nilai_kolom_2.... nilai_kolomN), ...., (nilai_kolom_1, nilai_kolom_2.... nilai_kolomN)

Contoh:

mysql> insert into contoh values
    -> (4, 4, "Empat"),
    -> (5, 5, "Lima"),
    -> (6, 6, "Enam"),
    -> (7, 7, "Tujuh"),
    -> (8, 8, "Delapan"),
    -> (9, 9, "Sembilan");
Query OK, 6 rows affected (0.16 sec)
Records: 6  Duplicates: 0  Warnings: 0

mysql> select * from contoh;
+--------+--------+----------+
| kolom1 | kolom2 | kolom3   |
+--------+--------+----------+
|      1 |      1 | satu     |
|      2 |      2 | dua      |
|      3 |      3 | tiga     |
|      4 |      4 | Empat    |
|      5 |      5 | Lima     |
|      6 |      6 | Enam     |
|      7 |      7 | Tujuh    |
|      8 |      8 | Delapan  |
|      9 |      9 | Sembilan |
+--------+--------+----------+
9 rows in set (0.00 sec)

Dari contoh diatas untuk menambahkan banyak data sekaligus kita hanya perlu menambahkan tanda koma disertai spasi atau bisa juga dengan menambah enter baru. 

Duplicate Entry
Pada mysql kita tidak dapat menambahkan data yang sama (duplikasi) pada kolom yang memiliki primary key ataupun unique constraint sehingga akan menampilkan pesan error seperti contoh berikut:

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

mysql> insert into contoh (kolom2, kolom3) values (1, "satu");
ERROR 1062 (23000): Duplicate entry '1' for key 'contoh.kolom2'

Sangat jelas bahwa kita tidak dapat menambahkan data dengan nilai yang sama pada kolom dengan primary key ataupun unique constraint, untuk menghindari/mengatasi duplikasi data saat menambahkan data mysql menyediakan statement non-standard yaitu Insert... on duplicate key update, Insert ignore dan replace, untuk pembahasannya dapat dicari melalui menu daftar isi. Dengan ini materi cara menambah / menyimpan data pada tabel mysql telah selesai, jangan sungkan untuk bertanya jika masih ada yang belum dipahami.
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