Anda di halaman 1dari 64

PL/ SQL

Structure Query Language (SQL)


• Bahasa standar yang digunakan untuk query
data, merubah/memanipulasi data (DML) dan
merubah struktur objek basisdata (DDL) pada
basisdata relasional.
• SQL*Plus merupakan tampilan muka yang
disediakan Oracle untuk mengakses SQL
(menulis script SQL).
Memulai SQL*Plus
• Icon SQL*Plus dari menu program Windows
• Command line :
sqlplus [user]/[password]@sismiop
• Masukkan user, password dan host-string/
nama koneksi basisdata
Query
• Bentuk query dasar :
select [nama kolom] from [nama tabel]
• Definisi tabel :
desc [nama tabel]
Operasi Aritmatika
• Perkalian *
• Pembagian /
• Penjumlahan +
• Pengurangan -
Alias Kolom
• Mengganti judul kolom yang ditampilkan SQL*Plus
• Syntax :
select [nama kolom1] [alias1] from [nama tabel]
select [nama kolom1] as [alias1] from [nama
tabel]
select [nama kolom1] “[alias1]” from [nama tabel]
Alias Kolom
Concatenation
• Menggabungkan dua atau lebih kolom
menjadi satu dengan memberikan tanda (II)
Literals
• Suatu karakter/ ekspresi yang bisa diberikan
dalam SQL. Diapit (diawali dan diakhiri)
dengan tanda petik satu diatas (‘).
Null Value
• Bila ditemukan suatu nilai kolom dari suatu
baris adalah kosong
• Null tidak sama/ berbeda dengan 0 (Nol)
• Contoh : kolom no_kelurahan dan
kd_pos_kelurahan pada tabel ref_kelurahan
Fungsi NVL
• Untuk mengatasi permasalahan yang mungkin
ditimbulkan Null Value
• Dapat digunakan untuk kolom dengan tipe
data karakter, angka/ number dan tanggal/
date
• Ada 2 (dua) parameter : mengecek apakah
nilai null atau tidak dan memberikan balikan
nilai apabila ditemukan nilai null
Fungsi NVL
• Contoh syntax :
NVL([kolom karakter],’Data tidak ada’)
NVL([kolom tanggal],sysdate)
NVL([kolom angka],0)
Baris Dobel
• Kadangkala ketika melakukan perintah select
terhadap suatu/ beberapa kolom muncul baris
yang dobel. Salah satu contoh seleksi kolom
kd_sektor pada tabel ref_kelurahan
• Untuk mengatasi permasalahan ini perlu
ditambahkan key word : DISTINCT
Ordering Data
• Mengurutkan data dari kolom dengan menggunakan key
word ORDER BY
• Secara default adalah ascending (kecil ke besar), untuk
descending (besar ke kecil) diberi tambahan DESC
• Tidak ada batasan jumlah kolom yang bisa di ordering
• Ordering data bisa dilakukan pada alias kolom atau
ekspresi
• Null value diberikan/ diletakkan pada posisi tertinggi/
terbesar
Ordering Data
Pembatasan Baris/ WHERE Condition
• Pembatasan baris dilakukan dengan klausa
WHERE. Diletakkan setelah FROM, syntax :
select [kolom1, kolom2....]
from [tabel1, tabel2...]
where [kondisi]
order by [kolom1, kolom2...]
• Kondisi membandingkan kolom dengan kolom/
literal menggunakan operator logis, operator
SQL, dan negasi operator
Operator Logis
• Macam operator logis :
1. = : sama dengan
2. > : lebih dari
3. >= : lebih dari sama dengan
4. < : kurang dari
5. <= : kurang dari sama dengan
Operator SQL
• Macam operator SQL :
1. BETWEEN : berada antara 2 (dua) nilai
2. IN : berada pada daftar dari
nilai
3. IS NULL : merupakan nilai null
4. LIKE : mempunyai karakter pola
tertentu (% dan _ )
Negasi Operator
• Merupakan kebalikan dari operator logis : <>, !
=
• Merupakan kebalikan dari operator SQL : not
between, not in, is not null, not like
Beberapa Kondisi
• Penggunaan klausa WHERE tidak hanya
digunakan untuk 1 (satu) kondisi saja tetapi
bisa untuk beberapa kondisi.
• Dihubungkan dengan AND atau OR
• Kondisi AND, bernilai BENAR apabila kondisi
diantaranya semua bernilai BENAR
• Kondisi OR, bernilai BENAR apabila salah satu
kondisi diantaranya bernilai BENAR
Fungsi Baris
• Biasanyan diikuti suatu konstanta, variabel,
kolom atau ekspresi
• Mengembalikan nilai tunggal
• Bisa digunakan dalam klausa SELECT, WHERE
dan ORDER BY
• Bisa untuk nested
Macam Fungsi Baris
• Fungsi Karakter
• Fungsi Number
• Fungsi Tanggal dan Aritmatika tanggal
• Fungsi Konversi dan Format Mask
• Fungsi-fungsi lain yang bisa menerima
berbagai macam tipe data
• Fungsi Nested/ bersarang
Contoh Fungsi Karakter
• LOWER : lower(argumen)
• UPPER : upper(argumen)
• INITCAP : initcap(argumen)
• LPAD & RPAD : lpad(string, len, pstring)
• SUBSTR : substr(string, pos, len)
• INSTR : instr(string, search); instr(string,
search, pos, n)
• LTRIM & RTRIM: ltrim(string,rem)
Contoh Fungsi Karakter
• LENGTH : length(string)
• TRANSLATE : translate(string, from, to)
• REPLACE : replace (string, search);
replace(string, search, replace)
Contoh Fungsi Number
• ROUND : round(number, n)
• TRUNC : trunc(number, n)
• SIGN : sign(number)
• CEIL & FLOOR : ceil(number); floor(number)
• Fungsi Matematika : power, mod, abs, sqrt,
sin, cos tan,... etc
Contoh Fungsi Tanggal
• MONTHS_BETWEEN: months_between(date1, date2)
• ADD_MONTHS : add_months(date, mon)
• NEXT_DAY : next_day(date, day)
• LAST_DAY : last_date(date)
• Aritmatika tanggal :
date + number (date) ; date – number(date); date – date
(number of days); date +number/24(date)
FUNGSI KONVERSI
• TO_CHAR :
to_char(number), to_char(number, format);
to_char(date), to_char(date, format)
• TO_NUMBER : to_number(string)
• TO_DATE : to_date(string); to_date(string,
format)
JENIS FORMAT MASK
• Format Mask TANGGAL
• Format Mask WAKTU
• Format Mask NUMBER
Fungsi-fungsi lain yang bisa menerima
berbagai macam tipe data
• NVL : nvl(value, new value)
• GREATEST & LEAST :
greatest(value1, value2,...)
least(value1, value2,...)
• DECODE :
decode(value, search1, result1,
search2, result2, ... , default)
Fungsi Group
• AVG(n)
• COUNT(n|*)
• MAX(expr)
• MIN(expr)
• STDEV(n)
• SUM(n)
• VARIANCE(n)
Menggunakan GROUP BY dan HAVING (optional
untuk pembatasan)
Query Data Lebih Dari 1 Tabel
• JOIN (product, equi-join, non equi-join, outer
join, self join)
• SET OPERATORS (union, intersect, minus)
• SUB QUERY
• EXIST OPERATOR
MODIFIKASI DATA DAN BASISDATA
• Data Manipulation Languange (DML)
• Data Definition Languange (DDL)
DML
• INSERT DATA
1. syntax umum :
INSERT INTO table [ (column,column,……) ]
VALUES (value,value,…..);
2. harus disebutkan kolomnya, bila ...
3. tidak harus disebutkan kolomnya, bila ...
4. input data bisa berasal dari seleksi tabel lain
DML
• UPDATE DATA
1. syntax umum :
UPDATE table [alias]
SET column [,column…] = {expression,subquery}
[WHERE condition];
2. where condition sangat penting
diperhatikan
DML
• DELETE DATA
syntax umum :
DELETE [FROM] table [WHERE condition];

selain menggunakan perintah DATA, hapus


semua data dalam satu tabel bisa dilakukan
dengan menggunakan perintah TRUNCATE.
PROSES TRANSAKSI
• COMMIT
• ROLLBACK
• SAVEPOINT
DDL
• Perintah SQL yang bisa digunakan untuk
merubah struktur basisdata :
1. Tables
2. Indexes
3. Synonym
4. Priviledges
5. View
6. Sequence
PL/ SQL
• PL/SQL (Procedural Language/Structured
Query Language) merupakan sebuah
penggabungan antara bahasa pemrograman
prosedural (PL) dan SQL syntax.
PL/ SQL
• PL/SQL adalah fasilitas yang disediakan Oracle
sehingga pengguna dapat memanfaatkan
konsep pemrograman.
• Dalam PL/SQL dapat digunakan perintah untuk
memanipulasi data yang ada dalam database
Oracle.
• PL/SQL membentuk pemrograman terstruktur
dalam memproses data (biasa disebut blok).
Struktur Block PL/ SQL
DECLARE
variabel tipe_data;
konstanta CONSTANT tipe_data := nilai;
...
BEGIN
statement_1;
statement_2;
...
EXCEPTION
WHEN nama_eksepsi THEN
statement_untuk_mengatasi_error;
...
END;
VARIABLE
• Sebagai media sementara penyimpanan data
• Nilai yang tersimpan dalam variable dapat
dimanipulasi (insert, update, delete dan select)
• Variable yang sudah dideklarasikan bisa digunakan
berulang kali dengan merujuk deklarasi dari variable
tersebut (reusable)
• Penamaan variable : dimulai dengan huruf dan dapat
diikuti huruf, angka atau karakter spesial, panjang
maksimum 30 karakter
• Mudah untuk maintenance
KONSTANTA
• Konstanta digunakan untuk menyimpan
sebuah nilai. Nilai yang disimpan bersifat tetap
(konstan).
• Nilai ditentukan pada saat deklarasi dibuat
sehingga nilainya tetap pada saat program
dieksekusikan.
TIPE BLOCK PL/ SQL
• ANONYMOUS
merupakan suatu blok PL/SQL yang tidak mempunyai nama,
tidak mempunyai parameter, dan tidak bertahan lama dalam
database
• FUNCTION
merupakan suatu blok PL/SQL yang mengembalikan nilai
• PROCEDURE
merupakan suatu blok PL/SQL yang menyimpan sekumpulan
perintah yang tidak disertai dengan pengembalian nilai
TIPE BLOCK PL/ SQL
BEBERAPA PERINTAH YANG SERING ADA
DALAM BLOCK PL/ SQL
• IF....THEN....
• LOOP
1. BASIC LOOP
2. WHILE LOOP
3. FOR LOOP
• CURSOR
MEMBUAT BLOCK PL/ SQL
• ANONYMOUS
• PROCEDURE
• FUNCTION

dengan IF Condition, LOOP dan CURSOR


TRIGGER
• Trigger adalah blok PL/SQL yang disimpan dalam database
dan akan diaktivasi ketika kita melakukan statement-
statement SQL (DELETE, UPDATE, dan INSERT) pada sebuah
tabel.

• Oracle telah menyediakan statement CREATE TRIGGER untuk


membuat sebuah trigger yang selanjutnya akan diaktivasi
berdasarkan event tertentu. Secara umum, event trigger
terbagi menjadi dua, yaitu BEFORE (sebelum) dan AFTER
(setelah). Event tersebut menandakan kapan trigger akan
diaktivasi, apakah sebelum ataukah sesudah proses yang
dilakukan di dalam tabel bersangkutan
MACAM-MACAM TRIGGER
• Row Trigger dan Statement Trigger
• BEFORE dan FOR/ AFTER Trigger
• INSTEAD-OF Trigger
• Trigger on System Events dan User Events
Row Trigger dan Statement Trigger
• Row trigger dipanggil melalui statement
trigger tiap kali ada perubahan pada tabel.
Misal : update data
• Statement trigger dipanggil sekali tanpa
memperhatikan jumlah baris yang diubah
walaupun tidak ada baris yang dipengaruhi.
Misal : Delete data
BEFORE dan FOR/ AFTER Trigger
• Waktu pemanggilan trigger ada dua, BEFORE
dan FOR/ AFTER
• BEFORE dan FOR/ AFTER hanya bisa
didefinisikan unruk tabel bukan view.
• BEFORE trigger menjalankan aksi sebelum
pernyataan hasil trigger dijalankan
• FOR/ AFTER menjalankan aksi setelah
pernyataan hasil trigger dijalankan
INSTEAD-OF Trigger
• INSTEAD-OF Trigger hanya dipanggil tapi tidak
dieksekusi, didefinisikan khususnya untuk view
• Menyediakan cara transparan untuk
memodifikasi view yang tidak dapat
dimodifikasi secara langsung melalui DML
Trigger on System Events dan User Events

• System event
1. Database startup dan shutdown
2. Server error message event
• User event
1. Logon dan Logoff
2. DML stattement
3. DDL statement
SYNTAX UMUM TRIGGER
CREATE [OR REPLACE] TRIGGER <trigger_name>
{BEFORE|AFTER} {INSERT|DELETE|UPDATE}
ON <table_name> [REFERENCING [NEW AS
<new_row_name>] [OLD AS
<old_row_name>]] [FOR EACH ROW [WHEN
(<trigger_condition>)]] <trigger_body>
SELESAI
TERIMA KASIH

Anda mungkin juga menyukai