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 :
- SubQuery
- Corelated SubQuery
- Klausa With
- DDL & DML Query
- Cube, Rollup, Grouping Set
- 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:
- W3Schools, “SQL Introduction”, https://www.w3schools.com/sql/sql_intro.asp, diakses 21 Maret 2018.
- TutorialPoints, “SQL Overview”, https://www.tutorialspoint.com/sql/, diakses 21 Maret 2018.
- 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