Sebagai tabel contoh untuk memahami perintah INSERT MySQL, kita akan membuat tabel mata_kuliah dalam database mahasiswa dengan query sebagai berikut:
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
| mysql> SHOW DATABASES; + --------------------+ | Database | + --------------------+ | information_schema | | mahasiswa | | mysql | | performance_schema | | test | + --------------------+ 5 rows in set (0.08 sec) mysql> USE mahasiswa; Database changed mysql> CREATE TABLE mata_kuliah (kode_matkul CHAR (5) PRIMARY KEY , nama_matkul VARCHAR (50) NOT NULL , jumlah_SKS TINYINT UNSIGNED DEFAULT '2' , nama_jurusan VARCHAR (50)); Query OK, 0 rows affected (0.01 sec) mysql> DESC mata_kuliah; + --------------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | + --------------+---------------------+------+-----+---------+-------+ | kode_matkul | char (5) | NO | PRI | NULL | | | nama_matkul | varchar (50) | NO | | NULL | | | jumlah_SKS | tinyint(3) unsigned | YES | | 2 | | | nama_jurusan | varchar (50) | YES | | NULL | | + --------------+---------------------+------+-----+---------+-------+ 4 rows in set (0.01 sec) |
Penulisan dasar query INSERT
Penulisan dasar dari perintah INSERT dalam MySQL adalah sebagai berikut:INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [ IGNORE ] [ INTO ] tbl_name [(col_name,...)] { VALUES | VALUE} ({expr | DEFAULT },...),(...),... [ ON DUPLICATE KEY UPDATE col_name=expr [, col_name=expr] ... ] |
sedikit penjelasan tentang format dasar MySQL diatas, di dalam manual MySQL,
perintah yang terdapat diantara 2 kurung siku ([.....]) adalah
optional, kita tidak harus menulis seluruh perintah tersebut untuk
menginputkan sebuah nilai pada tabel, namun dari format tersebut kita
dapat mengetahui berbagai opsi yang tersedia yang dapat digunakan.
Penggunaan Query INSERT…VALUES
Format perintah INSERT yang pertama kita bahas adalah yang paling sederhana, yaitu:INSERT INTO nama_tabel VALUES (nilai_kolom1, nilai_kolom2,...); |
Langsung saja kita contohkan untuk memasukkan sebaris data ke dalam tabel mata_kuliah:
1
2
3
4
5
6
7
8
9
10
| mysql> INSERT INTO mata_kuliah VALUES ( 'KIMDA' , 'Kimia Dasar' ,2, ' Kimia' ); Query OK, 1 row affected (0.06 sec) mysql> select * from mata_kuliah; + -------------+-------------+------------+--------------+ | kode_matkul | nama_matkul | jumlah_SKS | nama_jurusan | + -------------+-------------+------------+--------------+ | KIMDA | Kimia Dasar | 2 | Kimia | + -------------+-------------+------------+--------------+ 1 row in set (0.00 sec) |
Seperti yang telah kita bahas pada Tutorial MySQL Tipe Data String (CHAR atau VARCHAR) maupun NUMERIK (INT),
bahwa untuk kolom yang berisi karakter, harus berada di dalam tanda
petik (‘), dan sebaliknya untuk kolom yang berisi nilai numerik harus
tanpa tanda petik.
Jika kita ingin langsung memasukkan 2 baris data atau lebih dalam satu perintah query INSERT MySQL, kita tinggal menambahkan isi data untuk baris berikutnya dibelakang perintah dengan format penulisan sebagai berikut:INSERT INTO nama_tabel VALUES (nilai_kolom1a, nilai_kolom2a,...), (nilai_kolom1b, nilai_kolom2b,...); |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| mysql> INSERT INTO mata_kuliah VALUES ( 'MMDAS' , 'Matematika Dasar' ,4, 'Matematika' ), ( 'JRKOM' , 'Jaringan Komputer' ,2, 'Ilmu Komputer' ); Query OK, 2 rows affected (0.01 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from mata_kuliah; + -------------+-------------------+------------+---------------+ | kode_matkul | nama_matkul | jumlah_SKS | nama_jurusan | + -------------+-------------------+------------+---------------+ | JRKOM | Jaringan Komputer | 2 | Ilmu Komputer | | KIMDA | Kimia Dasar | 2 | Kimia | | MMDAS | Matematika Dasar | 4 | Matematika | + -------------+-------------------+------------+---------------+ 3 rows in set (0.00 sec) |
Penggunaan Query INSERT (nama_kolom)… VALUES
Untuk situasi dimana kolom yang akan diisi tidak diketahui urutannya, atau kita hanya akan mengisi sebagian kolom saja, maka kita harus mendefenisikan kolom-kolom mana saja yang akan diisi nilainya. Untuk keperluan tersebut, MySQL menyediakan fariasi untuk perintah INSERT, yaitu:INSERT INTO nama_tabel (kolom1,kolom2,...) VALUES (nilai_kolom1,nilai_kolom2,...); |
Sebagai contoh, kita akan menggunakan perintah INSERT (nama_kolom)… VALUES pada MySQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| mysql> TRUNCATE mata_kuliah; Query OK, 0 rows affected (0.05 sec) mysql> INSERT INTO mata_kuliah (kode_matkul,nama_matkul,jumlah_SKS,nama_jurusan) VALUES ( 'MMDAS' , 'Matematika Dasar' ,4, 'Matematika' ); Query OK, 1 row affected (0.05 sec) mysql> select * from mata_kuliah; + -------------+------------------+------------+--------------+ | kode_matkul | nama_matkul | jumlah_SKS | nama_jurusan | + -------------+------------------+------------+--------------+ | MMDAS | Matematika Dasar | 4 | Matematika | + -------------+------------------+------------+--------------+ 1 row in set (0.00 sec) |
perintah query TRUNCATE pada baris pertama digunakan untuk mengosongkan tabel mata_kuliah, hal ini semata-mata hanya untuk keperluan agar tabel mata_kuliah
kembali kosong. Silahkan abaikan perintah ini jika tidak ingin
mengosongkan isi tabel terlebih dahulu. Kita akan membahas perintah TRUNCATE pada tutorial selanjutnya.
Bagaimana kalau urutan kolom kita acak? Selama perintah MySQL yang kita input sesuai dengan urutan perintah, hal tersebut tidak menjadi masalah.
1
2
3
4
5
6
7
8
9
10
11
12
| mysql> INSERT INTO mata_kuliah (nama_jurusan, kode_matkul, jumlah_SKS, nama_matkul) VALUES ( 'Ilmu Komputer' , 'JRKOM' ,2, 'Jaringan Komputer' ); Query OK, 1 row affected (0.04 sec) mysql> select * from mata_kuliah; + -------------+-------------------+------------+---------------+ | kode_matkul | nama_matkul | jumlah_SKS | nama_jurusan | + -------------+-------------------+------------+---------------+ | JRKOM | Jaringan Komputer | 2 | Ilmu Komputer | | MMDAS | Matematika Dasar | 4 | Matematika | + -------------+-------------------+------------+---------------+ 2 rows in set (0.00 sec) |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| mysql> INSERT INTO mata_kuliah (kode_matkul,nama_matkul,nama_jurusan) VALUES ( 'FIDAS' , 'Fisika Dasar' , 'Fisika' ), ( 'CITRA' , 'Pengolahan CITRA' , 'Ilmu Komputer' ), ( 'PBASE' , 'Pengantar Database' , 'Ilmu Komputer' ); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from mata_kuliah; + -------------+--------------------+------------+---------------+ | kode_matkul | nama_matkul | jumlah_SKS | nama_jurusan | + -------------+--------------------+------------+---------------+ | CITRA | Pengolahan CITRA | 2 | Ilmu Komputer | | FIDAS | Fisika Dasar | 2 | Fisika | | JRKOM | Jaringan Komputer | 2 | Ilmu Komputer | | MMDAS | Matematika Dasar | 4 | Matematika | | PBASE | Pengantar Database | 2 | Ilmu Komputer | + -------------+--------------------+------------+---------------+ 5 rows in set (0.00 sec) |
Penggunaan Query INSERT IGNORE… VALUES
Setiap pendefinisan tabel, sebaiknya (baca: seharusnya) memiliki sebuah kolom yang didefenisikan sebagai PRIMARY KEY. Kolom dengan atribut PRIMARY KEY harus unik, dalam arti tidak boleh ada duplikasi data pada kolom tersebut. Kegunaan kolom ini adalah sebagai penanda bahwa kolom dengan nilai yang sama telah ada pada tabel.Pada tabel mata_kuliah kita telah mendefenisikan kolom kode_matkul sebagai PRIMARY KEY, sehingga jika ada data mata_kuliah yang telah ada sebelumnya, dan kita mencoba menginput data baru dengan nilai yang sama, MySQL akan menghasilkan error, dan seluruh perintah akan dibatalkan.
Contoh query dimana kita mencoba menginput kode_matkul ‘CITRA’ pada tabel mata_kuliah adalah sebagai berikut:
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
| mysql> select * from mata_kuliah; + -------------+--------------------+------------+---------------+ | kode_matkul | nama_matkul | jumlah_SKS | nama_jurusan | + -------------+--------------------+------------+---------------+ | CITRA | Pengolahan CITRA | 2 | Ilmu Komputer | | FIDAS | Fisika Dasar | 2 | Fisika | | JRKOM | Jaringan Komputer | 2 | Ilmu Komputer | | MMDAS | Matematika Dasar | 4 | Matematika | | PBASE | Pengantar Database | 2 | Ilmu Komputer | + -------------+--------------------+------------+---------------+ 5 rows in set (0.00 sec) mysql> INSERT INTO mata_kuliah (kode_matkul,nama_matkul, jumlah_SKS ,nama_jurusan) VALUES ( 'CITRA' , 'Pengantar CITRA' ,4, 'Ilmu Komputer' ), ( 'STATS' , 'Statistika' ,4, 'Matematika' ); ERROR 1062 (23000): Duplicate entry 'CITRA' for key 'PRIMARY' mysql> select * from mata_kuliah; + -------------+--------------------+------------+---------------+ | kode_matkul | nama_matkul | jumlah_SKS | nama_jurusan | + -------------+--------------------+------------+---------------+ | CITRA | Pengolahan CITRA | 2 | Ilmu Komputer | | FIDAS | Fisika Dasar | 2 | Fisika | | JRKOM | Jaringan Komputer | 2 | Ilmu Komputer | | MMDAS | Matematika Dasar | 4 | Matematika | | PBASE | Pengantar Database | 2 | Ilmu Komputer | + -------------+--------------------+------------+---------------+ 5 rows in set (0.00 sec) |
Untuk ‘memaksa’ MySQL tetap menjalankan perintah penginputan ‘STATS’, dapat kita lakukan dengan menambahkan perintah opsional IGNORE. Perintah ini memaksa MySQL tetap menjalankan seluruh query walaupun terdapat error.
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
| mysql> select * from mata_kuliah; + -------------+--------------------+------------+---------------+ | kode_matkul | nama_matkul | jumlah_SKS | nama_jurusan | + -------------+--------------------+------------+---------------+ | CITRA | Pengolahan CITRA | 2 | Ilmu Komputer | | FIDAS | Fisika Dasar | 2 | Fisika | | JRKOM | Jaringan Komputer | 2 | Ilmu Komputer | | MMDAS | Matematika Dasar | 4 | Matematika | | PBASE | Pengantar Database | 2 | Ilmu Komputer | + -------------+--------------------+------------+---------------+ 5 rows in set (0.00 sec) mysql> INSERT IGNORE INTO mata_kuliah (kode_matkul,nama_matkul, jumlah_SKS ,nama_jurusan) VALUES ( 'CITRA' , 'Pengantar CITRA' ,4, 'Ilmu Komputer' ),( 'STATS' , 'Statistika' ,4, 'Matematika' ); Query OK, 1 row affected (0.04 sec) Records: 2 Duplicates: 1 Warnings: 0 mysql> select * from mata_kuliah; + -------------+--------------------+------------+---------------+ | kode_matkul | nama_matkul | jumlah_SKS | nama_jurusan | + -------------+--------------------+------------+---------------+ | CITRA | Pengolahan CITRA | 2 | Ilmu Komputer | | FIDAS | Fisika Dasar | 2 | Fisika | | JRKOM | Jaringan Komputer | 2 | Ilmu Komputer | | MMDAS | Matematika Dasar | 4 | Matematika | | PBASE | Pengantar Database | 2 | Ilmu Komputer | | STATS | Statistika | 4 | Matematika | + -------------+--------------------+------------+---------------+ 6 rows in set (0.00 sec) |
Penggunaan Query INSERT… VALUES…ON DUPLICATE KEY UPDATE…
Dalam kasus jika pada kolom kode_matkul yang telah didefenisikan sebagai PRIMARY KEY, kita inputkan nilai yang sama, MySQL akan menghasilkan error. Namun MySQL menyediakan perintah opsional untuk merubah data kolom jika ditemukan kode_matkul yang sama.Pada kode query berikut ini kita akan mencoba menambahkan kode_matkul ‘CITRA’, dan jika terdapat kode matkul yang sama, kita akan merubah nama_matkul. Instruksi ini dapat dilakukan dengan menambahkan ON DUPLICATE KEY UPDATE pada akhir perintah INSERT.
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
| mysql> select * from mata_kuliah; + -------------+--------------------+------------+---------------+ | kode_matkul | nama_matkul | jumlah_SKS | nama_jurusan | + -------------+--------------------+------------+---------------+ | CITRA | Pengolahan CITRA | 2 | Ilmu Komputer | | FIDAS | Fisika Dasar | 2 | Fisika | | JRKOM | Jaringan Komputer | 2 | Ilmu Komputer | | MMDAS | Matematika Dasar | 4 | Matematika | | PBASE | Pengantar Database | 2 | Ilmu Komputer | | STATS | Statistika | 4 | Matematika | + -------------+--------------------+------------+---------------+ 6 rows in set (0.00 sec) mysql> INSERT INTO mata_kuliah (kode_matkul,nama_matkul, jumlah_SKS ,nama_jurusan) VALUES ( 'CITRA' , 'Pengantar CITRA' ,4, 'Ilmu Komputer' ) ON DUPLICATE KEY UPDATE nama_matkul= 'Pengantar CITRA' ; Query OK, 2 rows affected (0.13 sec) mysql> select * from mata_kuliah; + -------------+--------------------+------------+---------------+ | kode_matkul | nama_matkul | jumlah_SKS | nama_jurusan | + -------------+--------------------+------------+---------------+ | CITRA | Pengantar CITRA | 2 | Ilmu Komputer | | FIDAS | Fisika Dasar | 2 | Fisika | | JRKOM | Jaringan Komputer | 2 | Ilmu Komputer | | MMDAS | Matematika Dasar | 4 | Matematika | | PBASE | Pengantar Database | 2 | Ilmu Komputer | | STATS | Statistika | 4 | Matematika | + -------------+--------------------+------------+---------------+ 6 rows in set (0.00 sec) |
{ 0 komentar... Views All / Send Comment! }
Posting Komentar