Apa Sih Query Lanjut Itu? Penasaran Yuk Kita Lihat

Query lanjut adalah suatu tahapan pada SQL yang sifatnya sudah menyangkut tentang manipulasi data untuk 1 atau beberapa tabel yang kondisinya yang tidak dapat dipenuhi oleh perintah query pada umumnya atau perintahnya terlalu panjang oleh karena itu dibuatlah sistem query lanjut yang sifatnya lebih fleksibel dan struktur logikanya lebih mudah dipahami. Pada artikel ini akan dibahas mengenai perbedaan penggunaan corelated subquery dan subquery, cara menggunakan DDL & DML Query untuk mensupport terjadinya proses pembuatan DDL maupun DML, perbedaan serta mampu menggunakan CUBE, ROLLUP, dan GROUPING SETS untuk menampilkan data dalam bentuk report, dan cara menggunakan fungsi – fungsi tambahan yang berhubungan CUBE, ROLLUP, dan GROUPING SETS.

Materi :

  1. SubQuery
  2. Corelated SubQuery
  3. Klausa With
  4. DDL & DML Query
  5. Cube, Rollup, Grouping Set
  6. Null Values

SubQuery

Subquery merupakan query yang mengacu pada suatu tabel dan memerlukan informasi dari tabel lain dengan melakukan query terhadap tabel tersebut dimana subquery memiliki ciri yaitu dijalankan setelah klausa where atau having. subquery sendiri terbagi atas 2 tipe yaitu

1. Single Row SubQuery

Merupakan subquery yang menghasilkan kembalian berupa 1 baris data. sebagai contoh:

terdapat tabel karyawan sebagai berikut

SELECT id_karyawan, nama_karyawan, gaji FROM karyawan WHERE gaji=(SELECT MAX(gaji) FROM karyawan);

dimana perintah diatas akan menghasilkan 1 buah baris data yaitu pegawai yang gajinya 3.500.000

2. Multiple Row SubQuery

Merupakan subquery yang dapat menghasilkan lebih dari satu baris data sekaligus dengan syarat – syarat harus menggunakan operator pembanding tertentu seperti:

  • IN digunakan pada saat ingin membandingkan nilai pada inputan pada suatu set nilai
  • NOT digunakan dengan menggunakan IN hanya saja membalikkan hasil dari IN
  • ANY digunakan saat mengkombinasikan single row subquery dengan multiple row subquery yaitu (= atau >, <)
  • ALL digunakan untuk membandingkan seluruh value pada single row subquery untuk dibandingkan lagi dengan multiple row subquery dimana single row memungkinkan untuk menampilkan banyak data.

sebagai contoh:

terdapat tabel karyawan dan status karyawan sebagai berikut

  • Contoh penggunaan IN

select id_karyawan, nama_karyawan from karyawan where id_karyawan IN (SELECT id_karyawan FROM statuskaryawan)

  • Contoh penggunaan NOT IN

select id_karyawan, nama_karyawan from karyawan where id_karyawan NOT IN (SELECT id_karyawan FROM statuskaryawan)

  • Contoh penggunaan ANY

select id_karyawan, nama_karyawan from karyawan where gaji < ANY (SELECT gaji from karyawan)

  • Contoh penggunaan ALL

select id_karyawan, nama_karyawan from karyawan where gaji < ALL (SELECT gaji from karyawan where id_karyawan=’KR_901′)

Corelated SubQuery

Merupakan subquery yang memiliki keterhubungan dengan main query yang artinya terdapat validasi untuk setiap baris yang didapatkan. Hal ini menjadi kelemahan dari corelated subquery dikarenakan akan memakan waktu pada saat execute time.

sebagai contoh:

terdapat tabel karyawan dan status karyawan sebagai berikut

select id_karyawan, nama_karyawan from karyawan kry where id_karyawan IN (SELECT id_karyawan FROM statuskaryawan WHERE id_karyawan=kry.id_karyawan)

Klausa With

Merupakan blok query yang terdiri atas beberapa main query, sehingga kita bisa memaksimalkan logika AGREGATION FUNCTION.

sebagai contoh:

terdapat tabel karyawan sebagai berikut

DDL Query dan DML Query

DDL Query

Merupakan pembuatan DDL dengan memanfaatkan data-data yang ada pada tabel lain sehingga dalam pembuatannya menggunakan perintah – perintah query (DML).

sebagai contoh:

terdapat tabel karyawan, dan status karyawan sebagai berikut

dengan menggunakan perintah SQL akan dibuat sebuah tabel yang berisikan data karyawan beserta status karyawannya

dari perintah diatas, maka akan terbuat sebuah tabel baru dengan nama lihat_status_karyawan yang dimana berisikan gabungan antara tabel statuskaryawan dan karyawan dengan perbandingan adalah id_karyawan

DML Query

Merupakan query yang memungkinkan terjadinya manipulasi data selain daripada hanya menampilkan data. misalkan manipulasi yang dimaksud adalah input, update, delete.

sebagai contoh:

terdapat tabel karyawan, lihat_status_karyawan sebagai berikut

untuk kasus yang akan ditunjukkan dibawah ini hanyalah perintah untuk menghapus suatu baris pada tabel list_status_karyawan dengan memanfaatkan id_karyawan pada tabel karyawan

DELETE FROM lihat_status_karyawan WHERE id_karyawan = (SELECT id_karyawan FROM karyawan WHERE nama_karyawan=’Isyana’);

CUBE, ROLLUP, dan Grouping Sets

CUBE

Merupakan jenis dari GROUP BY yang dispesifikkan untuk menggroup kemungkinan dan menciptakan subtotal dari seluruh kombanasi kemungkinan yang di-inginkan (MATRIX).

sebagai contoh:

terdapat tabel lihat_status_karyawan sebagai berikut

select id_karyawan, id_statuskaryawan, gaji from lihat_status_karyawan group by cube(id_karyawan, id_statuskaryawan), gaji

ROLLUP

Merupakan jenis dari GROUP BY yang dispesifikkan untuk menggroup kemungkinan tanpa menciptakan kombinasi.

select id_karyawan, id_statuskaryawan, gaji from lihat_status_karyawan group by rollup(id_karyawan, id_statuskaryawan, gaji)

GROUPING SETS

Merupakan jenis dari GROUP BY yang memiliki fungsi dimana kolom set bisa tidak memiliki keluaran sama sekali, satu, ataupun banyak kolom yang telah di groupkan atau bisa di bilang akan mengkalkulasi semua kemukinan agregasi.

sebagai contoh:

terdapat tabel lihat_status_karyawan sebagai berikut

select id_karyawan, id_statuskaryawan, gaji from lihat_status_karyawan group by grouping sets(id_karyawan, id_statuskaryawan, gaji)

NULL VALUES

Merupakan suatu tehnik untuk menghilangkan nilai null pada suatu action query. biasanya digunakan untuk grouping.

sebagai contoh:

terdapat tabel lihat_status_karyawan sebagai berikut

select NVL(id_karyawan, ‘DDD’) kode_karyawan, id_statuskaryawan, gaji from lihat_status_karyawan group by grouping sets(id_karyawan, id_statuskaryawan, gaji)

Yah teman – teman itulah pembahasan terkait dengan query lanjut, jika ada pertanyaan atau masukan, silahkan tuliskan di komentar yah.

Referensi:

  1. W3Schools, “SQL Introduction”, https://www.w3schools.com/sql/sql_intro.asp, diakses 21 Maret 2018.
  2. TutorialPoints, “SQL Overview”, https://www.tutorialspoint.com/sql/, diakses 21 Maret 2018.
  3. OracleLiveSQL, “Live Command SQL”, https://livesql.oracle.com/apex/f?p=590:1000, diakses 21 Maret 2018.

By : Andy Maulana Yusuf – Laboratory Assistant of Computer

Unit Laboratorium Fakultas Ilmu Terapan

View posts by Unit Laboratorium Fakultas Ilmu Terapan

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>