Saturday, April 11, 2015

SQLPlus

-- hapus semua table dari database
select 'drop table ' || tname || ' cascade constraint purge;' from tab;
select 'drop view ' || tname || ';' from tab;

-- cara masukkan xxx.sql (selain copy paste)
ketik @ di sqlPlus, kemudian drag file xxx.sql ke sqlPlus lalu enter

-- tampilkan kodetp, nama cust, nama paket dari TRPAKET, PAKET, CUSTOMER dengan VIEW
create view detailPaket as
select tr.kodetp, c.nama as "CUSTOMER", p.nama as "PAKET"
from trpaket tr, customer c, paket p
where tr.kodecust=c.kodecust and tr.kodepk=p.kodepk;

select * from detailpaket;

-- tampilkan kodetp, nama customer, dan nama paket
select dp.notapjm, pkt.customer
from dpjmcd dp, detailPaket pkt
where dp.kodetp=pkt.kodetp;

-- MINUS :: customer siapa saja yang tidak pernah meminjam paket cd
select kodecust, nama
from customer
MINUS
select tr.kodecust, c.nama
from customer c, trpaket tr
where tr.kodecust=c.kodecust;

-- UNION :: tampilkan semua kodecust yg pinjam paket dan pinjam cd --> data kembar dihapus
select kodecust
from trpaket
UNION
select kodecust
from hpjmcd;

-- UNION ALL :: tampilkan semua kodecust yg pinjam paket dan pinjam cd --> data kembar tidak dihapus
select kodecust
from trpaket
UNION ALL
select kodecust
from hpjmcd;

-- CASE :: tampilkan jika jumlah di tabel Paket ... brarti banyak/sedikit/sedang
select kodepk, nama, (case
when jumlah<30 then 'SEDIKIT'
when jumlah>=30 and jumlah<80 then 'SEDANG'
else 'BANYAK'
end) as jumlah,
harga
from paket;

-- SUBQUERY :: kodecd & judulcd yang punya harga sewa paling mahal
select kodecd, judulcd
from cd
where hrgsewa = (select max(hrgsewa)
from cd);

-- NOT IN :: tampilkan supplier yang tidak pernah dibeli cd-nya
select sup.nama
from supplier sup
where sup.kodesup NOT IN ( select kodesup
from hbeli );

-- IN :: tampilkan supplier yang pernah dibeli cd-nya
select sup.nama
from supplier sup
where sup.kodesup IN ( select kodesup
from hbeli );

-- tampilkan nama customer yang pernah meminjam saja
select c.nama
from customer c, hpjmcd hp
where c.kodecust=hp.kodecust;

-- LEFT JOIN :: tampilkan semua customer yang pernah & tidak pernah pinjam beserta nota pinjamnya
select c.nama, hp.notapjm
from customer c
LEFT JOIN hpjmcd hp
ON c.kodecust=hp.kodecust;

-- tambahkan "-" jika customer tidak pernah pinjam pakai NVL
select c.nama, NVL(hp.notapjm, '-')
from customer c
LEFT JOIN hpjmcd hp
ON c.kodecust=hp.kodecust;

Labels: , ,