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.
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....
BalasHapusdari : Bro yang ingin berhasil sama seperti kamu.