Untuk Memasukkan atau menambah data baru dalam sebuah tabel, gunakan perintah INSERT INTO ... diikuti beberapa nilai dan ekspresi lainnya. Kita akan belajar bersama bagaimana input data dalam database SQL (MariaDB khususnya). Tutorial ini tidak hanya untuk MariaDB saja tapi juga berlaku untuk MySQL. Jadi, meskipun database sistem Anda masih menggunakan MySQL Anda masih bisa mengikuti panduan di bawah ini:


Syntax

MariaDB
Syntax
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
 [INTO] tbl_name [PARTITION (partition_list)] [(col,...)]
 {VALUES | VALUE} ({expr | DEFAULT},...),(...),...
 [ ON DUPLICATE KEY UPDATE
   col=expr
     [, col=expr] ... ]

Penjelasan

Dalam sebuah database, kegiatan menambahkan data baru akan sering dilakukan karena database tanpa data (konten) tidaklah berarti. Untuk menambah (input) data kita akan selalu bertemu dengan perintah INSERT. Tambahan kata INTO, hanyalah bersifat opsional meskipun kita lupa menulisnya, perintah tetap akan dijalankan. Tapi, selalu dianjurkan untuk menulis kata INTO setelah INSERT Jadi tepatnya adalah INSERT INTO.

Penting: Agar dapat mengikuti tutorial ini, silahkan terlebih dahulu buat table dengan menjalankan perintah berikut:

MariaDB
CREATE TABLE `guru` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nama` varchar(50) NOT NULL,
  `tgl_lahir` date DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1

Contoh Memasukkan / Tambah Data Baru

Berikut beberapa contoh menggunakan INSERT untuk menambah data ke dalam database:

Contoh Input Data Cuma Satu (Baris)

MariaDB
INSERT INTO guru (id, nama, tgl_lahir)
VALUE(1, 'Sulaiman', '1987-02-21');

id, nama, tgl_lahir adalah contoh nama kolom. Jika kita tidak sebutkan nama-nama kolomnya seperti contoh di bawah ini, maka seluruh data (VALUE) untuk masing-masing kolom harus ditulis (disebutkan) sesuai urutan semua kolom yang ada dalam tabel tersebut.

MariaDB
INSERT INTO guru
VALUE(NULL, 'Jaka Tingkir', '1987-02-21');

Contoh diatas, kita tidak menyebutkan spesifik kolom apa saya yang hendak ditulis (diisi konten). Dengan demikian, kita harus menulis seluruh Value dari kolom-kolom yang ada dalam tabel tersebut.

Pada contoh berikutnya, kita dapat menentukkan lebih spesifik kolom apa saja yang mau diisi datanya dengan menyebutkan nama-nama kolomnya didalam kurung setelah nama tabel.

Contoh Input Data lebih dari Satu (Baris)

MariaDB
INSERT INTO namatabel (kolom1, kolom2)
VALUES ('konten untuk kolom1', 'konten untuk kolom2'),
  ('konten kedua untuk kolom1', 'konten kedua untuk kolom2')

Harap diperhatikan. Pada contoh diatas, hanya sekedar contoh sintaks. Kenyataannya, konten harus diisi sesuai dengan tipe data yang digunakan pada masing-masing kolom. Untuk input data lebih dari satu (baris) gunakan pemisah koma (,) setelah dalam kurung, yang menunjukkan setiap kurung merupakan satu baris data.

Contoh ini tidak jauh berbeda dengan contoh pertama, hanya saja disini kita menginput data lebih dari satu (baris) yang dipisahkan dengan koma (,) dan mengganti kata VALUE dengan VALUES (plural).

INSERT INTO ... SET

Memasukkan Data Baru dengan Klausa SET

MariaDB
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name [PARTITION (partition_list)]
    SET col={expr | DEFAULT}, ...
    [ ON DUPLICATE KEY UPDATE
      col=expr
        [, col=expr] ... ]

Menggunakan tambahan SET, pada dasarnya sama seperti kita menggunakan perintah UPDATE yang digunakan untuk memeperbarui (update) data. Disini, kita men-set kolom = diikuti data yang hendak kita input.

Contohnya adalah sebagai berikut:

MariaDB
INSERT INTO guru
SET nama = 'Budi', tgl_lahir = '1982-02-11';

INSERT INTO ... SELECT

Memasukkan Data Baru dengan Klausa SELECT

MariaDB
INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name [PARTITION (partition_list)] [(col,...)]
    SELECT ...
    [ ON DUPLICATE KEY UPDATE
      col=expr
        [, col=expr] ... ]

Perintah SELECT digunakan untuk menyeleksi tabel lain. Artinya, kita dapat memasukkan (input) data dari Table lain. Ini, dapat menghemat waktu kita sehingga tidak perlu menginput ulang data. Perlu diperhatikan tipe data yang digunakan juga harus sesuai pada kolom-kolom antara dua table tersebut.

Pada contoh dibawah ini, saya memiliki dua table (guru dan staf). Table guru sebelumnya sudah dibuat dan berisi data. tabel staf masih kosong kemudian saya isi datanya dengan cara menyalin dari table guru tersebut.

Pertama-tama, silahkan jalankan perintah berikut:

MariaDB
CREATE TABLE staf LIKE guru; 

Perintah diatas digunakan untuk membuat table baru staf dengan format (termasuk definisi dan tipe datanya) sama seperti table guru. Selanjutnya saya isi datanya dengan menyalin dari table guru yang memiliki kolom id=1.

MariaDB
INSERT INTO staf
SELECT * FROM guru WHERE id = 1;

LOAD DATA INFILE

Menambahkan Data dari sebuah File

LOAD DATA INFILE adalah perintah yang digunakan untuk memasukkan data dari sebuah file terpisah. Agar file tersebut dapat dibaca dan bisa dimasukkan dalam database SQL, harus memiliki format yang sesuai.

Pada contoh dibawah ini, saya membuat sebuah file dengan notepad (text editor) dan saya simpan dengan format .txt kemudian saya simpan dalam drive C: (root). File tersebut saya beri nama dataguru.txt dan saya isi dengan data sebagai berikut:

dataguru.txt
1	'Ahmad'	1989-03-20
2	'Andi'	1984-02-07

Data diatas, terlihat seperti terbagi dalam 3 kolom (id, nama, tgl_lahir). Dalam text editor (atau Notepad) setiap kolom cukup dipisahkan dengan menekan tab pada keyboard. Setiap baris, diakhiri dengan Enter.

Untuk mengimport (memasukkan) data dari file ke dalam database, saya menjalankan perintah berikut:

MariaDB
LOAD DATA INFILE 'C:\dataguru.txt'
INTO TABLE guru(id, nama, tgl_lahir);

Hasilnya terlihat seperti ini:

MariaDB
MariaDB [belajar]> LOAD DATA INFILE 'C:\dataguru.txt'
    -> INTO TABLE guru(id, nama, tgl_lahir);
Query OK, 2 rows affected (0.10 sec)
Records: 2  Deleted: 0  Skipped: 0  Warnings: 0

Kemudian, saya lihat hasilnya apakah benar data tersebut sudah masuk dalam database, dengan menjalankan perintah berikut:

MariaDB
SELECT * FROM guru 

Hasilnya, ternyata sukses:

MariaDB
MariaDB [belajar]> SELECT * FROM guru;
+----+---------+---------------+
| id | nama    | tgl_lahir     |
+----+---------+---------------+
|  1 | 'Ahmad' | 1989-03-20    |
|  2 | 'Andi'  | 1984-02-07    |
+----+---------+---------------+
2 rows in set (0.00 sec)

Reference: