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 InFungsi 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 idtransaksiFrom detail_transaksiWhere totalbayar in (15000, 20000)Query di atas akan menampilkan idtransaksi dari tabel detail_transaksi yangmempunyai totalbayar 15000 atau 20000Select idpelangganFrom transaksiWhere 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 AllPerintah 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 idtransaksifrom detail_transaksiwhere totalbayar > some(select totalbayarfrom detail_transaksiwhere totalbayar >= 20000)Penjelasan :Perintah select totalbayarfrom detail_transaksiwhere totalbayar >= 20000menghasilkan record totalbayar dari detail transaksi yang bernilai lebih dari sama dengan 20000. Kemudian perintah > some di dalam parent query berfungsimembandingkan 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 idtransaksifrom detail_transaksiwhere totalbayar < all (select totalbayarfrom detail_transaksiwhere totalbayar >= 20000)Penjelasan :Perbedaan antara some dan all dapat dilihat dengan membandingkan querysebelumnya 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 EXISTSDigunakan 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 tupleNOT EXISTS (Q) : Memberikan nilaai return TRUE, jika tak satupun tuple yang dihasilkan dalam hasil query QMisalkan :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 dependentSELECT Fname, LnameFROM EmployeeWHERE Not Exists ( Select * From Dependent Where SSN = ESSN )Dapatkan list nama-nama manager yang paling tidak mempunyai satu dependent
SELECT Fname, LnameFROM EmployeeWHERE 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 tupleOleh 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-namefrom depositwhere branch-name = “Perryridge”)union(select distinct customer-namefrom borrowwhere 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-namefrom depositwhere branch-name = “Perryridge”)intersect(select distinct customer-namefrom borrowwhere 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-namefrom depositwhere branch-name = “Perryridge”)minus(select distinct customer-namefrom borrowwhere branch-name = “Perryridge”)Query diatas menampilkan nama-nama customer-name dari cabang Perryridge yang hanya mempunyai simpanan saja.