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 , …, E

  1

  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

   