PELATIHAN MYSQL
Query Database SIMPUS B
Pengertian Dasar 2
Apa Itu MySQL? 2
Database 2
Open Source 2
Client-server Model 2
SQL 3
Bagaimana Cara Kerja MySQL? 4
Apa Kelebihan MySQL Sehingga Banyak Digunakan? 5
Fleksibilitas dan kemudahan penggunaan 5
Performa terbaik 5
Memiliki standar industri 5
Aman 6
Mengenal Query 7
Menjalankan Perintah (query) MySQL 7
Cara Mengubah Tampilan output MySQL 9
Aturan Penulisan huruf BESAR dan kecil dalam MySQL 9
Perhatikan penggunaan tanda 11
Query Antar Tabel SQL 11
1. Inner Join 12
2. Left Join 13
3. Right Join 13
Kontak pengembang: 22
1
Pengertian Dasar
Sebelum dibahas lebih lanjut, ada baiknya bagi kita untuk mengetahui sejarah singkat MySQL.
MySQL dibaca MY-ES-KYOO-EL [maɪˌɛsˌkjuːˈɛl]. Beberapa orang bahkan membaca MySQL
seperti sedang menyebutkan “my sequel”. MySQL AB, sebuah perusahaan asal Swedia, menjadi
yang pertama dalam mengembangkan MySQL di tahun 1994. Hak kepemilikan MySQL kemudian
diambil secara menyeluruh oleh perusahaan teknologi Amerika Serikat, Sun Microsystems, ketika
mereka membeli MySQL AB pada tahun 2008. Di tahun 2010, Oracle yang adalah salah satu
perusahaan teknologi terbesar di Amerika Serikat mengakuisisi Sun Microsystems. Semenjak
itulah, MySQL sepenuhnya dimiliki oleh Oracle.
Database
Dalam bahasa yang sederhana, database adalah sekumpulan data yang terstruktur. Anggap saja
Anda sedang berpose selfie: yang dilakukan pastilah menekan tombol kamera depan, lalu
mengabadikan potret diri. Foto selfie yang diambil adalah data, sedangkan galeri foto merupakan
database. Database adalah tempat untuk menyimpan dan mengelola data. Kata “relasional” berarti
data yang disimpan di dataset dikelola sebagai tabel. Setiap tabel saling terkait. Jika software tidak
mendukung model data relasional, maka yang dipanggil hanyalah DBMS.
Open Source
Jika suatu software atau tool dikatakan open source, maka itu berarti Anda bebas menginstall,
menggunakan, bahkan memodifikasikannya. Anda pun dapat mempelajari dan
mengkustomisasikan source code-nya agar software bisa diatur dan diubah sesuai keinginan dan
kebutuhan Anda. Hanya saja, aktivitas yang Anda lakukan tak hanya tergantung pada situasi dan
kondisi, tapi juga ditentukan oleh GPL (GNU Public License). Lisensi berbayar tersedia bagi Anda
yang menginginkan fleksibilitas terhadap kepemilikan dan bantuan tingkat lanjut (premium).
Client-server Model
Komputer yang memasang dan menjalankan software RDBMS disebut sebagai client. Agar bisa
mengakses data, komputer harus terhubung dengan server RDBMS terlebih dulu. Keadaan seperti
inilah yang disebut client-server.
MySQL adalah salah satu pilihan software RDBMS. Terkadang RDBMS dan MySQL dianggap
sama karena popularitas MySQL. Aplikasi web terkenal, seperti Facebook, Twitter, YouTube,
2
Google, dan Yahoo! menggunakan MySQL untuk menyimpan data. Pada awalnya MySQL dibuat
untuk penggunaan terbatas saja, tapi sekarang software ini sudah kompatibel dengan berbagai
platform computing, seperti Linux, macOS, Microsoft Windows, dan Ubuntu.
SQL
MySQL dan SQL adalah dua software yang berbeda. MySQL merupakan salah satu nama brand
terpopuler dari software RDBMS yang menerapkan client-server model. Lalu, bagaimana client
dan server berkomunikasi di dalam ruang lingkup RDBMS? Jadi, baik client maupun server,
keduanya menggunakan bahasa spesifik domain – Structured Query Language (SQL). Jika Anda
pernah melihat atau membaca beberapa nama yang dikombinasikan dengan SQL, misalnya
PostgreSQL dan Microsoft SQL, maka server tersebut biasanya menggunakan syntax SQL.
Walaupun terkadang ditulis dalam bahasa pemrograman yang lain, software RDBMS selalu
menggunakan SQL sebagai bahasa utama untuk berinteraksi dengan database. MySQL sendiri
ditulis dalam C dan C++. Agar lebih mudah dipahami, kita mengambil negara-negara di Amerika
Selatan sebagai contohnya. Secara geografis, negara-negara tersebut tidaklah sama, bahkan
sejarahnya pun berbeda. Namun, masyarakat di semua negara di Amerika Selatan menggunakan
bahasa Spanyol untuk berkomunikasi.
Pada awal tahun 1970-an, seorang ahli komputer, Ted Codd, mengembangkan SQL dengan IBM
berbasis model relasional. Pada tahun 1974, SQL mulai banyak digunakan dan dengan cepat
menggantikan posisi bahasa yang sudah outdated, yakni ISAM dan VISAM. Tugas SQL adalah
untuk memberitahukan server tentang apa yang harus dilakukannya terhadap data.
Penggambaran umumnya seperti password atau kode WordPress. Anda memasukkan password
atau kode tersebut ke sistem untuk mendapatkan akses agar bisa login ke dashboard. Dalam hal
ini, SQL statement menginstruksikan server untuk menjalankan operasi tertentu:
● Data query: meminta informasi yang spesifik dari database yang sudah ada.
● Manipulasi data: menambahkan, menghapus, mengubah, menyortir, melakukan operasi
lainnya untuk memodifikasi data, value, atau visual.
● Identitas data (data identity): menentukan tipe data, misalnya mengubah data numerik
menjadi data integer. Selain itu, juga menentukan schema atau hubungan dari
masing-masing tabel yang ada di database.
● Data access control: menyediakan metode keamanan untuk melindungi data, termasuk
dalam menentukan siapa yang boleh melihat atau menggunakan informasi yang tersimpan
di database.
3
Bagaimana Cara Kerja MySQL?
Gambar di atas menjelaskan struktur dasar dari client-server. Satu atau banyak perangkat
terhubung ke server melalui network atau jaringan khusus. Setiap client dapat membuat
permintaan (request) dari antarmuka pengguna grafis atau graphical user interface (GUI) di layar,
dan server akan membuat output yang diinginkan, sepanjang server dan juga client memahami
instruksi dengan benar. Idealnya, proses utama yang terjadi di ruang lingkup MySQL sama, yaitu:
MySQL membuat database untuk menyimpan dan memanipulasi data, serta menentukan
keterkaitan antara masing-masing tabel.
Client membuat permintaan (request) dengan mengetikkan pernyataan SQL yang spesifik di
MySQL.
Aplikasi server akan merespons dengan memberikan informasi yang diminta. Informasi ini nantinya
muncul di sisi klien.
Dari sisi client, biasanya akan diberitahukan MySQL GUI mana yang harus digunakan. Semakin
ringan dan user friendly suatu GUI, maka semakin cepat dan mudah aktivitas manajemen data
yang dimilikinya. Sebagian MySQL GUI yang terkenal adalah MySQL WorkBench, SequelPro,
DBVisualizer, dan Navicat DB Admin Tool. Beberapa MySQL GUI terpopuler ada yang gratis dan
ada juga yang berbayar, ada yang dijalankan secara eksklusif di macOS dan ada juga yang
kompatibel dengan sistem operasi lainnya. Client memilih GUI berdasarkan pada kebutuhannya.
Untuk manajemen database, termasuk situs WordPress, GUI yang paling sesuai adalah
phpMyAdmin.
4
Apa Kelebihan MySQL Sehingga Banyak Digunakan?
Tak hanya dikenal sebagai satu-satunya (R)DBMS yang ada di pasaran, MySQL juga menjadi
salah satu database terpopuler setelah Oracle Database, berdasarkan pada penilaian yang
menggunakan parameter kritis, seperti seberapa sering muncul di hasil pencarian, profil di
LinkedIn, dan banyaknya diskusi teknis di forum online. Banyaknya perusahaan teknologi besar
yang menggunakan software ini semakin mengukuhkan posisinya. Berikut beberapa alasan
mengapa MySQL banyak digunakan:
Performa terbaik
Ada banyak cluster server yang mensupport MySQL. Dengan performa dan kecepatan yang
optimal, software ini akan membantu Anda baik dalam menyimpan sejumlah data e-Commerce
berukuran besar maupun ketika melakukan kegiatan bisnis berat lainnya.
5
Aman
Keamanan data menjadi salah satu prioritas utama software RDBMS. Dengan Access Privilege
System dan User Account Management yang dimilikinya, MySQL menetapkan level keamanan
tingkat tinggi. Verifikasi berbasis host dan enkripsi password juga tersedia.
6
Mengenal Query
Ketika kita menjalankan sebuah perintah MySQL (query) , query tersebut akan dikirim dari
MySQL Client ke MySQL Server untuk di proses, setelah proses selesai, hasilnya akan
dikirim kembali ke MySQL Client.
Agar lebih mudah memahami query MySQL, kita akan langsung praktek beberapa query
sederhana. Silahkan jalankan MySQL Server dan masuk sebagai user root dari MySQL
Client.
Setelah masuk ke dalam MySQL Client (ditandai dengan awalan mysql> pada jendela
cmd), kita akan mencoba beberapa perintah MySQL sederhana. Ketikkan perintah berikut:
SELECT NOW(); lalu akhiri dengan Enter pada keyboard.
Contoh query diatas adalah untuk menampilkan tanggal dan waktu saat ini dengan fungsi
NOW(). Query tersebut akan menghasilkan hasil yang berbeda-beda tergantung saat
anda menjalankannya.
Perintah SELECT kebanyakan digunakan untuk proses pembacaan data dari database,
tetapi juga dapat digunakan untuk menampilkan hasil dari fungsi tambahan, seperti fungsi
NOW(), yang kita coba kali ini. Hasil query MySQL akan ditampilkan dalam bentuk tabel
pada cmd windows, hasil ini dikirim dari MySQL Server.
Selain hasil dalam bentuk tabel, hampir setiap perintah query, MySQL juga akan
menampilkan banyaknya baris yang dipengaruhi dan lamanya waktu eksekusi. Pada
contoh kita diatas, ditampilkan keterangan: 1 row in set (0.00 sec). Keterangan ini berarti
query kita diproses selama 0 detik (0 second), dan mempengaruhi 1 baris (1 row). o detik
disini bukan berarti query tersebut akan tampil seketika, namun karena perintah yang
7
sederhana, MySQL (mungkin) hanya membutuhkan waktu 0,001 sekian detik untuk
memproses (dibulatkan menjadi 0,00).
Sebagai contoh query lainnya, kita akan mencoba untuk menampilkan nama user yang
sedang aktif dan versi MySQL Server yang digunakan pada saat ini. Untuk menampilkan
keterangan ini, MySQL menyediakan fungsi USER() dan VERSION()
Dapat dilihat dari contoh query tersebut, untuk setiap fungsi dipisahkan dengan tanda
koma “,”.
Penulisan perintah (query) MySQL juga tidak harus dalam satu baris. Misalnya, kita bisa
menjalankan query berikut:
Setelah fungsi NOW() pertama, tekan Enter untuk pindah baris, lalu ketikkan perintah
sambungannya. Selama kita belum mengakhiri perintah tersebut dengan “;”, maka MySQL
menganggap baris berikutnya adalah sambungan dari baris sebelumnya. Pemisahan
perintah seperti diatas akan sangat berguna jika kita menuliskan query yang panjang,
sehingga lebih mudah dibaca. Tanda mysql> akan berubah menjadi -> selama kita belum
mengakhiri query tersebut dengan tanda titik koma “;” .
Jika kita telah membuat query MySQL, namun memutuskan untuk membatalkannya,
dapat dilakukan dengan kode “\c”. Contoh querynya:
8
Dapat anda perhatikan bahwa tanda -> akan kembali menjadi mysql> yang menandakan
MySQL telah siap untuk perintah yang baru.
Selain menggunakan “;”, query MySQL juga akan mengeksekusi perintah juga diakhiri
dengan tanda “\g”.
Untuk perintah MySQL (query MySQL) yang menghasilkan output yang panjangnya
melebihi layar cmd, akan sulit bagi kita dalam membacanya. MySQL menyediakan cara
untuk merubah tampilan tabel menjadi baris.
Untuk merubah tampilan output MySQL menjadi baris, tambahkan tanda “\G” (huruf G
besar, bukan g kecil) setelah perintah query. Berikut adalah contoh penggunaannya dalam
MySQL:
9
Konsep penggunaan huruf besar dan huruf kecil dalam MySQL akan berbeda tergantung
saat penggunaannya.
MySQL tidak membedakan penulisan huruf besar maupun kecil (case insensitive) dalam
penulisan fungsi dan identifier. Sebagai contoh, ketiga query ini akan menghasilkan output
yang sama (kecuali header dari tabel):
Namun untuk penulisan nama database dan nama tabel, MySQL akan mengikuti sistem
operasi dimana MySQL Server berjalan.
Untuk Sistem Operasi Windows, nama database mahasiswa dianggap sama dengan
MaHaSIsWA, namun dalam MySQL Server yang berjalan pada Linux, kedua database
tersebut dianggap berbeda (case sensitive).
Karena hal ini, ada baiknya kita membiasakan menggunakan kesepakatan dalam
penamaan. Disarankan untuk menggunakan selalu huruf kecil dalam penulisan database,
tabel dan variabel dalam MySQL, sehingga perbedaan huruf tidak akan menjadi masalah
pada kemudian hari jika MySQL Server pindah sistem operasi.
Di dalam tutorial duniailkom, dan juga dalam beberapa buku MySQL, perintah-perintah
dan fungsi baku MySQL akan menggunakan HURUF BESAR sedangkan untuk nama
database, tabel, dan kolom akan menggunakan huruf kecil. Hal ini hanya semata-mata
10
agar perintah SQL mudah dibaca dan dibedakan dengan nama database atau tabel. Kita
bisa saja menggunakan huruf kecil untuk seluruh fungsi-fungsi dalam MySQL.
Dalam beberapa kasus, sebuah query bisa saja menggunakan tanda baca selain angka
dan huruf seperti : “,” (koma), “\” (forward slash/garis miring depan),”’” (tanda petik), dan “ “
(spasi). Misalnya untuk 123 dan ‘123’, 12e + 14 dan 12e+14 akan memiliki arti berbeda
dalam MySQL. Jika anda menemui error, mungkin penggunaan “tanda” ini adalah
masalahnya. Lebih jauh dalam penggunaan tanda ini akan kita pelajari dalam
tutorial-tutorial MySQL selanjutnya.
Didalam SQL sering kita dengar istilah Join, Join merupakan suatu perintah yang bisa kita
gunakan untuk menampilkan data dari tabel dan menghubungkan satu dengan tabel
lainnya yang saling berhubungan. Ada beberapa fungsi yang bisa kita manfaatkan untuk
11
menghubungkan beberapa buah tabel, yakni Inner Join, Left Join, dan Right Join. Artikel
kali ini akan membahas Perbedaan Inner Join, Left Join, Right Join, dsb.
Baiklah, berikut ini akan saya praktekan satu persatu fungsi join pada SQL. Sebelumnya
saya telah membuat 2 buah tabel yakni tabel motor dan tabel brand seperti berikut.
1. Inner Join
Yang pertama saya akan memanfaatkan fungsi Inner Join untuk menampilkan data dari
kedua tabel diatas.
Inner Join merupakan perintah untuk menampilkan semua data yang mempunyai nilai
sama, kita bisa lihat pada perintah ON rsh_motor.id_brand = rsh_brand.id yang artinya
data yang ditampilkan adalah data yang sama dan berhubungan antara id_brand yang
ada pada tabel rsh_motor dengan id pada tabel rsh_brand . Berikut adalah hasil dari Inner
Join tabel.
12
2. Left Join
Selanjutnya adalah Left Join, Left Join merupakan cara menghubungkan tabel dan
menampilkan semua data (kiri) pada tabel yang tidak berhubungan, sedangkan data yang
kosong akan bernilai NULL.
Maka hasil dari Left Join tabel akan seperti berikut ini.
3. Right Join
Yang terakhir dari pembahasan ini adalah fungsi Right Join, fungsi ini hampir sama
dengan fungsi Left Join ataupun kebalikannya, dimana Right Join akan menghubungkan
tabel dan menampilkan semua data (kanan) pada tabel yang tidak berhubungan, dan data
yang kosong akan bernilai NULL.
13
ON rsh_motor.id_brand = rsh_brand.id
Maka hasil dari Right Join tabel akan seperti berikut ini.
Mengenai Perbedaan Inner Join, Left Join, Right Join, dsb, intinya dari semua fungsi
diatas bisa dipakai dan hampir sama fungsinya hanya saja tinggal disesuaikan dengan
kebutuhan.
14
Mengakses Database SIMPUS Bontang
15
Jika sudah berhasil terhubung pilih database yang akan anda query.
16
Beberapa tabel penting yang perlu anda ketahui pada Database SIMPUS Bontang
Tabel Keterangan
`tindakan gigi` berisi data tindakan yang dilakukan pada poli gigi
tpoli berisi data master poli yang tersedia untuk PKM tersebut
17
Memulai Query
Query:
select
kj.id,
kg.mr,
kj.tanggal,
kg.nama,
kg.rt,
kg.sex,
po.icdx,
18
ix.nama as diagnosa
from kunjungan kj
left join keluarga kg on kj.idmr = kg.id
left join poli po on kj.id = po.idtanggal
left join rc_icdx ix on po.icdx = ix.icdx
where (kj.tanggal between '2017-11-01' and '2018-11-01')
and po.icdx in('J06.9', 'J03.9');
Query1:
SELECT
kj.id,
kj.tanggal AS tgl_kunjungan,
kg.id as idkel,
kg.mr,
kg.nama,
kg.nik,
kg.rt,
kg.sex,
kg.tgl_lahir,
IF((TIMESTAMPDIFF(DAY, kg.tgl_lahir, NOW()) <= 31), TIMESTAMPDIFF(DAY,
kg.tgl_lahir, NOW()), IF(((TIMESTAMPDIFF(DAY, kg.tgl_lahir, NOW()) > 31) AND
(TIMESTAMPDIFF(MONTH, kg.tgl_lahir, NOW()) < 12)), TIMESTAMPDIFF(MONTH,
19
kg.tgl_lahir, NOW()), TIMESTAMPDIFF(YEAR, kg.tgl_lahir, NOW()))) AS umur,
IF((TIMESTAMPDIFF(DAY, kg.tgl_lahir, NOW()) <= 31), 'hr',
IF(((TIMESTAMPDIFF(DAY, kg.tgl_lahir, NOW()) > 31) AND (TIMESTAMPDIFF(MONTH,
kg.tgl_lahir, NOW()) < 12)), 'bln', 'thn')) AS kategori
FROM kunjungan kj
LEFT JOIN keluarga kg ON kj.idmr = kg.id
WHERE (kj.tanggal BETWEEN '2017-11-01' AND '2017-11-31')
and TIMESTAMPDIFF(YEAR, kg.tgl_lahir, NOW()) between 15 and 59;
Query2:
set @no=0;
select
kj.ID,
kj.tanggal as tgl_kunjungan,
kj.idmr,
if((@no:=@no+1)=1,'B','L') as status
from kunjungan kj
where kj.IDMR = '16099'
and kj.tanggal like '2018-%'
order by kj.id asc;
20
Menampilkan Kunjungan Sesuai Rentang Tanggal
Tabel yang dibutuhkan:
● keluarga
● kunjungan
Kolom: (menyesuaikan)
Kriteria:
● tanggal awal s/d tanggal akhir
● asuransi
● sex
Query:
select
kj.id,
kj.tanggal,
kj.idmr,
kg.nama,
kg.sex,
kg.asuransi,
kg.`No Kartu` as no_asuransi,
kg.tgl_lahir,
IF((TIMESTAMPDIFF(DAY, kg.tgl_lahir, NOW()) <= 31), TIMESTAMPDIFF(DAY,
kg.tgl_lahir, NOW()), IF(((TIMESTAMPDIFF(DAY, kg.tgl_lahir, NOW()) > 31) AND
(TIMESTAMPDIFF(MONTH, kg.tgl_lahir, NOW()) < 12)), TIMESTAMPDIFF(MONTH,
kg.tgl_lahir, NOW()), TIMESTAMPDIFF(YEAR, kg.tgl_lahir, NOW()))) AS umur,
IF((TIMESTAMPDIFF(DAY, kg.tgl_lahir, NOW()) <= 31), 'hr',
IF(((TIMESTAMPDIFF(DAY, kg.tgl_lahir, NOW()) > 31) AND (TIMESTAMPDIFF(MONTH,
kg.tgl_lahir, NOW()) < 12)), 'bln', 'thn')) AS kategori,
pd.poli,
ix.icdx,
ix.nama
from kunjungan kj
left join keluarga kg on kj.idmr = kg.id
left join pendaftaran pd on kj.id = pd.idtanggal
left join poli pl on kj.id = pl.Idtanggal
left join rc_icdx ix on pl.Diagnosa = ix.id
where kj.tanggal between '2018-10-01' and '2018-10-31'
and sex = 'L'
and asuransi like '%BPJS%'
21
Kontak pengembang:
wa : 081238353969 an Richad Avianto
email : aviantorich@gmail.com
22