Bab V Bahasa Query (Query Language)
BAB
5 Tujuan Instruksional Umum Mahasiswa dapat mengerti Bahasa Query (Query Language).
Tujuan Instruksional Khusus Mahasiswa dapat mengerti tentang aljabar relational. Mahasiswa dapat mengerti operator dasar dan operator tambahan
BAHASA QUERY (QUERY LANGUAGE)
uery Language adalah language yang digunakan oleh user untuk mendapatkan informasi dari basis data. Query Language umumnya berupa high–level language, yang levelnya lebih tinggi dari programming language standard.
Q
Query Language terbagi menjadi 2 kategori, yaitu :
1. PROCEDURAL LANGUAGE User memerintah system/DBMS untuk melaksanakan urutan–urutan operasi/prosedur untuk mendapatkan informasi yang diinginkan.
2. NON–PROCEDURAL LANGUAGE User tidak menggunakan prosedur/urutan–urutan operasi tertentu untuk mendapatkan informasi yang diinginkan.
5.1 Aljabar Relational (Relational Algebra)
Aljabar relational adalah kumpulan operasi terhadap relasi. Setiap operasi menggunakan satu atau lebih untuk menghasilkan satu relasi yang baru. Termasuk bahasa queri dengan prosedur yang menyediakan sejumlah operator untuk memanipulasi data pada seluruh relasi. Aljabar relasi terdiri dari suatu himpunan operasi yang menggunakan satu atau dua relasi sebagai input dan menghasilkan suatu relasi baru sebagai hasilnya. Operator Dasar :
1. Operasi Seleksi / Select Operation
2. Operasi Proyeksi / Project Operation
3. Cartesian Product Operation
4. Union Operation
Relasi/tabel untuk contoh penggunaan bahasa query : Nasabah
Saving Saving
Catatan : F : Formula/predicate yang dikenakan terhadap tuple–tuple R : Relation yang dikenakan operasi Selection
F (R)
Operasi selection dituliskan dengan bentuk umum sebagai berikut :
(Lower–Case Omega) Operasi selection menyeleksi tuple–tuple di sebuah relation, yaitu tuple–tuple yang memenuhi predicate/syarat yang sudah ditentukan sebelumnya.1. Operasi Selection / Select Operational Operasi ini menggunakan simbol
987.654 876.543 765.432 654.321 543.210 432.109 321.098
12345 12345 23456 34567 45678 45678 56789
R1 No_KTP No_Rek
8.000.000 3.500.000 6.500.000 4.750.000 1.250.000 2.750.000 9.500.000
Checking Saving
Checking Checking Checking
Nama No_KTP Alamat Kota
987.654 876.543 765.432 654.321 543.210 432.109 321.098
No_Rek Status Saldo
Rekening
Jakarta Semarang
Bandung Semarang Semarang
Jl. Tembaga No. 50 Jl. Perunggu No. 67
Jl. Intan No. 90 Jl. Mutiara No. 45 Jl. Permata No. 12
Ardian 12345 23456 34567 45678 56789
Setiawan Trijaya
Santi Anasari
5.2 Operator Dasar :
nilai atribut tabel. Kondisi dengan operator Boolean juga dapat dihubungkan dengan operator AND ( ^) dan OR (v). Contoh :
(REKENING)
Catatan : (phi)
(R)
a1, a2, …, an
Operasi proyeksi dituliskan dengan bentuk umum sebagai berikut :
Operator projection beroperasi di sebuah relation, yaitu membentuk relation baru dengan mengcopy atribut–atribut dan domain–domain dari relation tersebut berdasarkan argument–argument pada operator tersebut.
(phi)
2. Operasi Proyeksi / Project Operation Operasi ini menggunakan simbol
3.500.000 4.750.000 1.250.000 2.750.000 8.500.000
Checking Saving
Checking Saving Saving
876.543 654.321 543.210 432.109 321.098
No_Rek Status Saldo
Berarti : mencari semua record dari table REKENING yang saldonya ≤ 4.000.000 atau status rekeningnya adalah ‘Saving’. Tabel hasil seleksi :
Saldo ≤ 4.000.000 v Status =”Saving”
Kota = “Semarang”
4.750.000 9.500.000
Saving Saving
654.321 321.098
No_Rek Status Saldo
Berarti : mencari semua record dari table REKENING yang saldonya ≥ 4.000.000 dan status rekeningnya adalah ‘Saving’. Tabel hasil seleksi :
(REKENING)
Saldo ≥ 4.000.000 ^ Status =”Saving”
Jl. Perunggu No. 67 Semarang Semarang Semarang
Jl. Mutiara No. 45 Jl. Permata No. 12
Ardian 23456 34567 56789
Anasari Setiawan
Nama No_KTP Alamat Kota
Berarti : mencari semua record dari table NASABAH yang kotanya di ‘Semarang’. Tabel hasil seleksi :
(NASABAH)
: simbol untuk operasi projection R : relatioan yang dikenakan operasi project Contoh :
( Saldo ≤ 3.500.000 ^ Status=”Checking”(REKENING))
dan R
1
Dimana R
2 Catatan :
1 X R
R
Operasi perkalian kartesian dituliskan dengan bentuk umum sebagai berikut :
Operator ini merupakan operator untuk binary operation, yaitu operator yang beroperasi di dua relation.
3. Operasi Perkalian Kartesian / Cartesian–Product Operation Operator ini menggunakan simbol (X).
3.500.000 2.750.000
876.543 432.109
No_Rek Saldo
Berarti : menampilkan semua record dari file REKENING dengan hanya memilih atribut No_Rek dan Saldo saja. Dengan ketentuan yang saldonya ≤ 3.500.000 dan status rekeningya “Checking”. Table hasil proyeksi :
No_Rek, Saldo
Nama, No_KTP
Ardian 23456 34567 56789
Anasari Setiawan
Nama No_KTP
Berarti : menampilkan Nama dan No_KTP semua record yang ada di table NASABAH yang tinggalnya di Kota =’Semarang. Table hasil proyeksi :
( Kota=”Semarang”(NASABAH))
Nama, No_KTP
12345 23456 34567 45678 56789
Setiawan Trijaya Ardian
Santi Anasari
Nama No_KTP
Berarti : menampilkan semua record dari file NASABAH dengan hanya memilih atribut nama dan No_KTP saja. Kolom/atribut Alamat dan Kota tidak ditampilkan. Tabel hasil proyeksi :
(NASABAH)
2 adalah RELATION. di R sehingga jika R terdiri dari n–tupke dan R terdiri dari m–tuple, maka :
2
1
2 R = R
X R , akan terdiri dari mn tuple
1
2 Contoh :
Jika diketahui dua tabel seperti berikut ini : A B
X Y Z
X W
a b c a t d e f d v g h i g u
Maka operasi A X B akan menghasilkan 3 x 3 = 9 tuple sehingga didapat tabel sebagai berikut :
A X Y Z B X W
a b c a t a b c d v a b c g u d e f a t d e f d v d e f g u g h i a t g h i d v g h i g u Tampilkan No_KTP NASABAH yang memiliki saldo diatas 3.500.000.
Jawab : Table hasil perkalian kartesian yaitu R
X REKENING mempunyai 7 x 7
1 baris/record.
R
X REKENING
1 No_KTP R
1. No_Rek REKENING.No_Rek Status Saldo
12345 987.654 987.654 Checking 8.000.000 12345 987.654 876.543 Checking 3.500.000 12345 987.654 765.432 Checking 6.500.000 12345 987.654 654.321 Saving 4.750.000 12345 987.654 543.210 Saving 1.250.000 12345 987.654 432.109 Checking 2.750.000 12345 987.654 321.098 Saving 9.500.000 12345 876.543 987.654 Checking 8.000.000 12345 876.543 876.543 Checking 3.500.000 12345 876.543 765.432 Checking 6.500.000 12345 876.543 654.321 Saving 4.750.000 12345 876.543 543.210 Saving 1.250.000
12345 876.543 321.098 Saving 9.500.000 23456 23456 23456 23456 23456 23456 23456
987.654 876.543 765.432 654.321 543.210 432.109 321.098
987.654 876.543 765.432 654.321 543.210 432.109 321.098
Checking Checking Checking
Saving Saving
Checking Saving
8.000.000 3.500.000 6.500.000 4.750.000 1.250.000 2.750.000
9.500.000 56789 56789 56789 56789 56789 56789 56789
321.098 321.098 321.098 321.098 321.098 321.098 321.098
Checking Checking Checking
9.500.000 45678 45678 45678 45678 45678 45678 45678
Saving Saving
Checking Saving
8.000.000 3.500.000 6.500.000 4.750.000 1.250.000 2.750.000
9.500.000 Sehingga :
No_KTP
( Saldo 3.500.000 REKENING.No_Rek = R1.No_Rek(R1 X REKENING))
Menghasilkan tabel baru yaitu :
No_KTP
432.109 432.109 432.109 432.109 432.109 432.109 432.109
8.000.000 3.500.000 6.500.000 4.750.000 1.250.000 2.750.000
765.432 765.432 765.432 765.432 765.432 765.432 765.432
987.654 876.543 765.432 654.321 543.210 432.109 321.098
987.654 876.543 765.432 654.321 543.210 432.109 321.098
Checking Checking Checking
Saving Saving
Checking Saving
8.000.000 3.500.000 6.500.000 4.750.000 1.250.000 2.750.000
9.500.000 34567 34567 34567 34567 34567 34567 34567
654.321 654.321 654.321 654.321 654.321 654.321 654.321
Checking Checking Checking
Checking Saving
Saving Saving
Checking Saving
8.000.000 3.500.000 6.500.000 4.750.000 1.250.000 2.750.000
9.500.000 45678 45678 45678 45678 45678 45678 45678
543.210 543.210 543.210 543.210 543.210 543.210 543.210
987.654 876.543 765.432 654.321 543.210 432.109 321.098
Checking Checking Checking
Saving Saving
12345
56789
4. Union Operation Operator ini menggunakan simbol ( )
Operator union juga digunakan untuk operasi binary. Operator ini akan membentuk relation baru dengan tuple–tuple yang terdapat di relation R , R atau
1
2 tuple–tuple yang terdapat dikedua relation tersebut.
Operasi union dituliskan dengan bentuk umum sebagai berikut :
R = R
1 R
2 Catatan :
Dimana R, R
1 dan R 2 adalah table/relasi
Contoh : Cari/tampilkan No_KTP dan Saldo yang statusnya ‘Saving’ atau ‘Checking’ Jawab : Langkah pertama cari product cartesius R
1 X REKENING (sudah terjawab di
halaman sebelumnya) Cari/tampilkan No_KTP dan Saldo yang statusnya “Saving”
( Status =”Saving” REKENING.No_Rek = R1.No_Rek(R1 X REKENING))
No_KTP, Saldo
Hasil Tabelnya :
No_KTP Saldo
34567 4.750.000 45678 1.250.000 56789 9.500.000
Cari/tampilkan No_KTP dan Saldo yang statusnya “Checking”
( Status =”Checking” REKENING.No_Rek = R1.No_Rek(R1 X REKENING))
No_KTP, Saldo
Hasil Tabelnya :
No_KTP Saldo
12345 8.000.000 12345 3.500.000 23456 6.500.000 45678 2.750.000
Lakukan Union Operation pada kedua table baru di atas :
( Status =”Saving” REKENING.No_Rek = R1.No_Rek(R1 X REKENING)) No_KTP, Saldo
( Status =”Checking” REKENING.No_Rek = R1.No_Rek(R1 X REKENING)) No_KTP, Saldo
Hasil Tabelnya :
34567 4.750.000 45678 1.250.000 56789 9.500.000 12345 8.000.000 12345 3.500.000 23456 6.500.000 45678 2.750.000
5. Set–Difference Operation
- – Operator ini menggunakan simbol ( )
Operator ini juga merupakan operator operasi binary, merupakan operator yang beroperasi pada dua table/relasi.
Operasi set–difference dituliskan dengan bentuk umum sebagai berikut :
R = R – R
1
2 Catatan :
Dimana R, R
1 , dan R 2 adalah table/relasi
Operasi set difference akan membentuk table/relasi baru dengan record–record yang terdapat pada relasi R dan tidak terdapat relasi R .
1
2 Contoh :
Cari/tampilkan No_KTP seluruh Nasabah yang mempunyai rekening Saving saja (yang hanya mempunyai rekening Saving saja). Jawab : Langkah pertama cari product R
1 X REKENING (sudah terjawab di halaman
sebelumnya) Cari/tampilkan No_KTP yang statusnya “Saving”
( Status =”Saving” REKENING.No_Rek = R1.No_Rek(R1 X REKENING))
Hasil Tabelnya :
No_KTP
No_KTP
34567 45678 56789
Cari/tampilkan No_KTP yang statusnya “Checking”
( Status =”Checking” REKENING.No_Rek = R1.No_Rek(R1 X REKENING))
.
No_KTP Hasil Tabelnya :
No_KTP
12345 23456 45678
Lakukan Set Difference Operatioan pada kedua table baru diatas :
( Status =”Saving” REKENING.No_Rek = R1.No_Rek(R1 X REKENING))
No_KTP
– ( Status =”Checking” REKENING.No_Rek = R1.No_Rek(R1 X REKENING))
No_KTP Hasil Tabelnya :
No_KTP
34567 56789
5.3 Operator Tambahan :
1. Set Intersection
Operator ini menggunakan simbol ( ) Merupakan binary operation untuk membentuk sebuah relation baru dengan tuple– tuple yang berasal dari kedua relation yang dihubungkan. Misal : R adalah relation dengan elemen E , E , …, E1
1 2 n
R adalah relation dengan elemen T T , …, T
2 1, 2 n
Operasi intersection R = R
1 R 2 akan menghasilkan relation R dengan elemen– elemen yang terdapat di R , juga terdapat di R .
1
2 Catatan :
Operator intersection tidak termasuk operator dasar karena operator tersebut dapat dituliskan dengan menggunakan operatior dasar SET DIFFERENCE, sebagai berikut :
R
1 R 2 = R 1 – (R 1 – R 2 )
Jadi, intersection tidak memberikan operasi yang baru. Keuntungannya, penulisan R
1 R 2 lebih sederhana dibandingkan menuliskan R 1 – (R 1 – R 2 )
2. Theta Join Operator ini menggunakan simbol ( )
Merupakan operator yang menggabungkan operasi Cartesian Product dengan operasi Selection. Dimana : adalah simbol join adalah simbol sebagai pengganti predicate di selection
R R = (R
X R )
2
1
2
1
3. Natural Join Operator ini menggunakan simbol ( ) Merupakan operator yang melakukan operasi penggabungan terhadap tuple–tuple dari relation–relation yang dioperasikan.
Misal, R dan R adalah relation yang mempunyai beberapa atribut/kolom yang
1
2
sama. Hasil operasi natural join adalah operasi cartesian product dari tuple–tuple di relation R & R yang atribut dan valuenya sama yang dikenakan operasi tersebut.
1
2 Natural join dapat digambarkan sebagai berikut :
R R Relation R
1
2
1 Relation R
2 A B C A B C A B C D
a b c b c d a b c d d b c b c e a b c e b b f a d b d b c d c a d a d b d b c e e a d b
4. Division Operator ini menggunakan simbol ( )
Merupakan operasi pembagian atas tuple–tuple dari dua relation misal R sebuah
1
relation dengan arity R dan R sebuah relation dengan arity S, dapat dituliskan
2
dengan operator sebagai berikut :
(R) x S) – R)
r-s r-s
R S = (R) –
Disederhanakan menjadi :
(R) x S) – R)
R S = ((
r-s r-s