PRAKTIKUM VI PENGAKSESAN DATA TABEL
A. LATAR BELAKANG
Pada praktikum sebelumnya, telah dilakukandiujicobakan beberapa perintah dasar pengaksesan data dari sebuah objek Tabel, yang meliputi: SELECT, FROM, WHERE dan
ORDER BY, ditambah lagi dengan penggunaan beberapa operator dan kombinasinya OR, AND, NOT, LIKE, BETWEEN dsb.. Untuk memenuhi kebutuhan akan informasi tertentu,
terkadang dibutuhkan suatu format lapoan dalam bentuk terakumulasi rekapitulasi berdasarkan kriteria tertentu. Perintah yang dapat memenuhi hal tersebut adalah dengan
perintah GROUP BY dan HAVING. Guna membantu pemahaman kita mengenai penggunaan perintah-perintah MySQL
lanjutan tersebut, maka kita dapat mengoptimalkan penggunaan database ujimhsdb yang
telah kita buat sebelumnya.
B. TUJUAN
Kompetensi yang diharapkan dapat tercapai setelah melakukan praktikum ini adalah mahasiswa dapat melakukan query data dari beberapa tabel dengan menggunakan perintah-
perintah
SELECT …… FROM ……
WHERE …… GROUP BY ……
HAVING …… ORDER BY ……
C. ALAT-ALAT DAN BAHAN YANG DIGUNAKAN
Praktikum ini membutuhkan ketersediaan alat-alat dan bahan praktikum berupa sejumlah perangkat keras hardware dan perangkat lunak software. Hardware dan
software yang dibutuhkan sebelum melakukan praktikum ini adalah;
Modul Praktikum Sistem Basis Data .............................................................................. 61
1. Satu komputer yang akan digunakan sebagai Server dan sejumlah komputer yang digunakan sebagai Client dan terhubung dalam jaringan komputer baik dengan
menggunakan kabel maupun dengan jaringan tanpa kabel nirkabel 2. LCD viewer, whiteboard dan spidol sebagai media presentasi instruktur
3. Software aplikasi MySQL Server 5.0 keatas, MySQL Query Browser
D. TEORI DASAR 1.
Menampilkan Data dari Banyak Tabel
Menampilkan data dari dua tabel atau lebih, mensyaratkan adanya relasi keduanya antar table-table yang dimaksud. Guna memperjelas teori tersebut, marilah kita lihat
skema database ujimhsdb berikut;
Berdasarkan skema tersebut, kita dapat menampilkan data dari table Hasil Ujian, Jenis Ujian, Mahasiswa dan table Matakuliah secara bersamaan, atau kita juga dapat
menampilkan data dari table Matakuliah dan table Dosen secara bersamaan. Hal tersebut dimungkinkan karena setiap table yang dimaksud mempunyai hubungan relasi secara
langsung berkaitan secara logika, sebagaimana digambarkan pada skema tersebut. Adanya relasi kedua table yang biasanya ditandai oleh adanya field yang identik baik
nama, type data, ukurannya maupun maksud peruntukannya, memungkinkan kita untuk menampilkan data dari keduanya. Sebaliknya, bila tidak ada relasi secara langsung, maka
kita tidak dapat menampilkannya. Misalnya antara table Mahasiswa dengan table Dosen Modul Praktikum Sistem Basis Data ..............................................................................
62
Table Jenis
Ujiankode_ujiann ama_ujian
Table Matakuliahkode_
mtknama_mtksks kode_dosen
Table Hasil
Ujiannimkode_m tkkode_ujiannil
ai
Table Dosenkode_dosen
nama_dosenkela mintmp_lahirtgl_la
hiralamat
Table Mahasiswanimna
ma_mhskelamintm p_lahirtgl_lahirala
mat
Database Hasil Ujian Mahasiswa
Keterangan : Primary Key
Foreign Key
atau antara table Jenis Ujian dengan table Matakuliah. Untuk lebih jelasnya cobalah contoh berikut;
mysqlSELECT matakuliah.kode_mtk, matakuliah.nama_mtk, -matakuliah.sks, dosen.nama_dosen
-FROM matakuliah, dosen -WHERE dosen.kode_dosen= matakuliah.kode_dosen;
mysqlSELECT matakuliah.kode_mtk, matakuliah.nama_mtk,
-matakuliah.sks, dosen.nama_dosen -FROM matakuliah, dosen
-WHERE dosen.kode_dosen=matakuliah.kode_dosen -AND dosen.nama_dosen LIKE “in”;
Perintah pertama hanya terdapat 1 syarat, yaitu syarat relasi;
WHERE dosen.kode_dosen=matakuliah.kode_dosen;
Namun pada perintah kedua sudah terdapat 2 syarat, yaitu syarat relasi dan syarat
penyaringan filter data, yaitu hanya untuk dosen yang namanya berawalan “in”;
WHERE dosen.kode_dosen=matakuliah.kode_dosen AND dosen.nama_dosen LIKE “in”;
pada syarat kedua inilah, kita dapat mengkombinasikan berbagai operator yang ada sebagai
syarat penyaringan filtering data, sehingga data yang tampil sesuai dengan yang kita harapkan.
Bagaimana bila yang direlasikan lebih dari dua table?, misalnya akan menampilkan data dari table Hasil Ujian, Jenis Ujian, Mahasiswa, Matakuliah dan table Dosen sekaligus.
Hal yang perlu diperhatikan dalam merelasikan dua table atau lebih, adalah bagaimana kita menentukan table acuan, yang bertindak sebagai penyedia data dasar acuan bagi table yang
berelasi. Biasanya yang menjadi table acuan adalah table transaksional yaitu tabel yang mengandung kunci tamu foreign key dan bukan table master yang hanya mengandung
kunci utama primary key. Kalau kita lihat skema database ujimhsdb, maka yang paling
layak menjadi table acuan adalah table hsl_ujian. 2.
Menggunakan Nama Alias pada Kolom dan Tabel
Nama alias dapat digunakan sebagai pengganti judul kolom atau pengganti nama table. Penggantian judul kolom mapun nama table, biasanya bertujuan untuk memperjelas
ataupun memperpendek penyebutan judul kolom maupun nama table. Contoh berikut menunjukkan penggunaan nama alias pada judul kolom dan nama tabel;
Modul Praktikum Sistem Basis Data .............................................................................. 63
mysqlSELECT matakuliah.kode_mtk AS “Kode Matakuliah”, -matakuliah.nama_mtk AS “Nama Matakuliah”,
-matakuliah.sks AS “SKS”, dosen.nama_dosen AS “Nama Dosen” -FROM matakuliah, dosen
-WHERE dosen.kode_dosen = matakuliah.kode_dosen;
mysqlSELECT mtk.kode_mtk, mtk.nama_mtk,
-mtk.sks, dsn.nama_dosen -FROM matakuliah AS mtk, dosen AS dsn
-WHERE dsn.kode_dosen = mtk.kode_dosen;
3. Menggunakan perintah GROUP BY dan HAVING
Perintah GROUP BY digunakan untuk mengelompokkan data berdasarkan kriterian tertentu. Pengelompokan data dilakukan untuk menemukan hasil-hasil aggregasi seperti
mencari total jumlah, banyaknya data dan nilai rata-rata dengan suatu kriteria. Perintah HAVING digunakan untuk melakukan penyaringan data data filtering
terhadap data hasil pengelompokan data. Penyaringan data terhadap data hasil pengelompokan data tidak dapat dilakukan dengan perintah WHERE.
Perintah WHERE walau tidak secara khusus digunakan untuk menyaring data, namun WHERE dapat digunakan sebagai alat penyortir data sebelum dilakukannya proses
grouping. Sedangkan perintah HAVING memang secara khusus diperuntukkan sebagai alat penyortir data hasil Grouping
E. LANGKAH-LANGKAH PRAKTIKUM
Guna membantu pemahaman kita dalam menggunakan nama alias, pengelompokan data dengan perintah GROUP BY dan penyaringan data hasil pengelompokan data dengan
perintah HAVING, lakukan beberapa perintah query berikut ini; a. Menyatakan relasi antar tabel dengan WHERE
mysqlSELECT matakuliah.kode_mtk, matakuliah.nama_mtk, -matakuliah.sks, dosen.nama_dosen
-FROM matakuliah, dosen -WHERE dosen.kode_dosen= matakuliah.kode_dosen;
mysqlSELECT matakuliah.kode_mtk, matakuliah.nama_mtk,
-matakuliah.sks, dosen.nama_dosen -FROM matakuliah, dosen
-WHERE dosen.kode_dosen=matakuliah.kode_dosen -AND dosen.nama_dosen LIKE “in”;
Modul Praktikum Sistem Basis Data ..............................................................................
64
mysqlSELECT hsl_ujian.nim, mahasiswa.nama_mhs, matakuliah.nama_mtk, -matakuliah.sks, dosen.nama_dosen, ujian.nama_ujian, hsl_ujian.nilai
-FROM hsl_ujian, mahasiswa, matakuliah, dosen, ujian -WHERE mahasiswa.nim=hsl_ujian.nim
-AND matakuliah.kode_mtk=hsl_ujian.kode_mtk -AND ujian.kode_ujian=hsl_ujian.kode_ujian
-AND dosen.kode_doesn=matakuliah.kode_dosen;
mysqlSELECT H.nim, M.nama_mhs, K.nama_mtk, D.nama_dosen,
-U.nama_ujian, H. nilai -FROM hsl_ujian AS H, mahasiswa AS M, matakuliah AS K, dosen AS D,
-ujian AS U -WHERE M.nim=H.nim AND U.kode_ujian=H.kode_ujian AND
-K.kode_mtk=H.kode_mtk AND D.kode_dosen=K.kode_dosen AND -H.nilai BETWEEN 70 AND 90;
b. Menggunakan nama alias pada judul kolom dan nama tabel dengan AS mysqlSELECT mtk.kode_mtk AS “Kode Matakuliah”,
-mtk.nama_mtk AS “Nama Matakuliah”, -mtk.sks AS “SKS”, dsn.nama_dosen AS “Nama Dosen”
-FROM matakuliah AS mtk, dosen AS dsn -WHERE dsn.kode_dosen= mtk.kode_dosen;
mysqlSELECT nim, nama_mhs, kelamin, tmp_lahir, tgl_lahir,
-CURRENT_DATE AS tgl_sekarang, -YEARCURRENT_DATE-YEARtgl_lahir AS usia
-FROM mahasiswa;
c. Mengelompokkan data dengan GROUP BY dan menyaring data hasil pengelompokan
dengan HAVING mysqlSELECT MONTHtgl_lahir AS bulan_ke,
-MONTHNAMEtgl_lahir AS nama_bulan, -COUNT AS jumlah_lahir
-FROM mahasiswa -GROUP BY nama_bulan
-HAVING jumlah_lahir1 -ORDER BY bulan_ke;
mysqlSELECT MONTHtgl_lahir AS bulan_ke,
-MONTHNAMEtgl_lahir AS nama_bulan, -COUNT AS jumlah_lahir
-WHERE kelamin=”L” -FROM mahasiswa
-GROUP BY nama_bulan -HAVING jumlah_lahir1
-ORDER BY bulan_ke;
Modul Praktikum Sistem Basis Data ..............................................................................
65
F. TUGAS 1. Tampilkan data Dosen Usia dan Banyak Dosen untuk setiap Usia yang Ganjil, urut