Ketika merancang sebuah aplikasi, ada kalanya kita harus menjalankan query secara berulang atau perlu menyimpan perintah query untuk digunakan di lain waktu. Daripada mengetik manual, akan lebih praktis jika query tersebut disimpan dan dijalankan dari file teks external.
Terdapat 2 cara untuk menjalankan query MySQL dari sebuah file, yakni dari luar MySQL Client (tidak perlu login), atau dari dalam MySQL Client (menggunakan perintah source).
Mempersiapkan Query MySQL
Langsung saja kita masuk ke praktek. Kali ini saya akan menjalankan query pembuatan 1 database dengan 2 buah tabel (berserta isinya) dari sebuah file teks. Berikut adalah perintah query yang akan saya gunakan:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
| DROP DATABASE IF EXISTS mahasiswa; CREATE DATABASE mahasiswa; USE mahasiswa; DROP TABLE IF EXISTS daftar_dosen; CREATE TABLE daftar_dosen ( NIP CHAR (10) PRIMARY KEY , nama_dosen VARCHAR (50) NOT NULL , no_hp CHAR (13), alamat VARCHAR (100)) collate utf8_general_ci; INSERT INTO daftar_dosen VALUES ( '0160436012' , 'Sabrina Sari' , '0812349900' , 'Pekanbaru' ); INSERT INTO daftar_dosen VALUES ( '0260432002' , 'Maya Ari Putri' , '0812345234' , 'Palembang' ); INSERT INTO daftar_dosen VALUES ( '0275430005' , 'Susi Indriani' , '0812656532' , 'Palembang' ); INSERT INTO daftar_dosen VALUES ( '0480432066' , 'Tia SariSantrini' , '0812451177' , 'Padang' ); INSERT INTO daftar_dosen VALUES ( '0576431001' , 'M. Siddiq' , '0812979005' , 'Jakarta' ); INSERT INTO daftar_dosen VALUES ( '0770435006' , 'Rubin Hadi' , '0812567678' , 'Papua' ); INSERT INTO daftar_dosen VALUES ( '0869437003' , 'Arif Mustalifah' , '0812338877' , 'Aceh' ); INSERT INTO daftar_dosen VALUES ( '1080432007' , 'Arif Budiman' , '0812456345' , 'Jakarta' ); DROP TABLE IF EXISTS mata_kuliah; CREATE TABLE mata_kuliah ( kode_matkul CHAR (6) PRIMARY KEY , nama_matkul VARCHAR (50) NOT NULL , jumlah_SKS TINYINT UNSIGNED DEFAULT '2' , semester TINYINT, NIP_dosen CHAR (10)) collate utf8_general_ci; INSERT INTO mata_kuliah VALUES ( 'MATDAS' , 'Matematika Dasar' ,4,1, '0160436012' ); INSERT INTO mata_kuliah VALUES ( 'FISDAS' , 'Fisika Dasar' ,2,1, '0480432066' ); INSERT INTO mata_kuliah VALUES ( 'TEKKOM' , 'Teknik Kompilasi' ,2,6, '0480432066' ); INSERT INTO mata_kuliah VALUES ( 'JARKOM' , 'Jaringan Komputer' ,3,3, '0770435006' ); INSERT INTO mata_kuliah VALUES ( 'DTBASE' , 'Database' ,4,4, '0275430005' ); INSERT INTO mata_kuliah VALUES ( 'SISOPR' , 'Sistem Operasi' ,2,4, '0160436012' ); INSERT INTO mata_kuliah VALUES ( 'MIKROP' , 'Mikro Prosesor' ,2,5, '0480432066' ); |
Query tersebut dapat dikelompokkan menjadi 3 bagian: pembuatan database mahasiswa, pembuatan tabel daftar_dosen beserta isinya, dan pembuatan tabel mata_kuliah beserta isinya. Database dan tabel ini merupakan contoh tabel yang saya gunakan ketika membahas Cara Menampilkan Data dari Tabel MySQL (SELECT).
Query collate utf8_general_ci ditambahkan untuk memastikan karakter set yang digunakan adalah utf8_general_ci. Secara sederhana, ini berfungsi agar tidak terjadi error ketika melakukan operasi perbandingan string (error: Illegal mix of collations).
Setelah pembuatan tabel, saya menggunakan query INSERT INTO untuk menginput beberapa data ke dalam tabel tersebut.
Perintah diatas sebenarnya juga bisa dijalankan baris demi baris (jika anda ingin menginputnya secara manual), namun seperti judul tutorial, kita akan mencoba menjalankan seluruh query tersebut dari sebuah file text.
Membuat File Query
Langkah selanjutnya adalah membuat file text untuk menyimpan query diatas. Silahkan gunakan text editor seperti Notepad (bawaan windows) atau Notepad++, lalu save ke dalam folder bin dimana aplikasi MySQL berada.Sebagai contoh, jika anda mengikuti tutorial MySQL di duniailkom, file instalasi MySQL akan berada di folder D:\MySQL\bin atau D:\MySQL 5.6\bin. Namun apabila anda menggunakan setingan default pada saat menginstall MySQL, maka folder aplikasi MySQL ini akan berada di C:\Program Files\MySQL\MySQL Server 5.6.
Extension dari file ini tidak menjadi masalah, anda bisa menggunakan .txt, atau .sql (lebih umum). Kali ini saya akan menyimpannya sebagai mahasiswa.txt.
Dalam tutorial ini saya menggunakan extension .txt hanya untuk memperlihatkan bahwa nama extension tidak berpengaruh. Menggunakan nama file mahasiswa.sql memang lebih umum digunakan untuk menyimpan query MySQL.
Cara Menjalankan Query MySQL dari File Teks
Sekarang kita tinggal menjalankan file tersebut ke dalam MySQL. Terdapat 2 alternatif, dari luar MySQL, atau dari dalam MySQL Client.Pertama, saya akan menggunakan cara dari luar MySQL. Jalankan MySQL Server (jika belum aktif), lalu gunakan cmd windows untuk masuk ke dalam folder bin instalasi MySQL (tempat dimana file mahasiswa.txt berada). Kemudian gunakan perintah berikut:
mysql -u root < mahasiswa.txt |
mysql -u nama_user -p password < mahasiswa.txt |
Untuk memastikan, silahkan login ke MySQL Client, dan periksa database mahasiswa beserta tabelnya:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
| D:\MySQL 5.6\bin>mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 20 Server version: 5.6.22 MySQL Community Server (GPL) Copyright (c) 2000, 2014, Oracle and / or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and / or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> SHOW databases; + --------------------+ | Database | + --------------------+ | information_schema | | data | | mahasiswa | | mysql | | performance_schema | + --------------------+ 6 rows in set (0.00 sec) mysql> USE mahasiswa; Database changed mysql> SELECT * FROM daftar_dosen; + ------------+-------------------+------------+-----------+ | NIP | nama_dosen | no_hp | alamat | + ------------+-------------------+------------+-----------+ | 0160436012 | Sabrina Sari | 0812349900 | Pekanbaru | | 0260432002 | Maya Ari Putri | 0812345234 | Palembang | | 0275430005 | Susi Indriani | 0812656532 | Palembang | | 0480432066 | Tia Sari Santrini | 0812451177 | Padang | | 0576431001 | M. Siddiq | 0812979005 | Jakarta | | 0770435006 | Rubin Hadi | 0812567678 | Papua | | 0869437003 | Arif Mustalifah | 0812338877 | Aceh | | 1080432007 | Arif Budiman | 0812456345 | Jakarta | + ------------+-------------------+------------+-----------+ 8 rows in set (0.00 sec) mysql> SELECT * FROM mata_kuliah; + -------------+-------------------+------------+----------+------------+ | kode_matkul | nama_matkul | jumlah_SKS | semester | NIP_dosen | + -------------+-------------------+------------+----------+------------+ | DTBASE | Database | 4 | 4 | 0275430005 | | FISDAS | Fisika Dasar | 2 | 1 | 0480432066 | | JARKOM | Jaringan Komputer | 3 | 3 | 0770435006 | | MATDAS | Matematika Dasar | 4 | 1 | 0160436012 | | MIKROP | Mikro Prosesor | 2 | 5 | 0480432066 | | SISOPR | Sistem Operasi | 2 | 4 | 0160436012 | | TEKKOM | Teknik Kompilasi | 2 | 6 | 0480432066 | + -------------+-------------------+------------+----------+------------+ 7 rows in set (0.00 sec) |
Cara kedua adalah menggunakan query source dari dalam MySQL Client. Untuk menjalankannya, kita harus masuk ke dalam MySQL Client. Sebagai persiapan, saya akan menghapus database mahasiswa yang berasal dari perintah sebelumnya
1
2
| mysql> DROP database mahasiswa; Query OK, 2 rows affected (0.09 sec) |
1
| mysql> source mahasiswa.txt |
Hasil: Query OK, 1 row affected (0.02 sec) adalah feedback atau penjelasan mengenai perintah yang berjalan. Anda juga akan melihat terdapat beberapa warning seperti: Query OK, 0 rows affected, 1 warning (0.00 sec). Warning ini disebabkan perintah DROP TABLE IF EXISTS yang memang akan menghasilkan peringatan apabila tabel tersebut tidak tersedia, jadi peringatan ini boleh diabaikan.
Sebagai langkah terakhir, anda bisa memeriksa apakah database mahasiswa berserta tabelnya sudah terbentuk.
Meletakkan perintah query di dalam file teks seperti yang kita bahas disini sangat praktis untuk query yang berulang atau jika anda sering gonta-ganti komputer. File query tersebut juga bisa digunakan sebagai ‘master database’, sehingga jika kita melakukan experiment terjadi sesuatu (misalnya ada data yang terhapus), tinggal menjalankannya kembali.