Kategori
TUGAS-TUGAS

Modul Basis Data Subquery

A. Dasar Teori

Subquery atau Subselect adalah query SELECT yang ada di dalam perintah SQL lain— misalnya SELECT, INSERT, UPDATE, atau DELETE. Keberadaan subquery secara nyata mampu menyederhanakan persoalanpersoalan rumit berkaitan query data.

Subquery dapat diklasifikasikan ke dalam tiga jenis :

  1. Scalar
  2. Multiple-row
  3. Multiple-column
  • Scalar Subquery

Subquery baris tunggal (scalar) hanya mengembalikan hasil satu baris data. Subquery baris tunggal dapat menggunakan operator baris tunggal =, >, >=, <, <=, atau <>.

  • Multiple-Row Subquery

Subquery baris ganda (multiple-row) mengembalikan lebih dari satu baris data. Subquery baris ganda dapat menggunakan operator komparasi IN, ANY / SOME, atau ALL.

  • Multiple -Column Subquery

Subquery kolom ganda (multiple-column) mengembalikan lebih dari satu baris dan satu kolom data. Subquery dapat diimplementasikan di dalam klausa WHERE, HAVING, atau FROM.

B. Latihan

  • Buat Database yang berisi tabel mahasiswa, dosen, ambil_mk, matakuliah, jurusan
Tabel ambil_mk
Tabel Dosen
Tabel Jurusan
Tabel Mahasiswa
Tabel Matakuliah
  • Scalar Subquery
Jadi pada scalar subquery diatas yang ingin didapatkan adalah pada tabel mahasiswa yaitu jenis kelamin wati. Setelah mencari data jenis kelamin wati, mencari jenis_kelamin yang sama dengan wati.
  • Multiple-Row Subquery
OPERATOR IN memiliki arti sama dengan member dalam list. Jadi kita bisa mengakses data dari tabel lain.
OPERATOR ANY/SOME memiliki arti membandingkan suatu nilai dengan setiap nilai yang dikembalikan oleh subquery. Operator ANY diatas berfungsi mendapatkan data dari tabel mata kuliah yang memiliki sks lebih besar dari sembarang sks di semester 3.
Fyi : Operator = ANY ekuivalen dengan IN.
Operator < ANY ekuivalen dengan MAX (kurang dari maks).
Operator > ANY ekuivalen dengan MIN (lebih dari min).
OPERATOR ALL memiliki arti membandingkan suatu nilai dengan semua nilai yang dikembalikan oleh subquery. Data yang diinginkan pada subquery diatas adalah data pada tabel matakuliah yang memiliki sks lebih besar dari semua sks di semester 3.
Fyi : Operator < ALL ekuivalen dengan MIN (kurang dari minn).
Operator > ALL ekuivalen dengan MAX (lebih dari makss).
  • Multiple-Column Subquery

Pada Subquery kolom ganda juga menggunakan operator komparasi IN, ANY / SOME, atau ALL. Pada query ini, nilai dari subquery—dalam bentuk kolom ganda—dikomparasi dengan main query.

Pada Subquery diatas jika ingin menampilkan data yang semester dan sksnya sama dengan semester dan sksnya yang memiliki kode_mk “PTI447”
  • Operator EXISTS dan NOT EXISTS

Operator EXISTS dan NOT EXISTS digunakan pada correlated subquery untuk memeriksa apakah subquery mengembalikan hasil atau tidak.

Operator EXISTS artinya operator tersebut akan mengembalikan nilai. Contohnya jika ingin menampilkan data pada ambil_mk yang tertera di tabel matakuliah maka ketikkan EXISTS lalu akan muncul kode_mk yang terdapat di ambil_mk dan juga terdapat pada tabel matakuliah
OPERATOR NOT EXISTS artinya operator tersebut tidak mengembalikan hasil. Contohnya jika kode_mk pada matakuliah tidak tertera pada ambil_mk maka tidak mengembalikan hasil.
  • Subquery dan Fungsi Agregat
Jadi pada Subquery diatas melibatkan fungsi agregat. Contohnya pada subquery diatas jika ingin mendapatkan data dari tabel matakuliah yang memiliki sks terkecil maka menggunakan fungsi agregat MIN. Fungsi tersebut digunakan untuk mencari data terkecil dari sebuah data.
  • Subquery dan Join
Ini merupakan contoh pendekatan subquery, dan subquery diatas mendaptkan data kode dosen dan nama dosen yang tidak mengajar di tabel matakuliah atau tidak tertera di tabel matakuliah.
Tampilan data diatas merupakan contoh pendekatan join, dan dengan menggunakan operator join LEFT OUTER JOIN dari tabel matakuliah.

FYI : Jika diperhatikan, pernyataan pada subquery mengalir secara alami lebih mudah dicerna dibanding join. Bagaimanapun, salah satu kendala dalam join adalah menentukan mana yang akan menjadi tabel kiri dan kanan.

C. Tugas Praktikum

  • Dapatkan data mahasiswa yang alamatnya sama dengan mahasiswa dengan nim 102, tidak termasuk mahasiswa tersebut
caranya dengan memilih dari tabel mahasiswa terlebih dahulu, lalu menggunakan multiple-column subquery dengan operator komparasi IN, pilih alamat mahasiswa dengan nim 102, lalu cari mahasiwa yang alamatnya sama dengan mahasiswa nim 102.
  • Dapatkan matakuliah yang tidak diajar oleh dosen terdaftar
Pertama select dari tabel matakuliah untuk mencari kode matakuliah. Setelah itu mencari kode dosen yang tidak terdaftar pada tabel matakuliah caranya dengan multiple-column dengan operasi not in.
  • Dapatkan data dosen yang mengajar matakuliah dengan sks lebih kecil dari sembarang sks.
Pertama cari dulu data dosen lalu cari kode dosen yang sks nya paling keccil atau lebih kecil dari sks yang lain.
  • Dapatkan nim, nama, dan alamat mahasiswa yang tempat tinggalnya sama dengan dosen yang mengajar matakuliah dengan jumlah sks terbanyak.
Cari nim, nama mahasiswa, dan alamat dari tabel mahasiswa lalu cari alamt dosen yang mengajar matakuliah dengan sks terbanyak. Dengan menggunakan multiple-column subquery dengan operator IN dan ANY untuk mencari dosen yang jumlah sksnya terbanyak

Tinggalkan komentar

Rancang situs seperti ini dengan WordPress.com
Mulai