Oleh:
Fahuda Elwin Yunianto 170533628592
Fajri Novitasari 170533628549
III. Latihan
1. Himpunan Entitas
Dalam latihan ini digunakan kembali tiga buah tabel—meliputi
mahasiswa, ambil_mk, dan matakuliah—yang telah dibuat
sebelumnya, dan ditambah dengan dua buah tabel baru, yaitu dosen
dan jurusan. Untuk itu, terlebih dahulu buat tabel dosen dan jurusan
dengan struktur seperti pada modul.
Pertama, membuat tabel dosen dengan pernyataan SQL berikut:
Setelah tabel dosen dibuat, untuk mengecek dengan memilih
Structure
Relasi
Himpunan entitas di atas dapat direpresentasikan ke dalam diagram
skema (schema diagram). Sebelum membuat relasi, user membuat
index pada beberapa field dengan cara klik Index. Field yang dibuat
menjadi index adalah field nim, kode_mk, pada tabel ambil_mk,
field kode_dos pada tabel matakuliah, dan kode_dos pada tabel
jurusan
Setelah nim dan kode_mk pada tabel mk di set index maka hasilnya
seperti gambar di bawah ini:
Hasil dari set index pada kode_dos seperti gambar dibawah, yaitu
terdapat kunci berwarna abu-abu.
Kemudian menge-set index pada field kode_dos tabel jurusan
Hasil dari set index pada kode_dos seperti gambar dibawah, yaitu
terdapat kunci berwarna abu-abu.
2. Scalar Subquery
Contoh subquery baris tunggal adalah mendapatkan data
mahasiswa yang jenis kelaminnya sama dengan mahasiswa dengan
nama “Wati”.
Sebagai hasilnya, didapatkan jenis kelamin mahasiswa dengan
nama “Wati”, yakni “P” yang selanjutnya digunakan oleh main
query sehingga menghasilkan sebagai berikut.
3. Multiple-Row Subquery
Pada subquery ini, kita menggunakan operator komparasi IN,
ANY /SOME, atau ALL
a. Operator IN
Operator IN memiliki arti : sama dengan member di dalam list.
Sebagai contoh, user bisa menggunakan operator ini untuk
mendapatkan data dosen yang mengajar matakuliah, dengan
mengeksekusi pernyataan SQL berikut:
b. Operator ANY/SOME
Operator ANY / SOME memiliki arti : membandingkan suatu
nilai dengan setiap nilai yang dikembalikan oleh subquery.
Misalkan user ingin mendapatkan data matakuliah yang
memiliki sks lebih besar dari sembarang sks matakuliah di
semester 3, dengan mengeksekusi pernyataan SQL berikut:
c. Operator ALL
Operator ALL memiliki arti: membandingkan suatu nilai dengan
semua nilai yang dikembalikan oleh subquery. Misal, kita ingin
mendapatkan data matakuliah yang memiliki sks lebih besar dari
semua sks matakuliah di semester 3, dengan mengeksekusi
pernyataan SQL berikut:
b. NOT EXISTS
Pernyataan SQL berikut akan mendapatkan data matakuliah
yang tidak diambil oleh mahasiswa
c. Analisis
Mendapatkan data dosen yang mengajar matakuliah basis data
terdistribusi dan sistem operasi dengan menggunakan
pernyataan SQL SELECT * FROM dosen WHERE kode_dos IN
(SELECT kode_dos FROM matakuliah WHERE nama_mk LIKE
‘%Basis Data Terdistribusi%’ OR nama_mk LIKE
c. Analisis
Mendapatkan data mahasiswa dan matakuliah yang diambil di
semester 5 menggunakan pernyataan SQL SELECT m.nim,
m.nama, m.jenis_kelamin, m.alamat, a.kode_mk FROM
mahasiswa m JOIN ambil_mk a ON m.nim=a.nim WHERE
a.kode_mk IN (SELECT kode_mk FROM matakuliah WHERE
semester = '5'). SELECT m.nim, m.nama,
c. Analisis
Mendapatkan data dosen pengajar matakuliah yang tidak
diambil oleh mahasiswa dengan menggunakan pernyataan SQL
SELECT * FROM dosen WHERE kode_dos IN (SELECT
kode_dos FROM mahasiswa m LEFT JOIN ambil_mk a ON
m.nim=a.nim RIGHT JOIN matakuliah k ON
a.kode_mk=k.kode_mk WHERE m.nim IS NULL). SELECT *
c. Analisis
Mendapatkan kode dan nama matakuliah dosen yang menjadi
ketua jurusan teknik elektro dengan pernyataan SQL SELECT
kode_mk, nama_mk FROM matakuliah WHERE kode_dos =
(SELECT kode_dos FROM jurusan WHERE nama_jur =
'Teknik Elektro'). SELECT kode_mk, nama_mk FROM
V. TUGAS RUMAH
1. Mendapatkan data dosen yang mengajar matakuliah dengan sks lebih
kecil dari sembarang sks.
a. Source code
SELECT * FROM dosen WHERE kode_dos IN
(SELECT kode_dos FROM matakuliah
WHERE sks < ANY (SELECT sks FROM matakuliah))
b. Screenshoot program/hasil
c. Penjelasan /Analisis
Setelah menginputkan source code diatas maka program akan
menampilkan data dosen yang mengajar matakuliah dengan sks
lebih kecil dari sembarang sks dengan menggunakan pernyataan
SQL (SELECT sks FROM matakuliah) dimana perintah tersebut
digunakan untuk mencaari data sks pada tabel matakuliah. Lalu
digunakan perintah SELECT kode_dos FROM matakuliah WHERE
sks < ANY yang digunakan untuk mencari data kode dosen dari
tabel matakuliah dan pengondisian dimana data yang lebih kecil
dari sembarang sks yang akan ditampilkan. Dan dilanjutkan
dengan perintah SELECT * FROM dosen WHERE kode_dos IN
yang digunakan untuk menampilkan data dosen yang mengajar
matakuliah dengan sks lebih kecil dari sembarang sks sesuai dalam
list yang telah diinputkan.
2. Menampilkan data nama mahasiswa yang mengambil matakuliah
dengan kode matakuliahnya “ pti777 ”
a. Source code
SELECT m.nama FROM mahasiswa m WHERE m.nim IN
(SELECT a.nim FROM ambil_mk a
WHERE a.kd_mk = "PTI777")
b. Screenshoot program/hasil
c. Penjelasan /Analisis
Setelah menginputkan source code diatas maka program akan
menampilkan nama mahasiswa yang mengambil matakuliah
dengan kode matakuliahnya “PTI777” dengan menggunakan
pernyataan SQL (SELECT a.nim FROM ambil_mk a WHERE
a.kd_mk = "PTI777") dimana perintah tersebut digunakan untuk
mencari data nim dari tabel ambil_mk dimana kd_mk pada tabel
ambil_mk memiliki karakter “PTI777”. Dan digunakan perintah
SELECT m.nama FROM mahasiswa m WHERE m.nim IN dimana
perintah tersebut digunakan untuk menampilkan data mahasiswa
yang mengambil matakuliah dengan kode matakuliahnya “PTI777”
sesuai dalam list yang telah diinputkan.
3. Mendapatkan data mahasiswa yang tinggal satu wilayah dengan dosen
yang merupakan Ketua Jurusan Teknik Elektro.
a. Source code
SELECT * FROM mahasiswa m WHERE m.alamat IN (SELECT
d.alamat_dos FROM dosen d WHERE d.kode_dos IN (SELECT
kode_dos FROM jurusan WHERE nama_jur ="Teknik
Elektro"))
b. Screenshoot program/hasil
c. Penjelasan /Analisis
Setelah menginputkan source code diatas maka program akan
menampilkan data mahasiswa yang tinggal satu wilayah dengan
dosen yang merupakan Ketua Jurusan Teknik Elektro dengan
menggunakan pernyataan SQL SELECT kode_dos FROM jurusan
WHERE nama_jur ="Teknik Elektro" dimana source kode
tersebut digunakan untuk mencari data Ketua Jurusan Teknik
Elektro berdasarkan kode_dos yang didapat dari tabel juusan
dimana nama_jur memiliki karakter “Teknik Elektro”. Dan
digunakan perintah SELECT d.alamat_dos FROM dosen d WHERE
d.kode_dos IN yang digunakan untuk mencari data alamat dosen
dari tabel dosen berdasarkan data kode_dos yang sesuai dalam list
yang telah diinputkan. Lalu digunakan perintah SELECT * FROM
mahasiswa m WHERE m.alamat IN dimana perintah tersebut
digunakan untuk menampilkan data mahasiswa dari tabel
mahasiswa yang memiliki alamat yang sama dengan dosen yang
merupakan Ketua Jurusan Teknik Elektro yang sesuai dalam list
yang telah diinputkan.
c. Penjelasan /Analisis
Setelah menginputkan source code diatas maka program akan
menampilkan data mahasiswa yang mahasiswa yang tidak diajar
oleh Ketua Jurusan Teknik Elektro dengan menggunakan
pernyataan SQL SELECT j.kode_dos FROM jurusan j WHERE
j.nama_jur = "Teknik Elektro" digunakan untuk mencari
data Ketua Jurusan Teknik Elektro berdasarkan kode_dos yang
didapat dari tabel juusan dimana nama_jur memiliki karakter
“Teknik Elektro”. Dan digunakan perintah SELECT ma.kd_mk
FROM matakuliah ma WHERE ma.kode_dos NOT IN yang
digunakan untuk mencari data kd_mk dari tabel matakuliah dimana
kode_dos yang dicari tidak berada dalam list kode_dos pada tabel
jurusan. Lalu digunakan perintah SELECT a.nim FROM ambil_mk
a WHERE a.kd_mk NOT IN yang digunakan untuk mencari data
nim dari tabel ambil_mk dimana kd_mk yang dicari tidak berada
dalam list kd_mk pada tabel matakuliah. Dan yang terakhir
digunakan perintah SELECT * FROM mahasiswa WHERE nim NOT
IN digunakan untuk menampilkan data mahasiswa yang
mahasiswa yang tidak diajar oleh Ketua Jurusan Teknik Elektro
dimana nim yang dicari tidak berada dalam list nim pada tabel
ambil_mk.
VI. Kesimpulan
Dalam praktikum modul 6 “Sub Query” dapat disimpulkan bahwa
SubQuery merupakan sebuah query yang ada di dalam query seperti
halnya query SELECT yang terdapat didalam perintah SQL lain misalnya
SELECT, INSERT, UPDATE, atau DELETE.
Pada praktikum modul 6 terdapat suatu hubungan antara dua jenis
entitas dan direpresentasikan sebagai garis lurus yang menghubungkan dua
entitas. Seperti mahasiswa yang mengambil matakuliah yang relasinya
adalah mengambil.
Pada praktikum ini SubQuery dapat diklasifikasikan kedalam tiga
jenis yaitu Scalar Subquery, Multi-row Subquery, dan Multi-column
Subquery .
Pada praktikum modul 6 terdapat beberapa operator yang
digunakan seperti IN, ANY, ALL, EXISTS, dan NON EXISTS dimana
penggunaan operator IN digunakan untuk membandingkan data yang sama
dengan list data pada Subquery, operator ANY yang digunakan untuk
membandingkan suatu nilai yang dikembalikan oleh Subquery, operator
ALL digunakan untuk melakukan pembandingan dengan sub query
dimana kondisi dengan ALL mengasilkan nilai benar jika pembandingan
menghasilkan nilai benar untuk setiap nilai dalam Subquey, operator
EXISTS merupakan jenis operator yang memberikan nilai benar jika
Subquery menghasilkan sebuah baris atau record. Dan operator NON
EXISTS merupakan kebalikan dari perintah EXISTS.
https://www.it-jurnal.com/pengertian-dan-contoh-subquery-pada-