Oracle Academic Initiative

dokumen-dokumen yang mirip
Bab 3. Query Lanjutan POKOK BAHASAN: TUJUAN BELAJAR:

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

Sub Query. Rosa Ariani Sukamto Blog: Website:

Oracle Academic Initiative

Oracle Academic Initiative

Oracle Academic Initiative

Oracle Academic Initiative

Oracle Academic Initiative

Oracle Academic Initiative

Oracle Academic Initiative

Arsitektur Basis Data Oracle

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

PERTEMUAN 6 SUBQUERY

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

Oracle Academic Initiative

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 - 1 C H A P T E R. SQL Operasi DML. Copyright 2005 PENS-ITS

IKG2I4 / Software Project I

PRACTISE

BAB 4 : Interaksi PL/SQL dengan Oracle Server

Oracle Academic Initiative

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

@Tessy Badriyah, SKom. MT. PERTEMUAN 12 VIEW

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

STRUCTURE QUERY LANGUAGE DDL & DML

Oracle Academic Initiative

PERTEMUAN 5 PENGGUNAAN FUNGSI GROUP

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

Menggunakan Set Operators

Oracle Academic Initiative

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

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

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

Oracle Academic Initiative

PERTEMUAN 9 MANIPULASI DATA

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

Tutorial Database Oracle Chapter3 Menampilkan Data Menggunakan Perintah SQL SELECT

Menggunakan Subquery untuk Memecahkan Query Query

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

PERTEMUAN 10 PEMBUATAN TABEL

PERINTAH SQL DAN INTERKONEKSI PHP-MySQL

Pertemuan DDL INDIKATOR. Modul Teori Database Aknela

Pertemuan 10 Structure Query Language(SQL)

PERTEMUAN 2 PEMILIHAN DAN PENGURUTAN DATA

PRAKTIKUM 5 SISTEM BASIS DATA JOIN

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

Menampilkan Data Dari Beberapa Tabel

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

15-Jan DATABASE - MySQL. Database. Constraints. Tujuan: Memahami perintah-perintah dasar DDL dan DML

Basis Data. Bagian IV SQL (3) Fak. Teknik Jurusan Teknik Informatika Universitas Pasundan

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

TABLE JOIN SQL SERVER 2005

Praktikum Basis Data 2017 TE UM MODUL 6 SUB QUERY

RENCANA PEMBELAJARAN

DATABASE - MySQL. Muhammad Zen S. Hadi, ST. MSc.

LAPORAN PRAKTIKUM BASIS DATA LANJUT I

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

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

Tutorial Database Oracle Chapter4 Pembatasan dan Pengurutan

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

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

Oracle Academic Initiative

M0564-Pengantar Sistem Basisdata 12/ 1

Modul 3 : Query Penggabungan Tabel

PERTEMUAN 8 PENGATURAN OUTPUT PADA SQL*PLUS

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

SQL Data Definition Language (DDL)

Melaporkan Data Agreget Menggunakan Group Functions

Basis Data. Bagian IV SQL (2) Fak. Teknik Jurusan Teknik Informatika Universitas Pasundan

CONSTRAINT clients_client_num_pk PRIMARY KEY (client_number));

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

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

Praktikum Basis Data 14 Structure Query Language 2

VIEW : Tabel Virtual VIEW 5/29/2017

STRUCTURE QUERY LANGUAGE (SQL)

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

Schema Objects. MI2154 SQL LANJUT Dedy Rahman Wijaya, S.T., M.T., OCA

MODUL V SUB QUERY & VIEW

LAPORAN PRAKTIKUM BASIS DATA LANJUT I

PERTEMUAN 11 CONSTRAINT. Tujuan Pembelajaran : Memahami definisi Constraint Dapat Membuat Constraint Dapat Melakukan pemeliharaan Constraint

Data Manipulation Language (DML)

Basis Data II. Pertemuan Ke-6 (Function) Noor Ifada

Macam - Macam Perintah Pada SQL

MENAMPILKAN DATA DARI BANYAK TABEL

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

Kunci komposit adalah kunci yang melibatkan lebih dari satu field Contoh tabel Tanggungan: Apa yang terjadi kalau kunci primer hanya berupa NIP?

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

PENGANTAR TEKNOLOGI SISTEM INFORMASI MANAGEMENT 2

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

Praktikum Sistem Basis Data

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

STRUCTURED QUERY LANGUAGE (SQL) (Implementasi menggunakan MySQL)

BAB 2 LANDASAN TEORI Pengertian DBMS (Database Management System)

SISTEM BASIS DATA STMIK - AUB SURAKARTA

MODUL 4 INTERNET PROGRAMMING DATABASE

Mahasiswa memahami fungsi-fungsi lain di dalam SQL Mahasiswa memahami tentang operasi agregasi Mahasiswa mampu mengaplikasikan operasi agregasi

PERTEMUAN 4 MENAMPILKAN DATA DARI BANYAK TABEL

Transkripsi:

Oracle Academic Initiative Oracle9i Introduction to SQL Oleh: Tessy Badriyah, SKom.MT Politeknik Elektronika Negeri Surabaya Institut Teknologi Sepuluh Nopember Surabaya BAB 18 : SubQuery Lanjutan Halaman : 18-0

BAB 18 : SubQuery Lanjutan Sasaran Dapat menulis subquery dengan banyak kolom Dapat menggambarkan dan menjelaskan karakteristik dari subqueries pada saat didapatkan nilai NULL Dapat menulis subquery dalam klausa FROM Dapat menggunakan scalar subqueries dalam SQL Dapat menggambarkan tipe dari persoalan yang dapat dipecahkan dengan menggunakan sub query yang berkorelasi. Dapat menulis subquery yang berkorelasi. Melakukan Update dan Delete baris dengan menggunakan subqueries yang berkorelasi. Dapat menggunakan operator EXISTS dan NOT EXISTS Dapat menggunakan klausa WITH 18.2. Apa itu SubQuery? Apa yang disebut dengan SubQuery? Subquery adalah statement SELECT yang dilampirkan sebagai klausa dalam SQL Statement yang lain. Main query SELECT... FROM... WHERE... (SELECT... FROM... WHERE...) Subquery 18.3. SubQuery Subquery (inner query) dijalankan sekali sebelum main query. digunakan oleh main query (outer query). Kemudian hasil dari subquery SELECT select_list FROM table WHERE expr operator (SELECT select_list FROM table); 18.4. Penggunaan SubQuery SELECT last_name WHERE salary > 10500 (SELECT salary WHERE employee_id = 149) ; BAB 18 : SubQuery Lanjutan Halaman : 18-1

18.5. SubQuery Banyak Kolom Tiap baris dari main query dibandingkan dengan nilai dari subquery multiple-row dan multiplecolumn. Main query WHERE (MANAGER_ID, DEPARTMENT_ID) IN Subquery 100 90 102 60 124 50 18.6. Pembandingan Kolom Pembandingan kolom dalam subquery banyak kolom dapat berupa : Pembandingan berpasangan Pembandingan tidak berpasangan 18.7. Pairwise Comparison SubQuery Berikut contoh pembandingan berpasangan untuk menampilkan detail dari data pegawai yang dimanajeri oleh manajer dan department yang sama dengan yang dimiliki oleh nomer pegawai 178 atau 174. SELECT employee_id, manager_id, department_id WHERE (manager_id, department_id) IN (SELECT manager_id, department_id WHERE employee_id IN (178,174)) AND employee_id NOT IN (178,174); 18.8. NonPairwise Comparison SubQuery Berikut contoh pembandingan tidak berpasangan untuk menampilkan detail dari data pegawai yang dimanajeri oleh manager yang sama dengan pegawai dengan nomer pegawai 174 atau 141 dan bekerja dalam departement yang sama dengan pegawai yang memiliki nomer pegawai 174 atau 141. SELECT employee_id, manager_id, department_id WHERE manager_id IN (SELECT manager_id WHERE employee_id IN (174,141)) AND department_id IN (SELECT department_id WHERE employee_id IN (174,141)) AND employee_id NOT IN(174,141); BAB 18 : SubQuery Lanjutan Halaman : 18-2

18.9. Penggunaan SubQuery dalam Klausa FROM SELECT a.last_name, a.salary, a.department_id, b.salavg a, (SELECT department_id, AVG(salary) salavg GROUP BY department_id) b WHERE a.department_id = b.department_id AND a.salary > b.salavg; 18.10. Ekspresi Scalar SubQuery Ekspresi scalar subquery adalah subquery yang mengembalikan hanya satu nilai kolom dari satu baris. Scalar subquery pada Oracle8i hanya terbatas pada : SELECT Statement (klausa FROM dan WHERE saja) Daftar VALUE dari statement INSERT Pada Oracle9i, scalar subqueries dapat diguanakan dalam : Kondisi dan ekspresi sebagai bagian dari perintah DECODE dan CASE. Semua klausa dari SELECT Statement kecuali GROUP BY. 18.11. Contoh Scalar SubQuery Scalar SubQuery dalam ekspresi CASE : SELECT employee_id, last_name, (CASE WHEN department_id = (SELECT department_id FROM departments WHERE location_id = 1800) THEN 'Canada' ELSE 'USA' END) location ; 20 Scalar SubQuery dalam klausa ORDER BY : SELECT employee_id, last_name e ORDER BY (SELECT department_name FROM departments d WHERE e.department_id = d.department_id); BAB 18 : SubQuery Lanjutan Halaman : 18-3

18.12. Korelasi SubQuery Korelasi SubQuery digunakan untuk pemrosesan baris per baris. Tiap-tiap subquery dijalankan sekali untuk setiap baris dari outer query. Prosesnya sebagai berikut : AMBIL Baris dari outer query JALANKAN inner query dengan menggunakan nilai baris kandidat GUNAKAN Nilai dari inner query untuk qualify / disqualify baris kandidat Sintak penulisan Korelasi SubQuery : SELECT column1, column2,... FROM table1 outer WHERE column1 operator (SELECT colum1, column2 FROM table2 WHERE expr1 = outer.expr2); Subquery merefer ke kolom dari tabel yang ada pada parent query. 18.13. Penggunaan Korelasi SubQuery Contoh penggunaan Korelasi SubQuery untuk mencari pegawai yang penghasilannya melebihi ratarata penghasilan pada departemen tempat mereka bekerja. SELECT last_name, salary, department_id outer WHERE salary > (SELECT AVG(salary) WHERE department_id = outer.department_id) ; Setiap saat baris dari outer query diproses, maka inner query dievaluasi. BAB 18 : SubQuery Lanjutan Halaman : 18-4

Contoh yang lain dari korelasi subquery adalah untuk menampilkan pegawai yang pernah berganti job sedikitnya dua kali. SELECT e.employee_id, last_name,e.job_id e WHERE 2 <= (SELECT COUNT(*) FROM job_history WHERE employee_id = e.employee_id); 18.14. Penggunaan Operator EXIST Operator EXISTS menguji keberadaan dari baris dalam himpunan hasil dari subquery. Jika ditemukan, maka : pencarian tidak dilanjutkan dalam inner query dan kondisi ditandai TRUE. Jika tidak ditemukan, maka : Kondisi ditandai FALSE dan kondisi pencarian dilanjutkan dalam inner query. Berikut penggunaan operator EXISTS untuk mencari pegawai yang memiliki sedikitnya satu orang bawahan. SELECT employee_id, last_name, job_id, department_id outer WHERE EXISTS ( SELECT 'X' WHERE manager_id = outer.employee_id); 18.15. Penggunaan Operator NOT EXIST Berikut contoh penggunaan operator NOT EXIST untuk menampilkan semua departemen yang tidak mempunyai pegawai. SELECT department_id, department_name FROM departments d WHERE NOT EXISTS (SELECT 'X' WHERE department_id = d.department_id); BAB 18 : SubQuery Lanjutan Halaman : 18-5

18.16. Korelasi UPDATE Korelasi Subquery juga dapat digunakan untuk meng-update baris pada satu table berdasarkan pada baris dari table yang lain. UPDATE table1 alias1 SET column = (SELECT expression FROM table2 alias2 WHERE alias1.column = alias2.column); Contoh penggunaan Korelasi UPDATE : 18.17. Korelasi DELETE Korelasi Subquery juga dapat digunakan untuk menghapus baris pada satu table berdasarkan pada baris dari table yang lain. DELETE FROM table1 alias1 WHERE column operator (SELECT expression FROM table2 alias2 WHERE alias1.column = alias2.column); Contoh penggunaan Korelasi DELETE : DELETE E WHERE employee_id = (SELECT employee_id FROM emp_history WHERE employee_id = E.employee_id); 18.18. Klausa WITH ALTER TABLE employees ADD(department_name VARCHAR2(14)); UPDATE employees e SET department_name = (SELECT department_name FROM departments d WHERE e.department_id = d.department_id); Dengan menggunakan klausa WITH, kita dapat menggunakan blok query yang sama dalam statement SELECT pada saat terjadi lebih dari sekali dalam complex query. Klausa WITH mendapatkan hasil dari blok query dan menyimpannya dalam tablespace temporer kepunyaan user. Klausa WITH dapat meningkatkan performansi. 18.19. Contoh Klausa WITH Contoh : Gunakan klausa WITH untuk menampilkan nama department dan total gaji untuk tiap departemen yang memiliki total gaji lebih besar dari gaji rata-rata pada sembarang department. WITH dept_costs AS ( SELECT d.department_name, SUM(e.salary) AS dept_total e, departments d WHERE e.department_id = d.department_id GROUP BY d.department_name), avg_cost AS ( SELECT SUM(dept_total)/COUNT(*) AS dept_avg FROM dept_costs) SELECT * FROM dept_costs WHERE dept_total > (SELECT dept_avg FROM avg_cost) ORDER BY department_name; BAB 18 : SubQuery Lanjutan Halaman : 18-6

18.20. Latihan BAB 18 : SubQuery Lanjutan Halaman : 18-7