Memaksimalkan Waktu untuk Mendapatkan Kampus Impian melalui SBMPTN (1).pptx
KAMUS_PLSQL
1. Kamus Plsql
Min ()
Untuk mencari nilai minimum
Selectkode_barang,min(jumlah_pasok) asminimumFrompasok
Group by kode_barang
Max()
Untuk mencari nilai maximum
Select kode_barang, min(jumlah_pasok) as maximum From pasok
Group by kode_barang
Avg()
Untuk mencari nilai rata2x
Select kode_barang, avg(jumlah_pasok) as rata-rata From pasok
Group by kode_barang
Sum()
Untuk mencari nilai total atau summary
Select kode_barang, sum(jumlah_pasok) as sumary From pasok
Group by kode_barang
Count()
Untuk mencari nilai cacah atau banyaknya data
Select kode_barang, Count(jumlah_pasok) as cacah From pasok
Group by kode_barang
Having
Pemilihanatauseleksidatadenganmengunakankatahavinguntukfungsi 1s/d5
Select kode_suplier, count(jumlah_pasok) as cacah From pasok
Group by kode_suplier
Having count (*)=3;
-----------------------------
Tampilkan suplier yang memasok barang sebanyak 3 kali
-----------------------------
Select penabung, nama_nasabah , avg(saldo)
From penabung, rekening, nasabah
Where penabung.no_rekening = rekening.no_rekening and
Penabung.nama_nasabah = nasabah.nama_nasabah and
Kota_nasabah = ‘ bandung’
Group by penabung, nama_nasabah
Having count(distinct penabung.no..rekening) >= 4
----------------------------------------
Temukan rata-raa saldo untuk setiap nasabah yang tinggal di bandung dan memiliki sedikitnya 4 nomer
rekening.
Between
Untuk mencari nilai berdasarkanrange
Select* frompasokwhere JUMLAH_PASOKbetween5and12
Orderby JUMLAH PASOK;
Select* frompasokwhere created_date betweensysdateandsysdate +1
2. In
Untuk melakukanpengecekansuatunilai ataubeberapanilai.
Select* frompasokwhere JUMLAH_PASOKin(2, 8 , 12) order byJUMLAH_PASOK;
-------------
Tampilkanisi dari tabel pasok yangJUMLAH PASOKnyaberisi2,8 dan12
Like/Not Like
Membandingkandatadenganpolatertentu.Karakter(%)untukmembandingkanstring
Select* fromcustomerwhere ALAMAT_CUSTOMER like ‘%CIM%’;
------------------
Tampilkancustomeryangalamat customernyamempunyaikataCIM;
Distinct
Untuk menyaring data yang duplikat semua kolom
Selectdistinct no_nasabah, nama_nasabah,alamat_nasabah,no_tlp frompeminjam;
---semuakolomno_nasabah, nama_nasabah,alamat_nasabah,no_tlptidakbolehduplikat
Group by
Untuk menyaring data yang duplikat berdasarkan salah satu nilai data yang tidak boleh duplikat
Selectno_nasabah, nama_nasabah,alamat_nasabah,no_tlp frompeminjam
Group by no_nasabah
----- no_nasabahtidakbolehduplikat -------------
Order by
Untuk mengurutkan data berdasarkan kolom tertentu
Selectno_nasabah, nama_nasabah,alamat_nasabah,no_tlp frompeminjam
Group by no_nasabah
Orderby no_nasabahasc;
----- mengurutkanno_nasabahdari ataske bawah,a-z/1-n +1-------------
Selectno_nasabah, nama_nasabah,alamat_nasabah,no_tlp frompeminjam
Group by no_nasabah
Orderby no_nasabahdec;
----- mengurutkanno_nasabahdari bawahke atas,a-z/1-n +1-------------
Query bersarang
3. Cara Membuat Prosedur
Prosedur merupakan subprogram PL/SQL yang berdiri sendiri. Kalau kita punya pekerjaan rutin dan
command-commandnya pun itu-itu saja, kita bisa menyimpan comand-command tersebut dan
memanggilnya kapan saja kita mau. Itulah filosofi dari prosedur.
Caranya sama persis dengan membuat blok PL/SQL biasa, cuma ganti :
DECLARE Menjadi :
create or replace procedure NAMA_PROSEDUR as
User yang membuat prosedur harus punya privilege “create procedure”. Contoh, memberi privilege kepada
user ROHMAD agar bisa membuat prosedur
SQL> conn SYSTEM
SQL> grant create procedure to roh;
User yang tidak punya privilege “create procedure” , kalau membuat prosedur akan mendapat error berikut:
ORA-01031: insufficient privileges
Contoh
Sebagai contoh, saya punya tabel MYTAB
create table MYTAB (SYS_CREATION_DATE date, RCG_ID number);
Berikut ini Block PL/SQL untuk mengosongkan dan mengisi ulang table MYTAB. Prosesnya dalah sbb:
1. Truncate table mytab
2. Insert ke tabel mytab, mulai dari rcg_id minimal (10) sampai rcg_id maksimal (100)
DECLARE
V_rcg_min NUMBER;
v_rcg_max number;
V_iterasi NUMBER;
v_date DATE;
BEGIN
V_rcg_min := 10;
v_rcg_max := 100;
V_iterasi := V_rcg_min;
V_DATE := sysdate;
EXECUTE IMMEDIATE 'truncate table MYTAB';
WHILE V_iterasi <= v_rcg_max LOOP
insert into MYTAB values (v_date, V_iterasi);
commit;
v_date := v_date+1;
V_iterasi:= V_iterasi+1;
END LOOP;
END;
/
Selanjutnya, mari kita coba membuat prosedur berdasarkan block PL/SQL di atas. Ingat kuncinya, ganti
kata “DECLARE” menjadi “create or replace procedure NAMA_PROSEDUR as”. Di contoh ini prosedurnya saya
beri nama PROC_REFRESH_MYTAB:
create or replace procedure PROC_REFRESH_MYTAB as
V_rcg_min NUMBER;
v_rcg_max number;
4. V_iterasi NUMBER;
v_date DATE;
BEGIN
V_rcg_min := 10;
v_rcg_max := 100;
V_iterasi := V_rcg_min;
V_DATE := sysdate;
EXECUTE IMMEDIATE 'truncate table MYTAB';
WHILE V_iterasi <= v_rcg_max LOOP
insert into MYTAB values (v_date, V_iterasi);
commit;
v_date := v_date+1;
V_iterasi:= V_iterasi+1;
END LOOP;
END;
/
Untuk menjalankan prosedur, jalankan:
1. Di SQLPlus
SQL> exec PROC_REFRESH_MYTAB; atau
SQL> execute PROC_REFRESH_MYTAB;
2. Di block PL/SQL, tulis saja nama prosedur tersebut
DECLARE
BEGIN
PROC_REFRESH_MYTAB;
END;
/
PL/SQL: Memasukkan Variabel dalam Prosedur
Sebagaimana prosedur dalam bahasa pemrograman lain, kitapun bisa memasukkan variabel ke dalam
prosedur. Lihat contoh prosedur PROC_REFRESH_MYTAB yang lalu
create or replace procedure PROC_REFRESH_MYTAB as
V_rcg_min NUMBER;
v_rcg_max number;
V_iterasi NUMBER;
v_date DATE;
BEGIN
V_rcg_min := 10;
v_rcg_max := 100;
V_iterasi := V_rcg_min;
V_DATE := sysdate;
EXECUTE IMMEDIATE 'truncate table MYTAB';
WHILE V_iterasi <= v_rcg_max LOOP
insert into MYTAB values (v_date, V_iterasi);
commit;
v_date := v_date+1;
V_iterasi:= V_iterasi+1;
END LOOP;
END;
/
Dalam contoh di atas, nilai v_rcg_min dan v_rcg_max dimasukkan dalam hard code. Kalau kita mau
mengubah nilai rcg_id minimum dan maksimum, ya mesti mengubah code lagi. Cappe deh …
5. Caranya, devinisikan variabel-variabel tersebut di belakang NAMA_PROSEDUR. Nilainya nanti dimasukkan
ketika memanggil prosedur. Berikut ini prosedur tersebut:
create or replace procedure PROC_REFRESH_MYTAB2
(V_rcg_min NUMBER, v_rcg_max number) as
V_iterasi NUMBER;
v_date DATE;
BEGIN
V_iterasi := V_rcg_min;
V_DATE := sysdate;
EXECUTE IMMEDIATE 'truncate table MYTAB';
WHILE V_iterasi <= v_rcg_max LOOP
insert into MYTAB values (v_date, V_iterasi);
commit;
v_date := v_date+1;
V_iterasi:= V_iterasi+1;
END LOOP;
END;
/
Berikut ini cara memanggil prosedur sekaligus memasukkan nilai untuk variabelnya (misalkan v_rcg_min
saya beri nilai 20 dan v_rcg_max saya beri nilai 30):
1. Di SQLPlus
SQL> exec PROC_REFRESH_MYTAB2 (20,30);
2. Di block PL/SQL, tulis saja nama prosedur tersebut
DECLARE
BEGIN
PROC_REFRESH_MYTAB2 (20,30);
END;
/
Kalau nilai variabel tidak dimasukkan, terlalu banyak, atau terlalu sedikit; maka akan error:
SQL> exec PROC_REFRESH_MYTAB2 (20);
SQL> exec PROC_REFRESH_MYTAB2 (20, 30, 40);
SQL> exec PROC_REFRESH_MYTAB2;
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to
'PROC_REFRESH_MYTAB2'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
membuat data base:
create table nama_tabel (
fiedtype_field(ukuranfile)
contstrainnama_primary_keyprimarykey(nama_fied)
);
6. membuat data base dengan foreginkey
create table nama_tabel (
fiedtype_field(ukuranfile)
field_Bfield(ukuranfile)--->fielduntukmengacuke database fieldB
contstrainnama_primary_keyprimarykey(nama_fied)
contstrainnama_foregn_keyforeignkey(field_b)referencesdatabase(fieldB)
);
MENGUBAHFIELD TABLE:
ALTER TABLE NAMA_TABEL
ADD | MODIFY nama_fieldtipe_data(lebar_field);
MENGHAPUSTABLE:
DROP TABLE nama_tabel
MANIPULASIDATA TABEL:
MENAMBAH ISI RECORD
INSERT INTOnama_tabel (fieldke 1,…..fieldke n)
VALUES(isi_fieldke 1,….isi_fieldke n);
UPDATE ISI RECORD
UPDATE nama_tabel
SET nama_field=data_baru
WHERE nama_field=data lama
PENGELOMPOKAN
7. MENCARIMINIMUM:
SELECT field-1,………field-n, MIN(nama_field)
FROM tabel
GROUP BY field-1,….field-n
MENCARIMAKSIMUM:
SELECT field-1,………field-n, MAX(nama_field)
FROM tabel
GROUP BY field-1,….field-n
MENCARI NILAIRATA2X:
SELECT field-1,………field-n, AVG(nama_field)
FROM tabel
GROUP BY field-1,….field-n
MENCARIJUMLAH NILAI:
SELECT field-1,………field-n, SUM(nama_field)
FROM tabel
GROUP BY field-1,….field-n
MENCARIBANYAKNYA DATA:
SELECT field-1,………field-n, COUNT(nama_field)
FROM tabel
GROUP BY field-1,….field-n
PENGURUTAN
SELECT field-1,………field-n
8. FROM tabel
ORDER BY field
==================PENCARIAN MENURUT KRITERIA==============
SELECT field-1,….field-naggreate_fungction
FROMtabel
GROUP BY field-1,…field-n
HAVINGkriteria_aggreate function
Aggreate function(min,max,avg,sum, count)
================= PENCARIAN DENGAN WHERE==================
SELECT field-1,…field-n
FROMtabel
WHERE field=| <> | < | > | <= | >= …
(mencari nilai diantara)
SELECT field-1,….field-n
FROMtabel
WHERE fieldBETWEEN ……. AND………
(mencari nilai)
SELECT field-1,….field-n
FROMtabel
9. WHERE fieldin(….,….,….,…)
(mencari nilai jumlah,karaktersecaraspesifik)
SELECT field-1,….field-n
FROMtabel
WHERE fieldLIKE|NOT LIKE …. (cat. Untuk Karakterpake ‘%karakter%’)
Cat: dilarangmenggunakanGROUPBY, atau diganti denganORDERBY