Menggunakan Subquery untuk Memecahkan Query Query

dokumen-dokumen yang mirip
Oracle Academic Initiative

PERTEMUAN 6 SUBQUERY

MODUL 8. Sub Query Pada baris dan Kolom PRAKTIKUM BASIS DATA LANJUT TEKNIK PERANGKAT LUNAK UNIVERSITAS PGRI RONGGOLAWE

Menggunakan Set Operators

SUBQUERY-2. MI2154 SQL LANJUT Dedy Rahman Wijaya, S.T., M.T., OCA

Bab 3. Query Lanjutan POKOK BAHASAN: TUJUAN BELAJAR:

Oracle Academic Initiative

Melaporkan Data Agreget Menggunakan Group Functions

Oracle Academic Initiative

B a s i s D a t a C H A P T E R. SQL Operasi DML. Arif Basofi PENS 2015

B a s i s D a t a. Tatap MUka. SQL Query & Agregate Function. Arif Basofi PENS

Oracle Academic Initiative

Fungsi Single-Row. Fungsi merupakan fitur paling dibutuhkan dari SQL yang dapat digunakan untuk:

Arsitektur Basis Data Oracle

Oracle Academic Initiative

B a s i s D a t a - 1 C H A P T E R. SQL Operasi DML. Copyright 2005 PENS-ITS

PERTEMUAN 5 PENGGUNAAN FUNGSI GROUP

Esson Sihombing, S.Kom. Lab. Basisdata 1 Sistem Informasi UNIKOM 2013

Perkenalan SQL. Ada empat macam tipe database yaitu hirarki, jaringan, relasional, dan objek.

Fungsi Single-Row. Fungsi merupakan fitur paling dibutuhkan dari SQL yang dapat digunakan untuk:

B a s i s D a t a - 1 C H A P T E R SQL. Function & Agregat. Copyright 2005 PENS-ITS

Oracle Academic Initiative

STRUCTURE QUERY LANGUAGE DDL & DML

B a s i s D a t a - 1 C H A P T E R. SQL Operasi DML. Copyright 2005 PENS-ITS

Tutorial Database Oracle Chapter4 Pembatasan dan Pengurutan

Sub Query. Rosa Ariani Sukamto Blog: Website:

IKG2I4 / Software Project I

LAPORAN PRAKTIKUM BASIS DATA LANJUT I

LAPORAN PRAKTIKUM BASIS DATA LANJUT I

Oracle Academic Initiative

Praktikum Basis Data 2017 TE UM MODUL 6 SUB QUERY

@Tessy Badriyah, SKom. MT. PERTEMUAN 12 VIEW

MODUL 4. Query SELECT dan DML (INSERT, UPDATE, DELETE) PRAKTIKUM BASIS DATA LANJUT TEKNIK PERANGKAT LUNAK UNIVERSITAS PGRI RONGGOLAWE

Modul 3 : Query Penggabungan Tabel

Oracle Academic Initiative

PRACTISE

Oracle Academic Initiative

Oracle Academic Initiative

PERTEMUAN 2 PEMILIHAN DAN PENGURUTAN DATA

MODUL 5. Advanced Query : Pemilihan dan Pengurutan Data PRAKTIKUM BASIS DATA LANJUT TEKNIK PERANGKAT LUNAK UNIVERSITAS PGRI RONGGOLAWE

PRAKTIKUM 5 SISTEM BASIS DATA JOIN

Bab 5. Database Trigger POKOK BAHASAN: TUJUAN BELAJAR: 5.1. PENDAHULUAN

Tutorial Database Oracle Chapter3 Menampilkan Data Menggunakan Perintah SQL SELECT

B a s i s D a t a - 1 C H A P T E R SQL OPERASI JOIN. Copyright 2005 PENS-ITS

MODUL 3. View PRAKTIKUM BASIS DATA LANJUT TEKNIK PERANGKAT LUNAK UNIVERSITAS PGRI RONGGOLAWE

Menampilkan Data Dari Beberapa Tabel

BAB 2 : Dasar Penulisan Statemen SQL Sasaran Mengetahui kemampuan dari SQL SELECT Statement Dapat membuat perintah SQL dengan SELECT Statement

PERTEMUAN 10 PEMBUATAN TABEL

Oracle Academic Initiative

RENCANA PEMBELAJARAN

Pertemuan 10 Structure Query Language(SQL)

Pertemuan DDL INDIKATOR. Modul Teori Database Aknela

Oracle Academic Initiative

TABLE JOIN SQL SERVER 2005

Praktikum Sistem Basis Data

Oracle Academic Initiative

B a s i s D a t a C H A P T E R SQL OPERASI JOIN. Arif Basofi PENS 2015

Oracle Academic Initiative

Basis Data 1. Dasar SQL Query. Arif Basofi, S.Kom. MT. Teknik Informatika, PENS

Tujuan. Tujuan. Oracle Database 10g: SQL Fundamentals I 8 2

B a s i s D a t a - 1 C H A P T E R. SQL Lanjutan 1. Copyright 2005 PENS-ITS

LAPORAN PRAKTIKUM BASIS DATA MODUL 3 CONDITIONAL SQL MIKA PURNAMASARI NASTADINA

BAB 4 : Interaksi PL/SQL dengan Oracle Server

TUTORIAL. Mencari nilai Max dan Min

Pemrograman Basis Data dan SQL Modul ke: Pemrograman PL/SQL

Untuk mencoba contoh-contoh perintah join, silahkan eksekusi query create+insert dibawah ini:

Apa yang akan dibahas? Pengertian SQL Penggolongan Statement SQL Aturan Gramatika SQL Struktur Dasar SQL Query Satu (1) Tabel

MENAMPILKAN DATA DARI BANYAK TABEL

Riyanto

Praktikum Basis Data 13 Structure Query Language 1

MODUL 1. Pembuatan tabel, pendefinisian constraint, export dan import PRAKTIKUM BASIS DATA LANJUT TEKNIK PERANGKAT LUNAK UNIVERSITAS PGRI RONGGOLAWE

DATABASE RUMAH SAKIT 1. Objek yang dipakai a. Pasien b. Dokter c. Ruang d. Petugas e. Rawat_inap f. Pembayaran

SUBQUERY VIEW JOIN PRAKTIKUM BERKAS DAN BASIS DATA 2010/2011. Rizki Arif Firdaus

SEKOLAH TINGGI TEKNOLOGI INDONESIA TANJUNG PINANG

PERTEMUAN 9 MANIPULASI DATA

PRAKTIKUM 8 SINGLE ROW & GROUP FUNCTION

PERTEMUAN 4 MENAMPILKAN DATA DARI BANYAK TABEL

STRUCTURED QUERY LANGUAGE (SQL) (Implementasi menggunakan MySQL)

B a s i s D a t a - 1 C H A P T E R. SQL Operasi DDL. Copyright 2005 PENS-ITS

MENGENAL SYNTAX DML PADA SQL

PERTEMUAN 8 PENGATURAN OUTPUT PADA SQL*PLUS

Kegiatan Praktikum Sistem Basis Data Kelompok B

Query adalah bahasa SQL (Structured Query Language) yang ditampilkan dalam bentuk visual, yang dapat digunakan untuk melihat, memodifikasi dan

Fakultas Teknologi Informasi

MODUL 3 JOIN TABLE. Gambar Model Relasi Basis Data db_mutiara SMK NEGERI 1 CIMAHI REKAYASA PERANGKAT LUNAK

M0564-Pengantar Sistem Basisdata 12/ 1

Pertemuan 4 Menampilkan/Mengambil Data Dari Database

MODUL 7. Advanced Query : Menampilkan Data Dari Banyak Tabel PRAKTIKUM BASIS DATA LANJUT TEKNIK PERANGKAT LUNAK UNIVERSITAS PGRI RONGGOLAWE

Me Retrieve Data Menggunakan Pernyataan SQLSELECT

B a s i s D a t a C H A P T E R. SQL Operasi DDL. Arif Basofi PENS 2015

Data Manipulation Language (DML)

MENAMPILKAN DATA MENGGUNAKAN SQL SELECT

CONSTRAINT clients_client_num_pk PRIMARY KEY (client_number));

Untuk menampilkan data-data yang telah tersimpan dalam database diperlukan perintah SELECT, yang dapat dirumuskan sebagai berikut:

Strctured Query Language BASIS DATA

GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP) PROGRAM STUDI : DIII MANAJEMEN INFORMATIKA Semester : 4

Oracle Academic Initiative

S Q L. Sejarah SQL. Penulisan Perintah SQL. SQL (Structure Query Language)

Structured Query Language

SUBQUERY SKALAR DAN TEKNOLOGI CACHING PADA ORACLE DATABASE. Iwan Tanto

Transkripsi:

6 Menggunakan Subquery untuk Memecahkan Query Query

Tujuan Setelah menyelesaikan pelajaran ini, Anda akan dapat melakukan hal hal berikut: Menentukan subquery subquery Menjelaskan tipe tipe dari persoalan persoalan yang bisa dipecahkan subquery Daftar tipe tipe dari subquery Menulis subquery subquerysingle row dan multiple row Tujuan Dalam pelajaran ini, Anda belajar tentang fitur fitur lebih lanjut dari pernyataan SELECT. Anda dapat menulis subquery subquerypada klausa WHERE dari pernyataan SQL yang lain untuk memperoleh nilai nilai berdasarkan pada suatu nilai kondisional yang tidak diketahui. Pelajaran ini meliputi single row subquerydan multiple rowsubquery. Oracle Database 10g: SQL Fundamentals I 6 2

Menggunakan Suatu Subquery untuk Memecahkan Suatu Persoalan Siapakah yang memiliki penghasilan lebih besar daripada penghasilan Abel? Menggunakan suatu Subquery untuk Memecahkan suatu Persoalan Misalkan Andaingin menulis suatu query untuk mencari tahu penghasilan siapa yang lebih besar daripadapenghasilan Abel. Untuk memecahkan masalah ini, Anda memerlukan duaquery: satu query untuk mencari berapa banyak penghasilan Abel, dan query keduauntuk mencari penghasilan siapa yang lebih besar dari jumlah itu. Anda dapat memecahkan persoalan ini dengan menggabungkan dua query, menempatkan satu query didalam query lain. Inner query (atau subquery) mengembalikan suatu nilai yang digunakanouterquery (atau query utama). Penggunaan suatu subquery sama dengan penggunaan dua query berturut turut dan menggunakan hasil dari query pertama sebagainilai pencari dalam query yang kedua. Oracle Database 10g: SQL Fundamentals I 6 3

Sintak Subquery Subquery (inner query) dieksekusi sekali sebelum query utama (outer query). Hasil dari subquery digunakan oleh query utama. Sintak Subquery Suatu subquery adalah suatu pernyataanselect yang dilekatkan didalam suatu klausa pada pernyataan SELECT lain. Andadapat membangun pernyataan pernyataan yang kuat selain yang sederhana dengan menggunakan subquery subquery. Subquery subquerybisa sangat bermanfaat ketika Andamemerlukan untuk memilih baris baris dari suatu table dengan suatu kondisi yang tergantung pada data didalam tabel itu sendiri. Anda dapat menempatkan subquery didalam sejumlah klausa klausa SQL, termasuk berikut : Klausa WHERE Klausa HAVING Klausa FROM Didalam Syntax : Operatortermasuk suatu kondisi pembandingseperti >, =, atau IN Catatan : Kondisi kondisi pembandingdibagi dalam dua kelas : single row operator (>,=,>=,<,<>,<=) dan multiple row operator(in,any, ALL). Subquerylebih dikenal sebagai suatu SELECT bersarang (nested), sub SELECT, atau pernyataan inner SELECT. Secara umum subquerydieksekusi pertama kali, dan hasilnya digunakan untuk melengkapi kondisi query pada query utama (atau outer). Oracle Database 10g: SQL Fundamentals I 6 4

Menggunakan suatu Subquery Menggunakan suatu Subquery Dalam slide, innerquerymenentukan penghasilandari pegawaibernama Abel. Outer query mengambil hasil dari inner query dan menggunakan hasil ini untuk menampilkan semua pegawai yang berpenghasilan lebih dari jumlah tersebut. Oracle Database 10g: SQL Fundamentals I 6 5

Pedoman Pedoman untuk Menggunakan Subquery Subquery subquery diapit tanda kurung. Tempatkan subquery subquerydi sebelah kanan dari kondisi pembanding. Klausa ORDER BY dalam subquery tidak diperlukan kecuali Anda melakukan pemeringkatan (Top N analysis). Gunakan single row operator pada single row subquery, dan gunakan multiple row operator pada multiple row subquery. Pedoman Pedoman untuk Menggunakan Subquery Suatu subquery harus diapit tanda kurung. Tempatkan subquery disisi kanan dari kondisi pembanding agar mudah dibaca. Pada Oracle8i dan keluaran keluaran berikutnya, suatu klausa ORDER BY bisa digunakan dan diperlukan dalamsubquery untuk melakukan pemeringkatan (Top N analysis). Sebelumnya pada Oracle8i, bagaimanapun, subquery subquery tidak bisa memuat klausa ORDER BY.Klausa ORDER BY hanya sekali digunakan untuk suatu pernyataan SELECT; jika ditentukan, klausa ORDER BYberada diakhir pada pernyataan SELECT utama. Dua kelas dari kondisi kondisi pembanding digunakan dalam subquery subquery: single row operator dan multiple row operator. Oracle Database 10g: SQL Fundamentals I 6 6

Tipe Tipe dari Subquery Single row subquery Multiple row subquery Tipe Tipe dari Subquery Single rowsubquery: Query yang mengembalikan hanya satu baris dari pernyataan inner SELECT(SELECT terdalam). Multiple rowsubquery: Query yang mengembalikan lebih dari satu baris dari pernyataan inner SELECT. Catatan : Ada jugamultiple column subquery, dimana query query itu mengembalikan lebih dari satu kolom dari pernyataan inner SELECT. Hal tersebut dicakup dalam Oracle Database 10g: SQL Fundamentals II Course. Oracle Database 10g: SQL Fundamentals I 6 7

Single Row Subqueries Mengembalikan hanya satu baris Gunakan operator operator pembanding single row Single Row Subqueries Suatu single rowsubquery adalah mengembalikan satu baris dari pernyataan inner SELECT. Tipe dari subquery ini menggunakan suatu single row operator. Pada slide diberikan suatu daftar dari operator operator single row. Contoh Tampilkan pegawai pegawai yang job ID nya sama dengan pegawai 141: SELECT last_name, job_id FROM employees WHERE job_id = (SELECT job_id FROM employees WHERE employee_id = 141 ); Rajs Davies Matos Vargas LAST_NAME ST_CLERK ST_CLERK ST_CLERK ST_CLERK JOB_ID Oracle Database 10g: SQL Fundamentals I 6 8

Mengeksekusi Single Row Subqueries Mengeksekusi Single Row Subqueries PernyataanSELECTbisadianggap sebagai suatu blok query. Contoh pada slide menampilkan pegawai pegawai yang job ID nya sama dengan pegawai 141 dan siapa saja penghasilannya lebih besar dari pegawai 143. Pada contoh terdapat tiga blok query: outer query dan dua inner query. Blokinner querydieksekusi pertama kali, secara berturut turut menghasilkan hasil query ST_CLERK dan 2600. Blok outer query kemudian memproses dan menggunakan nilai nilai yang dikembalikan oleh inner queries untuk melengkapikondisi kondisi pencariannya. Duainner query mengembalikan nilai nilai tunggal ( secara berturut turut ST_CLERK dan 2600), jadi pernyataan SQL ini disebut suatu single row subquery. Catatan : Outer querydan inner querybisa mengambil data dari tabel tabel yang berbeda. Oracle Database 10g: SQL Fundamentals I 6 9

Menggunakan Group Functions dalam suatu Subquery Menggunakan Grup Function dalam suatu Subquery Anda bisa menampilkan data dari suatu query utama dengan menggunakan grup function didalam subqueryuntuk mengembalikan suatu baris tunggal. Subqueryberada dalam tanda kurung dan diletakkan setelah kondisi pembanding. Contoh pada slide menampilkan nama belakang pegawai, job ID, dan penghasilan seluruh pegawai yang penghasilannya sama dengan penghasilan minimum. Group functionmin mengembalikan suatu nilai tunggal (2500) untuk outer query. Oracle Database 10g: SQL Fundamentals I 6 10

Klausa HAVING pada Subquery Subquery Server Oracle pertama mengeksekusi subquery subquery. Server Oracle mengembalikan hasil hasil kedalam klausa HAVING dari query utama. Klausa HAVING dengan Subquery Anda dapat menggunakan subquery subquery tidak hanya pada klausa WHERE tapi bisa juga pada klausa HAVING. Server Oracle mengeksekusisubquery, dan hasilnya dikembalikan ke dalam klausa HAVINGpada query utama. Pernyataan SQL dalam slide menampilkan semua departemen yang mempunyai penghasilan minimum lebih besar dari departemen 50.... 7 ROWS SELECTED DEPARTMEN_ID MIN(SALARY) 10 4400 20 6000 7000 Contoh : Cari jabatan dengan penghasilan rata rata minimum. SELECT job_id, AVG(salary) FROM employees GROUP BY job_id HAVING AVG(salary) = (SELECT MIN(AVG(salary)) FROM employees GROUP BY job_id); Oracle Database 10g: SQL Fundamentals I 6 11

Apa yang Salah pada Pernyataan Ini? Single row operator pada multiple row subquery Kesalahan Kesalahan pada Subquery Subquery Satu kesalahan umum padasubquery terjadi ketika lebih dari satu baris dikembalikan untuk suatu single rowsubquery. Pada pernyataan SQL dalam slide, subquery berisi suatu klausa GROUP BY, yang berakibat subquery itu akan mengembalikan banyak baris, satu dari setiap kelompok yang ditemukannya. Dalam kasus ini, hasil dari subquery adalah 4400, 6000, 2500, 4200, 7000, 17000, dan 8300. Outer query mengambil hasil hasil itu dan menggunakannya pada klausa WHERE. Klausa WHERE berisi suatu operator samadengan (=), suatu operator pembanding single row yang dikira hanya satu nilai. Operator = tidak menerima lebih dari satu nilai dari subquerydan oleh karena itu menghasilkan kesalahan. Untuk memperbaiki kesalahan ini, rubah operator = menjadi IN. Oracle Database 10g: SQL Fundamentals I 6 12

Akankah Pernyataan ini Mengembalikan Baris Baris? Subquery tidak mengembalikan nilai nilai. Persoalan Persoalan pada Subquery Subquery Suatu persoalan umum pada subquery subquery muncul saat tidak ada baris baris yang dikembalikan oleh inner query. Pada pernyataan SQL dalam slide, subquery berisi suatu klausa WHERE. Rupanya, tujuannya adalah untuk mencari pegawai yang bernama Haas.Pernyataannya benar tetapi tidak ada baris yang terpilih ketika dieksekusi. Tidak ada pegawai bernama Haas. Sehingga subquery tidak mengembalikan baris baris. Outer query mengambil hasil hasil dari subquery (null) dan menggunakan hasil hasil tersebut pada klausa WHEREouter query. Outer query tidak mencaripegawai dengan suatu job ID sama dengan null, jadi tidak mengembalikan baris baris. Jika suatu jobberada pada suatu nilai null, baris tidak dikembalikan karena perbandingan dua nilai null menghasilkan suatu null.oleh karena, kondisi WHERE tidak benar. Oracle Database 10g: SQL Fundamentals I 6 13

Multiple Row Subqueries Mengembalikan lebih dari satu baris Gunakan operator operator pembanding multiple row Multiple Row Subqueries Subquery subquery yang mengembalikan lebih dari satu baris disebut multiple row subqueries. Anda menggunakan suatu multiple row operator, disamping suatu single row operator, pada suatu miltiple row subquery. Multiple row operatormemperkirakan satu atau lebih nilai nilai: Contoh Cari pegawai pegawai yang mendapat penghasilan yang samadenganpenghasilanminimum untuk setiap departemen. Inner query dieksekusi pertama kali, menghasilkan suatu hasil query. Blok query utama kemudian memproses dan menggunakan nilai nilai yang dikembalikan oleh inner queryuntuk melengkapi kondisi pencariannya. Sesungguhnya, query utama tampakpada server Oracle sebagai berikut: SELECT last_name, salary, department_id FROM employess WHERE salary IN (2500, 4200, 6000, 7000, 800, 8600, 17000); Oracle Database 10g: SQL Fundamentals I 6 14

Menggunakan Operator ANY dalam Multiple Row Subqueries Multiple Row Subqueries (lanjutan) Operator ANY ( dan sinonimnya, operatorsome) membandingkan suatu nilai padasetiap nilai yang dikembalikan oleh suatu subquery. Contoh pada slide menampilkan para pegawai yang bukan IT programmers dan penghasilan siapa yang kurang dari beberapait programmer. Penhasilan maksimum yang didapat seorang programmer adalah $ 9,000. <ANYmaksudnya kurang dari maksimum.>anymaksudnya lebih dari minimum.=anyadalah sama dengan IN. Oracle Database 10g: SQL Fundamentals I 6 15

Menggunakan Operator ALL dalam Multiple Row Subqueries Multiple Row Subqueries(lanjutan) Operator ALLmembandingkan suatu nilai untuk setiap nilai yang dikembalikan oleh suatu subquery. Contoh dalam slide menampilkan para pegawai yang penghasilannya kurang dari penghasilan dari semua pegawai dengan suatu job ID IT_PROG dan siapa yang bukan IT_PROG. >ALL maskudnya lebih dari maksimum, dan <ALL maksudnya kurang dari minimum. Operator NOTdapat digunakan denganoperator operator IN, ANY, dan ALL. Oracle Database 10g: SQL Fundamentals I 6 16

Nilai Nilai NULL dalam suatu Subquery Mengembalikan Null Null dalam Menghasilkan Kumpulan dari suatu Subquery Pernyataan SQL dalam slide mencoba untuk menampilkan semua pegawai yang tidak memiliki beberapa subordinate. Secara logika, pernyataan SQL ini akan dikembalikan 12 baris. Bagaimanapun, pernyataan SQL tidak mengembalikan beberapa baris pun. Satu dari nilai nilai dikembalikan oleh inner query adalah nilai null, dan dan karenanya keseluruhan query tidak mengembalikanbaris baris. Alasan adalah bahwa semua kondisi kondisi yang membandingkan suatu nilai null menghasilkan suatu null. Jadi kapanpun nilai nilai null secara kemungkinan menjadi bagian dari sekelompok hasilhasil dari suatu subquery, jangan gunakan operator NOTIN. Operator NOTIN sama dengan operator <>ALL. Sebagai catatan bahwa nilai nullsebagai bagian dari sekelompok hasil hasil dari suatu subquery adalah tidak menjadi masalah jika Anda menggunakan operator IN. Operator IN adalah sama dengan operator =ANY. Sebagai contoh, untuk menampilkan para pegawai yang memiliki subordinate, gunakan pernyataan SQL berikut : SELECT emp.last_name FROM employees emp WHERE emp.employees_id IN (SELECT mgr.manager_id FROM employees mgr); Sebagai alternatif, suatu klausa WHERE dapat disertakan pada subquery untuk menampilkan seluruh pegawai yang tidak memiliki beberapa subordinate : SELECT last_name FROM employees WHERE employee_id NOT IN (SELECT manager_id FROM employees WHERE manager_id IS NOT NULL); Oracle Database 10g: SQL Fundamentals I 6 17

Ringkasan Dalam pelajaran ini, Anda sudah mempelajari bagaimana untuk : Mengenali kapan suatu subquery dapat membantu memecahkan suatu pertanyaan Menulis subquery subqueryketika suatu query didasarkan pada nilai nilai yang tidak diketahui Ringkasan Dalam pelajaran ini, Anda sudah mempelajari bagaimana untuk menggunakan subquery subquery. Suatu subquery adalah suatupernyataan SELECTyang dilekatkan pada suatu klausa dari pernyataan SQL yang lain. Subquery subquery berguna ketika suatu query didasarkan pada suatu criteria pencarian dengan nilai nilai lebih jauh tidak dikenal. Subquery mempunyai karakteristik sebagai berikut : Dapat melawatkan satu baris data ke suatu pernyataan utama yang berisi suatu single row operator, seperti =, <>, >, >=, <, atau <= Dapat melewatkan beberapa baris data ke suatu pernyataan utama yang berisi suatu multiple row operator, seperti IN Adalah yang pertama kali diproses oleh server Oracle, setelah klausa WHERE atau HAVING menggunakan hasil hasil. Dapat berisi group functions. Oracle Database 10g: SQL Fundamentals I 6 18