Selasa, 04 Mei 2010

Operasi - Operasi Dalam sistem Basis Data yg ekuivalen dengan perintah SQL

Kembali ingin mendokumentasikan tugas kuliah. :D

Saat mempelajari kuliah Sistem basis data saya mendapatkan tugas, cari perintah yg ekuivalen dengan perintah in,some,all,exists dan beberapa operasi himpunan seperti union, set intersection,set difference. ini memang bukan perintah yg umum seperti membuat tabel (create table nama_table), menghapus tabel (drop table nama_table).

berkat bantuan dari teman akhirnya tugas ini selesai,saya belum tahu apakah tulisan di bawah ini benar atau salah karena saya dan teman-teman belum sempat membahas tugas kuliah ini. dan jika ada kesalahan mohon di koreksi donk :D.

Perintah In

Fungsi lain yang mengikuti where adalah in dan not in. Fungsi in adalah untuk memberikan beberapa batasan data. Penggunaan in atau not in yaitu untuk melakukan filtering terhadap record yang dipilih. Jika data pada suatu kolom sesuai dengan daftar in atau not in maka record yang mengandung data tersebut ditampilkan.

Misalkan :


Tabel detail_transaksi (Idtransaksi,tgltransaksi, idbarang,qty,hargasatuan,totalbayar)


Tabel transaksi (idpelanggan,namacabang,idtransaksi,tanggaltransaksi,totalbayar)


Perintah sql :

Select idtransaksi

From detail_transaksi

Where totalbayar in (15000, 20000)

Query di atas akan menampilkan idtransaksi dari tabel detail_transaksi yang

mempunyai totalbayar 15000 atau 20000

Select idpelanggan

From transaksi

Where namacabang in (“Gading”, “Merak”, “Sinar Mas”)

Query di atas akan menampilkan idpelanggan dari tabel transaksi yang


Melakukan transaksi di cabang Gading, Merak, atau Sinar Mas



Perintah Some dan All

Perintah Some dan All digunakan untuk membandingkan isi field dengan isi field table lain sebagai table pembanding. Bedanya Some membandingkan salah satu record pada table lookup sedangkan All membandingkan semua record pada table lookup.

Misalkan :

Tabel detail_transaksi (Idtransaksi,tgltransaksi, idbarang,qty,hargasatuan,totalbayar)

Perintah Sql :

select idtransaksi

from detail_transaksi

where totalbayar > some(select totalbayar

from detail_transaksi

where totalbayar >= 20000)

Penjelasan :

Perintah select totalbayar

from detail_transaksi

where totalbayar >= 20000

menghasilkan record totalbayar dari detail transaksi yang bernilai lebih dari sama dengan 20000. Kemudian perintah > some di dalam parent query berfungsi

membandingkan nilai totalbayar dari detail transaksi. Jika nilai tersebut lebih besar sama dengan minimal satu record hasil dari subquery, maka nilai tersebut terpilih.

Perintah Sql :

select idtransaksi

from detail_transaksi

where totalbayar < all (select totalbayar

from detail_transaksi

where totalbayar >= 20000)

Penjelasan :

Perbedaan antara some dan all dapat dilihat dengan membandingkan query

sebelumnya dengan query di atas. Jika some, nilai akan bernilai benar jika memenuhi syarat (dalam hal ini >) minimal satu record hasil subquery. Namun untuk all, akan bernilai benar jika syarat (dalam hal ini < ) terpenuhi pada semua record hasil subquery.

Perintah EXISTS Dan NOT EXISTS

Digunakan untuk melakukan pengecekan apakah hasil dari suatu ‘correlated nested query’ berisi tuple atau tidak.

EXISTS (Q) : Memberikan nilai return True, jika dalam hasil query Q minimal terdiri dari satu tuple

NOT EXISTS (Q) : Memberikan nilaai return TRUE, jika tak satupun tuple yang dihasilkan dalam hasil query Q

Misalkan :

Tabel Employee (Fname, Minit, Lname, SSN, BDate, Address, Sex, Salary, SuperSSN, DNo)

Tabel Dependent (ESSN, name, relation)

Tabel Departement(DeptNumber,DeptName,Noofemply,Totalsalary,MgrSSN)

Retrieve nama-nama employee yang tidak mempunyai dependent

SELECT Fname, Lname

FROM Employee

WHERE Not Exists ( Select *

From Dependent

Where SSN = ESSN

)

Dapatkan list nama-nama manager yang paling tidak mempunyai satu dependent



SELECT Fname, Lname

FROM Employee

WHERE Exists ( SELECT *

FROM Dependent

WHERE SSN = ESSN

)

And

Exists ( SELECT *

FROM Department

Where SSN = MgrSSN

)

OPERASI-OPERASI SET DALAM SQL :





  • UNION (Operasi Union)

  • INTERSECT (Operasi Intersection)

  • MINUS (Operasi Set Difference)


Relasi yang dihasilkan oleh ketiga operasi ini berupa set of tuple

Oleh karena ketiga operasi set diatas hanya boleh dikenakan terhadap relasi-relasi yang union_compatible, maka kedua relasi yang dikenakan operasi harus :

  • Mempunyai attribute yang sama

  • Mempunyai urutan attribute yang sama


Contoh operasi tersebut dalam Sql :


Misal ada tabel :


Deposit(branch-name,account-number,customer-name,balance)

Borrow(branch-name,loan-number,customer-name,amount)

UNION (Operasi Union)

(select distinct customer-name

from deposit

where branch-name = “Perryridge”)

union

(select distinct customer-name

from borrow

where branch-name = “Perryridge”)

Query diatas menampilkan semua nama customer-name yang mempunyai pinjaman, simpanan,atau keduanya yang ada di cabang Perryridge.

INTERSECT (Operasi Set Intersection)

(select distinct customer-name

from deposit

where branch-name = “Perryridge”)

intersect

(select distinct customer-name

from borrow

where branch-name = “Perryridge”)

Query diatas menampilkan nama-nama customer-name yang mempunyai pinjaman dan simpanan yang ada di cabang Perryridge.

MINUS (Operasi Set Difference)

(select distinct customer-name

from deposit

where branch-name = “Perryridge”)

minus

(select distinct customer-name

from borrow

where branch-name = “Perryridge”)

Query diatas menampilkan nama-nama customer-name dari cabang Perryridge yang hanya mempunyai simpanan saja.

1 komentar:

  1. yang pentingkan berdo'a dan berusaha untuk berhasil jadi anak yang berguna bagi nusa dan bangsa. ada pepatah lama mengatakan : Anda Pintar, Saya juga pintar, anda ......, saya juga sama ......, anda nyontek, saya juga nyontek. Sama-sama merasakan nyontek. Khan adil. jangan marah. Nanti cepat tua kalau marah-marah teyus eh terus. hehehe...hahaha....
    dari : Bro yang ingin berhasil sama seperti kamu.

    BalasHapus