Berikut perintah FULL JOIN yang akan menampilkan data pengarang yang nama kotanya sesuai dengan kota penerbit
SELECT KodePeng, NamaPeng, Kota FROM Pengarang p
FULL JOIN Penerbit t
ON p.KotaTinggal=t.Kota
Tabel 7-13 Hasil Relasi Full Join
KodePeng NamaPeng Kota
172-32-1176 Johnson White NULL 213-46-8915 Marjorie Green NULL 238-95-7766 Cheryl Carson Berkeley 267-41-2394 Michael O'Leary NULL 274-80-9391 Dean Straight NULL 341-22-1782 Meander Smith NULL 409-56-7008 Abraham Bennet Berkeley 427-17-2319 Ann Dull NULL 472-27-2349 Burt Gringlesby NULL 486-29-1786 Charlene Locksley NULL
NULL NULL Washington
NULL NULL Chicago
NULL NULL Boston
NULL NULL Paris
NULL NULL New York
NULL NULL Dallas
NULL NULL München
7.5 Subquery
Subquery adalah sebuah bentuk perintah SELECT yang mengembalikan nilai yang ada kepada perintah lain berupa perintah SELECT, INSERT, UPDATE dan DELETE atau dengan kata lain subquery adalah query dalam query.
terhadap perintah query tersebut. namun demikian, tergantung kepada data jika kalau ingin dibandingkan mana yang lebih baik antara subquery dengan JOIN ini.
Subquery dapat ditempatkan pada perintah SELECT setelah klausa Select, From, Where, Group BY dan Having. Umumnya perintah sub Query ini mengikuti format sebagai berikut:
WHERE ekspresi [NOT] IN (subquery)
WHERE ekspresi operator perbandingan [ANY | ALL] (subquery)
WHERE [NOT] EXISTS (subquery)
Untuk melakukan percobaan terhadap perintah sub Query ini akan disediakn dua buah tabel yaitu tabel Penerbit, tabel Pengarang dan tabel Buku
Tabel 7-14 Data Penerbit
KodePen NamaPen Kota
0736 New Moon Books Boston
0877 Binnet & Hardley Washington 1389 Algodata Infosistems Berkeley 1622 Five Lakes Publishing Chicago
1756 Ramona Publishers Dallas
9901 GGG&G München
9952 Scootney Books New York
9999 Lucerne Publishing Paris
Tabel 7-15 Data Buku
Kode JudulBuku Jenis KodePen
BU1032 The Busy Executive's Database Guide business 1389 BU1111 Cooking with Computers:
Surreptitious Balance Sheets business 1389 BU2075 You Can Combat Computer Stress! business 0736 BU7832 Straight Talk About Computers business 1389 MC2222 Silicon Valley Gastronomic Treats mod_cook 0877 MC3021 The Gourmet Microwave mod_cook 0877 MC3026 The Psychology of Computer
Cooking UNDECIDED 0877
PC1035 But Is It User Friendly? popular_comp 1389 PC8888 Secrets of Silicon Valley popular_comp 1389
Tabel 7-16 Data Pengarang
KodePeng NamaPeng KotaTinggal
172-32-1176 Johnson White Menlo Park 213-46-8915 Marjorie Green Oakland 238-95-7766 Cheryl Carson Berkeley 267-41-2394 Michael O'Leary San Jose 274-80-9391 Dean Straight Oakland 341-22-1782 Meander Smith Lawrence 409-56-7008 Abraham Bennet Berkeley 427-17-2319 Ann Dull Palo Alto 472-27-2349 Burt Gringlesby Covelo 486-29-1786 Charlene Locksley San Francisco
Operator IN
Subquery dengan menggunakan operator IN adalah akan me-list hasil dari subquery untuk dibandingkan dengan ekspresi where yang diberikan. Subquery akan dijalankan terlebih dahulu baru kemudian query pemanggilnya akan dijalankan.
Berikut contoh perintah Subquery untuk menampilkan nama penerbit untuk buku yang berjenis business dengan menggunakan operator IN
SELECT NamaPen FROM Penerbit WHERE kodePen IN (SELECT kodePen FROM Buku WHERE jenis='business')
Output yang dihasilkan dari perintah Query tersebut adalah:
Tabel 7-17 Hasil Query Operator IN
NamaPen
New Moon Books Algodata Infosistems
Berdasarkan pada perintah query diatas, pertama kali akan menjalankan query untuk buku dahulu sehingga akan menghasilkan nilai 1389, 1389, 0736, 1389. Kemudian akan menjalankan perintah query pada Penerbit dengan kondisi KodePen didasarkan pada hasil query pertama. Perintah query ini dapat diterjemahkan sbb:
SELECT NamaPen FROM Penerbit
WHERE kodePen IN (‘1389’, ‘1389’,’0736’, ‘1389’)
Subquery diatas pun seperti dijelaskan terdahulu bahwa dapat menggunakan perintah JOIN dengan bentuk sbb:
SELECT DISTINCT NamaPen FROM Penerbit p
INNER JOIN Buku b
ON p.kodePen=b.KodePen AND jenis='business'
Jika operator IN ditambahkan operator NOT maka akan menjadi NOT IN. hal ini akan memberikan nilai kebalikan dari hasil yang didapat dengan menggunakan perintah IN
SELECT NamaPen FROM Penerbit
WHERE kodePen NOT IN (SELECT kodePen FROM Buku
WHERE jenis='business')
Tabel 7-18 Hasil Query Operator Not IN
NamaPen Binnet & Hardley Five Lakes Publishing Ramona Publishers GGG&G
Scootney Books Lucerne Publishing
Operator EXISTS
Operator Exists ini akan melakukan pemeriksaan terhadap hasil subqery apakah menghasilkan baris-data atau tidak, jika subquery tersebut menghasilkan baris data maka akan mengembalikan nilai true dan sebaliknya jika tidak menghasikan data maka akan mengembalikan nilai false
Berikut contoh perintah Subquery untuk menampilkan nama penerbit untuk buku yang berjenis business dengan menggunakan operator EXISTS
SELECT NamaPen FROM Penerbit p WHERE EXISTS (SELECT * FROM Buku b
WHERE b.KodePen= p.KodePen AND jenis='business')
Output yang dihasilkan dari perintah Query tersebut adalah:
Tabel 7-19 Hasil Query Operator Exists
NamaPen
New Moon Books Algodata Infosistems
Jika operator EXISTS ditambahkan operator NOT maka akan menjadi NOT EXISTS. hal ini akan memberikan nilai kebalikan dari hasil yang didapat dengan menggunakan perintah EXISTS
SELECT NamaPen FROM Penerbit p WHERE NOT EXISTS (SELECT * FROM Buku b
WHERE b.KodePen= p.KodePen AND jenis='business')
Tabel 7-20 Hasil Query Operator Not Exists
NamaPen Binnet & Hardley Five Lakes Publishing Ramona Publishers GGG&G
Scootney Books Lucerne Publishing
Operator Komporasi
Subquery memungkinkan juga menggunakan operator komparasi yang terdiri dari =, < >, >, > =, <, ! >, ! <, or < =. Berbeda dengan operator sebelum penggunaaan operator ini subquery harus menghasilkan data tunggal yang menjadi parameter untuk query pemanggilnya.
Berikut contoh perintah Subquery untuk menampilkan nama penerbit untuk buku yang berjenis business dengan menggunakan operator komparasi = SELECT NamaPeng FROM Pengarang WHERE KotaTinggal = (SELECT Kota FROM Penerbit
WHERE namaPen='Algodata Infosistems') Output yang dihasilkan dari perintah Query tersebut adalah:
Tabel 7-21 Hasil Query Operator Komparasi
NamaPeng Cheryl Carson Abraham Bennet
Operator ANY dan ALL
Penggunaan operator ini dipadukan dengan operator relasi sehingga nanti akan terbentuk >ANY, =ANY , <> ANY, >ALL dan <>ALL
>ANY mengadung arti bahwa akan mengambil nilai lebih besarnya dari nilai terendah yang ada dalam list tersebut. contoh >ANY (1,2,3) maka nilai lebih besarnya adalah 1
>ALL mengandung arti bahwa akan mengambil nilai lebih besarnya dari nilai tertinggi yang ada dalam lsit tersebut. Contoh >ALL (1,2,3) maka nilai lebih besarnya adalah 3
=ANY pada dasarnya sama dengan fungsi operator IN yaitu akan menyamakan apa yang ada dala list sebagai hasil dari subquerynya. <>ANY tidak serta merta sama dengan NOT IN, hal ini berbeda karena <>ANY menghasilkan not = a or not = b , sementara NOT IN menghasilkan not = a and not = b. <>ALL pengertianya sama dengan NOT IN
Berikut contoh perintah Subquery untuk menampilkan nama penerbit untuk buku yang berjenis business dengan menggunakan operator <>ANY
SELECT NamaPeng FROM Pengarang
WHERE KotaTinggal <>ANY (SELECT Kota
FROM Penerbit)
Tabel 7-22 Hasil Query Operator ANY
NamaPeng Johnson White Marjorie Green Cheryl Carson Michael O'Leary Dean Straight Meander Smith Abraham Bennet Ann Dull Burt Gringlesby Charlene Locksley
Rangkuman
1. Structure Query Language (SQL) menyediakan banyak fungsi-fungsi yang siap digunakan oleh penggunaya, baik pungsi untuk melakukan pertungan, fungsi penangan string, fungsi penagan tanggal dan fungsi-fungsi untuk proses agregasi data
2. Fungsi agregasi data akan berhubungan dengan klausa GROUP BY untuk membuat kelompok data jika terdapat kolom yang tidak diagregasi akan ditampilkan sebagai hasil query
3. Klausa GROUP BY mempunyai parameter untuk mengseksi data menggunakan HAVING
4. Membuat hubungan antar tabel dapat dilakukan dengan perpaduan antara FROM dan WHERE pada perintah select.
5. Selain itu hubungan antar tabel dapat menggunakan perintah JOIN 6. Perintah JOIN terdiiri dari peritah :
a. Inner Join b. Outher Join
i. Left Join ii. Right Join iii. Full Join
7. INNER JOIN ini mensyaratkan data di kedua belah tabel singkon, Data yang tidak singkron tidak akan ditampilkan sebagai hasil query tersebut
8. Perintah LEFT JOIN ini akan menghasilkan seluruh baris data pada nama_tabel_1 (yang ada diseblah kiri) walaupun dalam relasi tidak singkron dengan nama_tabel_2 (disebelah kanan)
9. Perintah RIGHT JOIN ini akan menghasilkan seluruh baris data pada nama_tabel_2 (yang ada disebalah kanan) walaupun dalam relasi tidak singkron dengan nama_tabel_1 (disebelah kiri).
10. Perintah FULL JOIN ini akan menghasilkan seluruh baris data pada nama_tabel_1 (yang ada disebalah kiri) dan akan menampilkan seluruh baris nama_tabel_1 (disebelah kanan) walaupun ada tidak singkron diantara keduanya.
11. Subquery adalah sebuah bentuk perintah SELECT yang mengembalikan nilai yang ada kepada perintah lain berupa perintah SELECT, INSERT, UPDATE dan DELETE atau dengan kata lain subquery adalah query dalam query.
Umumnya perintah sub Query ini mengikuti format sebagai berikut: a. WHERE ekspresi [NOT] IN (subquery)
b. WHERE ekspresi operator perbandingan [ANY | ALL]
(subquery)
c. WHERE [NOT] EXISTS (subquery)
12. Subquery menggunakan operator IN, Not IN, Exists, Not Exists, Any, All dan operator relasi
13. Subquery dengan menggunakan operator IN adalah akan me-list hasil dari subquery untuk dibandingkan dengan ekspresi where yang diberikan.
14. Operator Exists ini akan melakukan pemeriksaan terhadap hasil subqery apakah menghasilkan baris-data atau tidak, jika subquery tersebut menghasilkan baris data maka akan mengembalikan nilai true dan sebaliknya jika tidak menghasikan data maka akan mengembalikan nilai false
15. Operator komparasi yang terdiri dari =, < >, >, > =, <, ! >, ! <, or < =. Berbeda dengan operator sebelum penggunaaan operator ini subquery harus menghasilkan data tunggal yang menjadi parameter untuk query pemanggilnya.
16. Penggunaan operator ini dipadukan dengan operator relasi sehingga nanti akan terbentuk >ANY, =ANY , <> ANY, >ALL dan <>ALL
Latihan
1. Jelaskan kegunaan dari masing-masing fungsi agregasi
2. Berikan contoh perintah query yang menggunakan GROUP BY untuk menghitung jumlah mahasiswa laki-laki atau perempuan per angkatan 3. Jelaskan dan berikan contoh untuk klausa HAVING
4. Jelaskan perbedaan dari INNER JOIN dan OUTER JOIN dan berikan contohnya
5. Untuk kasus-kasus seperti apakah Left Join dan Right Join ini akan digunakan
6. Jelaskan karateristik operator Exists yang ada dalam sebuah subquery 7. Jelaskan perbedaan antara operator IN dan ANY dalam sebah subquery
8. Dengan menggunakan struktur basidata yang sudah dibentuk pada tugas sebelumnya maka buat perintah-perintah SQL :
a. Menghitung jumlah karyawan berdasarkan golongan tertentu
b. Total gaji seluruh karyawan berdasarkan pada golongan yang ada pada tabel gaji
c. Menghitung kehadiran karyawan per bulan aktif d. Menampilkan golongan dan pangkat karyawan e. Menampilkan karyawan yang tidak hadir pada tanggal
Kuis Benar Salah
1. Fungsi-fungsi aggregation tidak dapt digunakan untuk kondisi pencarian dalam Where
2. Hasil dari perintah select dengan menggunakan fungsi fungsi aggregation akan mengembalikan hanya satu baris data saja
3. Merelasikan antar tabel hanya dapat dilakukan dengan perintah Inner Join saja
4. Pengertian penulisan Left Join sama dengan Left Outer Join
5. Perintah LEFT JOIN ini akan menghasilkan seluruh baris data pada tabel yang ada disebelah kiri walaupun dalam relasi tidak singkron dengan tabel disebelah kanan
6. Penulisan alias tabel hanya dapat dilakukan dengan menabahkan keyword AS
7. Join tabel hanya dapat dilakukan untuk tabel yang dapat dihubungkan salah satu dari kolom data dikedua table
8. Full join adalah sama dengan menampilkan seluruh isi data dari kedua sisi table
9. operator exists pada sub query hanya memeriksa keberadaan baris data pada sub query tersebut dengan mengembalikan nilai true jika ada dan false jika tidak ada.
Pilihan Ganda
Petunjuk: Pilihlah jawaban yang paling tepat!
1 Perhatikan penyataan berikut:
3. Fungsi agregasi menghasilkan 1 baris data saja
4. Kodisi filter untuk data pada agregasi tidak menggunaka Where tetapi Having
A. 1 dan 2 betul D. 1 salah 2 betul B. 1 dan 2 salah E. tidak ada jawaban C. 1 betul 2 salah
2 Perhatikan penyataan berikut:
1. Perintah Join tidak ada dalam struktur penulisan Select 2. Outer Join akan menampilkan data Null pada data yang
tidak ketemu di tabel pembandingnya A. 1 dan 2 betul D. 1 salah 2 betul B. 1 dan 2 salah E. tidak ada jawaban C. 1 betul 2 salah
3 Perhatikan penyataan berikut:
1. Fungsi agregasi menghasilkan 1 baris data saja
2. Kodisi filter untuk data pada agregasi tidak menggunaka Where tetapi Having
A. 1 dan 2 betul D. 1 salah 2 betul B. 1 dan 2 salah E. tidak ada jawaban C. 1 betul 2 salah
4 Pernyataan berikut ini :
Perintah ini akan menghasilkan seluruh baris data pada tabel yang ada disebelah kiri walaupun dalam relasi tidak singkron dengan tabel disebelah kanan
A. JOIN D. Full Join
B. Left Join E. tidak ada jawaban C. Right Join
5 Pernyataan berikut ini :
Subquery dengan menggunakan operator ________ akan me-list hasil dari subquery untuk dibandingkan dengan ekspresi where yang diberikan. Subquery akan dijalankan terlebih dahulu baru kemudian query pemanggilnya akan dijalankan.
A. operator IN D. operator any B. operator exists E. tidak ada jawaban C. operator not exists
6 Jika ada perintah SQL sbb:
SELECT Nim, Nama, NamaJur FROM Mahasiswa, Jurusan
WHERE _______________________ Perintah yang harus diberikan pada Where.. A. where mahasiswa.kodeJur =
jurusan.KodeJur D. kodeJur
B. kodeJur=KodeJur E. tidak ada jawaban C. m.kodeJur = j.KodeJur
Untuk soal no 7:
KodePeng NamaPeng Kota
172-32-1176 Johnson White NULL 213-46-8915 Marjorie Green NULL 238-95-7766 Cheryl Carson Berkeley 267-41-2394 Michael O'Leary NULL
7 Dengan menggunakan tabel diatas perintah subQuery yang dibuat adalah:
SELECT KodePeng, NamaPeng, Kota FROM Pengarang p
____________ Penerbit t ON p.KotaTinggal=t.Kota Perintah pada bagian kosong adalah
A. Inner Join D. Right Join B. Left Join E. full Join C. Join On
8 Jika ada kondisi operator ANY sbb: >ANY (1,2,3,4)
Yang dianggap nilai tersebarnya oleh perintah Any ini adalah:
A. 1 D. 4
B. 2 E. >4
C. 3
9 Jika ada kondisi where kode <>ALL maka dapat diganti dengan operator:
A. Not ANY D. ANY
B. NOT IN E. ALL
C. NOT ALL
10 Perintah SQL ini akan menimbulkan error
SELECT KodeJur, COUNT(Nim) as Jumlah FROM Mahasiswa Untuk memperbaikinya maka perlu ditambahkan
A. WHERE KodeJur D. ORDER BY KodeJur B. GROUP KodeJur E. salah semua
8 PENGENALAN ARSITEKTUR BASIS
DATA
Overview
Sistem database merupakan satu kesatuan antara DBMS dan database nya. DBMS merupakan paket software yang digunakan untuk mengatur akses data ke database. Bagaimana struktur DBMS di dalamnya dan arsitektur sistem database diimplementasikan, akan diterangkan lebih detail dalam bab ini.
Tujuan
Mahasiswa memahami DBMS beserta komponen-komponen yang membangunnya.
8.1 Pendahuluan
Sistem database merupakan satu kesatuan dari Database Management System (DBMS) dan database. DBMS adalah kumpulan dari program-program yang mengijinkan user untuk melakukan create, maintain, dan control terhadap semua kegiatan yang mengakses database.
Tujuan utamanya adalah untuk menyediakan sistem yang aman, nyaman, dan efisien untuk user dalam mengakses dan menyimpan informasi.