Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Sistem Manajemen Basis Data

Presentasi serupa


Presentasi berjudul: "Sistem Manajemen Basis Data"— Transcript presentasi:

1 Sistem Manajemen Basis Data
Query Lanjut Materi 3 Sistem Manajemen Basis Data Eko Prasetyo Teknik Informatika Universitas Bhayangkara Surabaya 2012

2 Tabel-tabel yang digunakan
lecturer students enrolled faculty grade_scale course

3 SubQuery Subquery adalah statement SELECT yang dilampirkan sebagai klausa dalam SQL Statement yang lain. Pada gambar, subquery (inner query) dijalankan sekali sebelum main query. Kemudian hasil dari subquery digunakan oleh main query (outer query). Berikut posisi penulisan subquery dalam SQL command :

4 Penggunaan Subquery Subquery mengembalikan nilai ke main query.
Subquery digunakan untuk menyelesaikan persoalan dimana terdapat suatu nilai yang tidak diketahui (unknown values). Berikut ini diberikan contoh penggunaan subquery. Menampilkan nama mahasiswa (kolom name dalam tabel students) yang usianya lebih tua dari mahasiswa dengan sid = select a.name from students as a where a.age > (select age from students where sid=' ') Menampilkan isi tabel enrolled yang sid dimiliki oleh mahasiswa yang huruf awal namanya ‘R’ select * from enrolled where sid in (select sid from students where name like 'R%')

5 Subquery banyak kolom Pada subquery dengan banyak kolom, tiap baris dari main query dibandingkan dengan nilai dari subquery multiple-row dan multiple-column. Berikut ini contoh pembandingan dengan banyak kolom dan baris :

6 Perbandingan kolom Pembandingan kolom dalam subquery banyak kolom dapat berupa : Pembandingan berpasangan (Pairwise Comparison SubQuery) Pembandingan tidak berpasangan (NonPairwise Comparison SubQuery)

7 Pembandingan berpasangan
Menampilkan detail data mahasiswa yang sama fakultas dan sama dosen wali dengan Susi ( ) dan Rudi ( ) select a.sid, a.name, a.login, a.birthday from students as a where (a.fid, a.lid) in and a.sid not in (' ',' ') (select b.fid, b.lid from students as b where b.sid in (' ',' '))

8 Pembandingan tidak berpasangan
Menampilkan detail data mahasiswa yang sama fakultas dengan Susi ( ) dan Rudi ( ) dan sama dosen wali dengan Susi ( ) dan Rudi ( ) select a.sid, a.name, a.login, a.birthday from students as a where a.fid in and a.lid in and a.sid not in (' ',' ') (select b.fid from students as b where b.sid in (' ',' ')) (select b.lid from students as b where b.sid in (' ',' '))

9 Penggunaan query dalam klausa FROM
Query bisa diletakkan di dalam klausa FROM untuk membentuk tabel temporer. Query semacam ini dikenal juga dengan istilah inline view, karena tidak membentuk object database. Berikut ini contoh penggunaan Query dalam klausa FROM. Menampilkan nama dosen wali (lid dan name) bersama dengan jumlah mahasiswa yang menjadi anak walinya select a.lid, a.name, b.jumlah from lecturer as a, as b where a.lid = b.lid (select c.lid, count(c.sid) as jumlah from students as c group by c.lid)

10 Ekspresi scalar subquery
Ekspresi scalar subquery adalah subquery yang mengembalikan hanya satu nilai kolom dari satu baris. Scalar subquery pada standart SQL-92 hanya terbatas pada : SELECT Statement (klausa FROM dan WHERE saja) Daftar VALUE dari statement INSERT Pada standart SQL-99, scalar subqueries dapat digunakan dalam : Kondisi dan ekspresi sebagai bagian dari perintah DECODE dan CASE. Semua klausa dari SELECT Statement kecuali GROUP BY.

11 Skalar subquery dalam ekspresi CASE
Berikut ini contoh penggunaan scalar subquery dalam ekspresi CASE Menampilkan sid dan name mahasiswa, ditambah kolom dengan nilai “CUKUP” jika usianya diatas 20 tahun dan “KURANG” jika dibawah atau sama dengan 20 tahun select a.sid, a.name, ( CASE WHEN a.lid = (select b.lid from lecturer as b where b.name like 'Eko%') THEN 'Pak Eko' ELSE 'Bukan Pak Eko' END ) as dosen_wali from students as a

12 Subquery dalam klausa ORDER BY
Berikut ini contoh penggunaan subquery dalam klausa ORDER BY Menampilkan sid dan name mahasiswa, ditambah kolom lid tapi urut terhadap nama dosen wali. select a.sid, a.name, a.lid from students as a order by (select b.name from lecturer as b where a.lid=b.lid )

13 Korelasi subquery Korelasi SubQuery digunakan untuk pemrosesan baris per baris. Tiap-tiap subquery dijalankan sekali untuk setiap baris dari outer query. Prosesnya sebagai berikut :

14 Korelasi subquery update
Korelasi Subquery juga dapat digunakan untuk meng-update baris pada satu table berdasarkan pada baris dari table yang lain, korelasi seperti itu dinamakan dengan Korelasi Update. Cara penulisan Korelasi Update: Lakukan denormalisasi tabel students dengan menambah kolom lecturer_name Isi kolom lecturer_name didapatkan dari tabel lecturer alter table students add column lecturer_name varchar(30) update students as a set lecturer_name = (select b.name from lecturer as b where b.lid=a.lid)

15 Korelasi subquery update

16 Korelasi subquery delete
Contoh: melakukan penghapusan data students yang dosen wali (lid) dari dosen dengan nama depan ‘Eko’ Karena foreign key yang digunakan adalah lid maka dilakukan subquery ke tabel lecturer delete from students where lid = (select b.lid from lecturer as b where b.name like 'Eko%')

17 Operator EXISTS dan NOT EXISTS
Operator EXISTS dan NOT EXIST digunakan untuk 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 data students yang mendapatkan nilai E. select a.sid, a.name from students as a where EXISTS (select 'X' from enrolled as b where b.grade = 'E' and b.sid=a.sid)

18 Operator EXISTS dan NOT EXISTS
Contoh: Menampilkan data dosen yang jumlah anak walinya > 2. select a.lid, a.name from lecturer as a where NOT EXISTS (select 'X' from students as b where a.lid=b.lid having count(b.sid) > 2)

19 Any Question ? To Be Continued … Materi 4


Download ppt "Sistem Manajemen Basis Data"

Presentasi serupa


Iklan oleh Google