universitas riwijaya -...

54

Upload: buikien

Post on 26-Apr-2019

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus
Page 2: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

Universitas riwijaya

Fakultas Ilmu

Komputer

Laboratorium

LEMBAR

PENGESAHAN

MODUL

PRAKTIKUM

SISTEM

MANAJEMEN

MUTU ISO

9001:2008

No. Dokumen Tanggal 4 AGUSTUS 2016

Revisi Halaman 2 DARI 48

MODUL PRAKTIKUM

Mata Kuliah Praktikum : Basis Data II

Kode Mata Kuliah Praktikum : FSI214007

SKS : 1

Program Studi : SISTEM INFORMASI

Semester : 3 (Ganjil) 2016/2017

DIBUAT OLEH DISAHKAN OLEH DIKETAHUI OLEH

DOSEN PENGAMPUH

Ali Bardadi, M.Kom.

KETUA JURUSAN

Endang Lestari R, M.T.

WAKIL DEKAN 1

BIDANG AKADEMIK

Syamsuryadi, S. SI., M. Kom

Page 3: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

iii

DAFTAR ISI

INSTALASI ORACLE XE & ADMINISTRASI USER ..................................................................................... 4

DATA DEFINITION LANGUAGE ............................................................................................................. 14

DATA MANIPULATION LANGUAGE (DML) ........................................................................................... 20

PENGELOMPOKAN, PENGURUTAN, DAN KRITERIA DATA .................................................................. 24

QUERY, VIEW DAN ALJABAR RELASIONAL .......................................................................................... 29

DATA CONTROL LANGUAGE (DCL) ...................................................................................................... 33

DASAR DASAR PL/SQL.......................................................................................................................... 35

PROSEDUR DAN FUNGSI ...................................................................................................................... 46

TRIGGER ............................................................................................................................................... 50

Page 4: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

4

INSTALASI ORACLE XE & ADMINISTRASI USER

Instalasi Oracle XE

Langkah – langkah untuk menginstall Oracle XE adalah sebagai berikut:

a. Proses penginstalan dapat segera dilakukan dengan melakukan double klik pada file

instalasi (file bernama OracelXE.exe).

b. Setelah itu akan muncul tampilan sebagai berikut :

c. Saat muncul tampilan windows install wizard seperti dibawah ini klik tombol next.

d. Kemudian akan muncul window mengenai perjanjian lisensi. Klik pilihan accept the

agreement dan kemudian klik tombol next.

Page 5: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

5

e. Setelah itu klik next untuk langkah selanjutnya sehingga muncul tampilan pemilihan

direktori tujuan instalasi seperti di bawah ini. Klik tombol next untuk melanjutkan.

f. Kemudian isikan password untuk database.

Contoh: 1234

Setelah konfirmasi password tersebut silahkan klik tombol next. Password ini akan digunakan

untuk proses login ke dalam database dengan user sys atau system, yaitu user bawaan dari

Oracle yang otomatis terbentuk pada saat proses instalasi.

g. Kemudian akan muncul tampilan dibawah ini (konfirmasi settingan instalasi Oracle XE),

Page 6: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

6

kemudian klik install untuk melanjutkan proses instalasi.

h. Kemudian akan muncul tampilan seperti di bawah ini. Tunggu berapa saat sampai proses selesai.

i. Setelah itu proses penginstalan selesai dan klik finish.

j. Kemudian akan muncul tampilan browser dan silahkan mencobanya dengan memasukkan:

Username : system

Password : 1234 (sesuai dengan password yang dimasukkan pada proses instalasi)

Atau dapat juga dengan Menuliskan Alamat http://127.0.0.1:8080/apex/f?p=4950 pada url

browser kalian

Page 7: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

7

Konfigurasi Setelah Instalasi

Setelah instalasi dan koneksi (jika menggunakan client-server) dari client ke server database

selesai, Oracle XE sudah siap untuk digunakan. Untuk dapat berinteraksi langsung dengan

database Oracle XE, Anda dapat menggunakan SQL*Plus ataupun i-SQL*Plus dari komputer

client maupun dari komputer server.SQL*Plus adalah interface yang berbasis command line yang

menghubungkanuser dengan database, dimana user dapat melakukan perintah-perintah query baik

SQL standar, SQL bawaan Oracle (PL/SQL), dan perintah-perintah lainnya. Sama halnya

dengan i-SQL*Plus yang merupakan fasilitas baru dari Oracleversi 10 keatas (Oracle 10g atau

Oracle XE), yang membedakannya adalah i-SQL*Plus berbasis browser.

a. Untuk dapat membuka SQL*Plus (tampilan command line) langkahnya adalah

sebagai berikut: klik Start � Program � Oracle Database 10g Express Edition

� Run SQL Command Line. Atau juga dapat melalui, Start � Run �

Open : sqlplus � OK, window SQL*Plus command line akan tampil. Setelah window

SQL*Plus command line terbuka, akan ada username dan password. Untuk itu,

Anda harus memasukkanusername dan password. Ada user yang dibuat secara

default ketika proses instalasi, yang terpenting adalah user sys dan system

dengan password sesuai dengan password yang dimasukkan pada saat instalasi.

Kedua user inilah yang paling vital karena mempunyai hak-hak tertinggi (privileges)

dalam mengatur database. Untuk alas an keamanan, maka password untuk kedua

user ini harus segera diganti setelah proses instalasi.

Cara untuk masuk ke database, yaitu dengan perintah CONN, contohnya:

SQL> CONN

Page 8: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

8

Enter user-name: [username]

Enter password: [*********]

atau

SQL> CONN [username]/[password]

b. Sedangkan untuk dapat membuka i-SQL*Plus (tampilan browser) adalah : klik

Start� Program � Oracle Database 10g Express Edition � Go to Database

Homepage� Login (dengan mengisikan username dan password) � SQL � SQL

Command � Enter Command

Sedangkan cara mengubah password adalah sebgaia berikut :

1. Buka SQL*Plus/i-SQL*Plus

2. Selanjutnya lakukan koneksi ke database dengan account sys atau system.

3. Pada SQL*Plus, setelah terkoneksi, pada prompt SQL (‘ SQL> ‘) ketikkan

perintah sebagai berikut:

SQl> PASSW [nama_user]

Perintah:

SQL> PASSW system

Pada i-SQL*Plus langsung saja ketikkan

PASSW system

Masukkan password lama, kemudian masukkan password baru misalnya oraclesys,

setelah itu ketikkan password baru ini sekali lagi sebagai verifikasi.

--

Changing password for sys

Old password : *****************

New password : *********

Retype password : *********

--

4. Beberapa versi Oracle sebelumnya tidak mendukung prosedur PASSW, maka untuk

melakukan penggantian password gunakan perintah sebagai berikut:

SQL> alter user [nama_user] identified by [password_baru];

Disarankan, jangan menggunakan user sys atau system untuk membangun aplikasi database.

Page 9: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

9

Kedua user ini digunakan untuk keperluan administratif. Selain itu, sangat beresiko untuk

memanipulasi data yang dimiliki kedua user ini karena data yang dimiliki kedua user ini digunakan

untuk mendukung jalannya database secara keseluruhan.

Membuat User Baru

Pengguna Oracle pada awalnya merupakan user tanpa role, yang berinteraksi langsung

dengan database, baik untuk keperluan development maupun administratif. Disarankan, jangan

menggunakan user sys atau system untuk membangun aplikasi database. Kedua user ini

digunakan untuk keperluan administratif. Selain itu, sangat beresiko untuk memanipulasi data

yang dimiliki kedua user ini karena data yang dimiliki kedua user ini digunakan untuk

mendukung jalannya database secara keseluruhan.

Anda harus terlebih dahulu terkoneksi dengan database untuk membuat user baru dan

tentunya Anda harus mempunyai privilege CREATE USER, maka gunakan user sys atau

system.

Perintah pembuatan user adalah:

CREATE USER [nama_user] IDENTIFIED BY [password];

Berikut ini contoh perintah pembuatan user :

CREATE USER toserba IDENTIFIED BY toserba;

Setelah perintah berhasil dijalankan maka akan terdaftar user baru dengan nama toserba dengan

password toserba. User ini belum memiliki privilege dan role apapun. Meskipun sudah

dibuat, tetapi user ini belum dapat melakukan koneksi ataupun menggunakan database. Untuk ini

perlu kita lakukan pemberian privilege dan role.

Kontrol Akses dengan Privilage dan Role

Untuk menangani keamanan data dan sistem dalam database, Oracle mengatur antara memberi

dan melarang akses kepada user terhadap suatu objek database dan fungsi tertentu.Oracle

menerapkan suatu mekanisme kontrol akses setelah user berhasil dibuat/terdaftar dalam DBMS.

Selain dengan role bawaan (predefined-role), kita juga dapat membuat role baru dengan

object/system privilege sesuai kebutuhan. Untuk membuat role baru gunakan perintah CREATE ROLE.

Beberapa object/system privileges diantaranya:

Page 10: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

10

� CREATE mengizinkan user untuk membuat table, sequence, view.

� SELECT mengizinkan user untuk mengambil data dari table, sequence, view.

� INSERT mengizinkan user untuk memasukkan data dari table atau view.

� UPDATE mengizinkan user untuk meng-update data dari table atau view.

� DELETE mengizinkan user untuk menghapus data dari table atau view.

� ALTER mengizinkan user untuk merubah struktur suatu table atau sequence. Privilege ini,

selain untuk table dan sequence termasuk ke dalam system privilege.

� INDEX mengizinkan user untuk membuat index suatu table yang sudah ada.

� REFERENCES mengizinkan user untuk membuat (CREATE) atau mengubah (ALTER)

constratint foreign key yang mengacu ke table referensinya.

� EXECUTE mengizinkan user untuk menjalankan stored procedure atau function

(PL/SQL).

Untuk membuat role gunakan perintah CREATE ROLE seperti berikut ini:

CREATE ROLE [nama_role] IDENTIFIED BY [password_role];

Perhatikan contoh berikut:

CREATE ROLE role_toserba IDENTIFIED BY toserba_juga;

Jika Anda perhatikan cara pembuatan role mirip dengan cara pembuatan user. Nilai setelah

klausa IDENTIFIED BY merupakan password dari role tersebut nantinya akan digunakan jika

role ini akan digunakan. Karena sifat ini, role juga disebut virtual user.

Setelah membuat role, Anda harus mendefinisikan privilege apa saja yang dimiliki role.

Pemberian privilege ke role mirip dengan pemberian privilege ke user.

--

GRANT [privilege] TO [nama_role];

--

Perhatikan contoh berikut:

--

GRANT CREATE TABLE TO role_toserba;

GRANT SELECT ON barang TO role_toserba;

GRANT UPDATE TABLE ON barang TO role_toserba;

--

Perintah di atas akan memberikan tiga privilege ke dalam role_toserba Setelah itu

Page 11: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

11

Anda dapat memberikan role ini kepada user. Seperti contoh berikut ini:

--

GRANT [nama_role] TO [nama_user];

--

Contoh:

--

GRANT role_toserba TO toserba;

--

Saat ini user toserba memiliki satu role yaitu role_toserba yang di dalamnya terdapat 3

privilege. Untuk mengambil/menghapus hak akses itu dari user, gunakan perintah REVOKE

seperti contoh berikut:

--

REVOKE [nama_role] FROM [nama_user];

--

Contoh:

--

REVOKE role_toserba FROM toserba;

LATIHAN

1. Buka SQL*Plus atau SQL Command Line , Kemudian ketikkan perintah berikut ini :

SQL> CONN

Enter user-name: System

Enter password: 1234

atau

SQL> CONN System/1234

Apa yang terjadi setelah anda memasukkan perintah tersebut ?

2. Ketik perintah berikut ini

SQL> PASSW system

Changing password for sys

Old password : 1234

New password : 1

Retype password : 1

SQL> disconnect

Page 12: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

12

SQL> CONN

Enter user-name: System

Enter password: 1

Menurut anda apa fungsi dari perintah PASSW system ?

3. Ketik perintah berikut ini

SQL> alter user system identified by 2;

SQL> disconnect

SQL> CONN

Enter user-name: System

Enter password: 2

Menurut anda apa fungsi dari perintah alter user ?

4. Ketik perintah berikut ini

SQL> disconnect;

SQL > CREATE USER pembelian IDENTIFIED BY 1234;

Apa yang terjadi setelah anda mengetikkan perintah diatas ? Mengapa ?

5. Ketik perintah berikut ini

SQL> CONN

Enter user-name: System

Enter password: 2

SQL > CREATE USER pembelian IDENTIFIED BY 1234;

Apa yang terjadi setelah anda mengetikkan perintah diatas ?

6. Berdasarkan soal no 4 dan 5 apa yang dapat anda simpulkan ?

7. Ketik perintah berikut ini

SQL> disconnect;

SQL> CONN

Enter user-name: pembelian

Enter password: 1234

Apa yang terjadi setelah anda mengetikkan perintah diatas ?

8. Ketik perintah berikut ini

SQL> CONN

Enter user-name: system

Enter password: 2

Page 13: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

13

a) SQL> CREATE ROLE role_pembelian IDENTIFIED BY 1234;

Menurut anda apa fungsi dari perintah Create role?

b) SQL> GRANT create table TO role_pembelian;

Menurut anda apa fungsi dari perintah Grant create table?

c) SQL> GRANT all privileges TO role_pembelian;

Menurut anda apa fungsi dari perintah Grant all privileges?

Apa kesimpulan dari soal no 8 a) , 8 b) dan 8 c) ?

9. Ketik perintah berikut

SQL> GRANT role_pembelian TO pembelian;

Menurut anda apa fungsi dari perintah Grant role_pembelian to pembelian ?

KESIMPULAN :

Page 14: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

14

DATA DEFINITION LANGUAGE

Membuat Tabel

CREATE TABLE nama_tabel (nama_kolom tipe_kolom[size]);

Contoh:

create table kategori (id_kategori number, nama_kategori varchar2(25));

Keterangan :

create table Perintah (query) untuk membuat table

kategori Nama table yang akan dibuat

id_kategori & nama_kategori Nama kolom dalam table yang akan dibuat

number & varchar2 Tipe kolom

(25) Ukuran, mendefinisikan banyaknya karakter/variable yang

dapat ditampung dalam kolom tersebut

Membuat Tabel

ALTER TABLE nama_tabel ADD|MODIFY (nama_kolom tipe_kolom[size]);

Perintah untuk memodifikasi tabel, berupa penambahan kolom atau pengubahan tipe data

kolom.

Catatan : pada Oracle kolom yang sudah dibuat tidak dapat dihapus.

Menghapus Tabel

DROP TABLE nama_tabel;

Constraint pada Tabel

a. Not Null

Jika Anda menginginkan data pada sebuah kolom tertentu tidak boleh kosong, dalam artian

harus diisi dan tidak boleh tidak diisi, maka Anda dapat memberikan contraint Not Null. Not Null

akan mencegah suatu kolom pada tabel tidak diberi data atau nilai. Jika suatu kolom telah

diberi constraint Not Null, kemudian tidak diberi data, maka Oracle akan memunculkan

Page 15: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

15

pesan kesalahan.

Konvensi nama constraint-nya adalah : NN_NamaTabel_NamaKolom

Deklarasi saat CREATE TABLE adalah:

--

CREATE TABLE nama_tabel (nama_kolom tipe_kolom NOT NULL);

atau

CREATE TABLE nama_tabel (nama_kolom tipe_kolom CONSTRAINT

nama_costraint NOT NULL);

--

Deklarasi saat ALTER TABLE adalah:

--

ALTER TABLE nama_tabel MODIFY (nama_kolom tipe_kolom NOT NULL);

atau

ALTER TABLE nama_tabel MODIFY (nama_kolom tipe_kolom

CONSTRAINT

nama_constraint NOT NULL);

--

b. Unique

Constraint Unique adalah sebuah batasan yang diberikan kepada suatu kolom dalam tabel

tertentu dimana data – data yang diberikan tidak boleh sama antara baris yang satu dengan baris yang

lainnya, tetapi masih boleh kosong dalam artian tidak diberikan data.

Unique menjaga agar data pada suatu tabel tidak terulang lagi pada baris yang lain.

Pesan error akan dimunculkan oleh Oracle jika Anda memasukkan data yang sama. Konvensi

nama constraint-nya adalah : UK_NamaTabel_NamaKolom

Deklarasi saat CREATE TABLE adalah:

CREATE TABLE nama_tabel (nama_kolom tipe_kolom UNIQUE);

atau

CREATE TABLE nama_tabel (nama_kolom tipe_kolom CONSTRAINT

nama_constraint UNIQUE);

Deklarasi saat ALTER TABLE adalah:

CREATE TABLE nama_tabel ADD CONSTRAINT nama_constraint UNIQUE

(nama_kolom);

c. Primary Key

Primary key adalah sebuah constraint gabungan dari Contraint Unique dan Constraint Not

Null. Sehingga jika sebuah kolom diberikan constraint Primary Key, maka data yang

Page 16: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

16

diberikan tidak boleh kosong dan tidak boleh sama dengan baris yang lain. Misalnya pada

tabel mahasiswa, kolom no_mahasiswa diberikan constraint Primary Key, karena setiap

mahasiswa pasti memiliki no_mahasiswa, sehingga tidak kosong (Not Null) dan juga tidak

mungkin satu orang mahasiswa mempunyai no_mahasiswa yang sama dengan mahasiswa

yang lain (Unique). Hanya saja perbedaannya adalah cobstraint PRIMARY KEY

membentuk index untuk kolom tersebut.

Konvensi nama Constraint-nya adalah : PK_NamaTabel

Deklarasi Primary Key pada satu kolom saat CREATE TABLE adalah:

CREATE TABLE nama_tabel (nama_kolom tipe_kolom PRIMARY KEY);

atau

CREATE TABLE nama table(nama kolom tipe kolom CONSTRAINT nama_constraint

PRIMARY KEY);

Constraint PRIMARY KEY dapat diterapkan pula pada beberapa kolom. Pada kasus ini, data

membentuk PRIMARY KEY sama dengan data pada baris – baris yang lain. Tetapi

kombinasi data untuk semua kolom PRIMARY KEY akan unik untuk masing-masing baris.

Deklarasi PRIMARY KEY pada beberapa kolom saat ALTER TABLE adalah:

--

ALTER TABLE nama_tabel ADD CONSTRAINT nama_constraint PRIMARY KEY

(nama_kolom);

--

Deklarasi PRIMARY KEY pada beberapa kolom saat ALTER TABLE adalah:

--

ALTER TABLE nama_tabel ADD CONSTRAINT nama_constraint PRIMARY KEY

(nama_kolom,...,nama_kolom_n);

--

Catatan : Hanya terdapat satu PRIMARY KEY untuk satu tabel, baik terbentuk dari

satu kolom atau beberapa kolom.

d. Foreign Key

Istilah lain yang banyak dipakai dalam membuat relasi antara tabel yang satu dengan tabel

yang lainnya adalah Foreign Key. Foreign Key adalah kolom dalam sebuah table yang

bukan primary key, tetapi kolom tersebut merupakan primary key dalam table yang lain.

Foreign key digunakan untuk menjaga integritas data antara tabel parent dengan table

child.

Page 17: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

17

Deklarasi saat CREATE TABLE adalah :

--

CREATE TABLE nama_tabel (nama_kolom tipe_data,..., nama_kolom_n

tipe_data,CONSTRAINT nama_constraint FOREIGN KEY (nama_kolom)

REFERENCES nama_tabel_parent [ON DELETE CASCADE]);

--

Deklarasi saat ALTER TABLE adalah :

--

ALTER TABLE nama_tabel ADD CONSTRAINT nama_constraint FOREIGN KEY

(nama_kolom_n) REFERENCES nama_tabel_parent [ON_DELETE_CASCADE];

--

Data pada tabel parent tidak dapat di update jika telah mempunyai child. Data pada tabel

parent tidak dapat dihapus, kecuali dengan pemberian pernyataan ON DELETE CASCADE

saat deklarasi Constraint FOREIGN KEY. Dengan pernyataan tersebut, jika data pada tabel

parent dihapus, maka semua data pada tabel child yang mengacu ke data tersebut juga akan

ikut dihapus.

e. Check

Sesuai namanya, constraint CHECK digunakan untuk memberikan sebuah kondisi kepada

constraint yang berguna untuk menguji apakah data sesuai dengan syarat yang harus

dipenuhi. Data akan ditolak jika tidak sesuai dnegan syarat yang telah diberikan pada

constraint Check. Sebagai contoh, kita akan menambahkan constraint Check pada kolom

nilai supaya setiap nilai yang diberikan harus lebih besar dari 0 (nol).Seperti syarat yang

telah diberikan pada kolom nilai, data yang boleh dimasukkan ke dalam kolom tersebut harus

lebih besar daripada nol.

Contoh syarat pengujian yang lain dapat berupa :

1) Daftar nilai, misal pada tabel mahasiswa, pada kolom jenis_kelamin hanya bisa menerima

nilai („L‟, „P‟)

2) Rentang nilai, misalnya pada kolom usia hanya bisa menerima nilai antara 15 sampai

30.

Konvensi nama Constraintnya adalah : CK_NamaTabel_NamaKolom

Deklarasi saat CREATE TABLE adalah :

--

CREATE TABLE nama_tabel (nama_kolom tipe_kolom CHECK (syarat));

Atau

Page 18: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

18

CREATE TABLE nama_tabel (nama_kolom tipe_kolom CONSTRAINT nama_constraint

CHECK (syarat));

--

Deklarasi saat ALTER TABLE adalah :

--

ALTER TABLE nama_tabel ADD CONSTRAINT nama_constraint CHECK (syarat);

--

f. Default

Default sebenarnya tidak termasuk kategori Constraint, karena tidak membatasi data yang

masuk ke dalam tabel. Dengan DEFAULT, nilai suatu kolom akan diberikan jika

penambahan data tidak secara eksplisit menyebutkan nilai untuk kolom tersebut.

Pemberian nilai NULL akan mencegah pemberian nilai DEFAULT yang ditetapkan.

Deklarasi saat CREATE TABLE adalah :

--

CREATE TABLE nama_tabel (nama_kolom tipe_data DEFAULT nilai_default);

--

Deklarasi saat ALTER TABLE adalah : --

ALTER TABLE nama_tabel MODIFY nama_kolom tipe_data DEFAULT nilai_default;

--

LATIHAN

1. Buat sebuah tabel dengan nama BARANG di dalam user pembelian

Kode barang sebagai primary key

2. Tambahkan sebuah kolom : stok_barang (int), sebagai kolom terakhir !

3. Buat sebuah tabel dengan nama SUPLIER di dalam user pembelian

Page 19: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

19

Kode_suplier sebagai primary key

4. Buat sebuah tabel dengan nama SUPLIER di dalam user pembelian

Kode_suplier sebagai primary key

5. Ubahlah agar tipe data dari field alamat_suplier dari varchar2(50) menjadi char(40)

6. Buat sebuah tabel dengan nama CUSTOMER di dalam user pembelian

Kode_customer sebagai primary key

7. Buat sebuah tabel dengan nama PASOK di dalam user pembelian

Kode_pasok sebagai primary key, kode_bara]ng dan kode_suplier sebagai foreign key

8. Buat sebuah tabel dengan nama PEMBELIAN di dalam user pembelian

Kode_pembelian sebagai primary key, kode_barang dan kode_customer sebagai foreign key

9. Hapuslah table barang dengan perintah berikut

SQL> drop table barang;

Mengapa table barang tidak bisa di hapus ?

10. Sekarang coba anda hapus table pasok . perhatikan apa yang terjadi ?

KESIMPULAN :

Page 20: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

20

DATA MANIPULATION LANGUAGE (DML)

Data Manipulation Language (DML) merupakan bahasa basis data yang berguna untuk

melakukan modifikasi dan pengambilan data pada suatu basis data.

A. Penambahan data (Insert) pada sebuah tabel :

Syntax:

INSERT INTO nama_tabel(field ke-1, ….. field ke-n)

VALUES(nilai_field_ke-1, …. nilai_field_ke-n);

Contoh :

INSERT INTO Mahasiswa

VALUES ('5107100029','Jeffrey Hermanto','RSMJ 12','0811232425')

B. Pembaruan data (Update) pada sebuah tabel :

Syntax:

UPDATE nama_tabel

SET nama_field = data_baru

WHERE nama_field = data_lama;

Contoh :

UPDATE Mahasiswa

SET Telp = '7312345'

WHERE Nama = 'Jeffrey Hermanto Halimsetiawan'

C. Penghapusan data (Delete) pada sebuah tabel :

Syntax:

DELETE FROM nama_tabel

[ WHERE kondisi];

Contoh :

DELETE FROM Mahasiswa

WHERE Nama = 'Jeffrey Hermanto'

Page 21: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

21

D. Pemilihan data dari satu atau beberapa tabel :

Syntax :

SELECT [DISTINCT] select_list

FROM table_source

[WHERE search_condition]

[GROUP BY group_by_expression]

[HAVING search_condition]

[ORDER BY order_expression [ASC | DESC] ]

Contoh :

SELECT * FROM Mahasiswa;

SELECT * FROM Mahasiswa WHERE Nama LIKE "%rey" ORDER BY Nama DESC;

SELECT Nama, Nilai, AVG(Nilai)FROM Mahasiswa GROUP BY Nama, Nilai;

LATIHAN

1. Setelah tanda ‘SQL> ‘ anda tuliskan sintak berikut ini secara berurutan

INSERT INTO barang (kode_barang,nama_barang,satuan_barang,stok_barang)

VALUES (‘B001’,’Lemari Es’,’unit’,11);

Select * from barang;

Apa yang terjadi ?

2. Tambahkan sebuah record lagi pada table barang sehingga isi dari table sebagai berikut :

3. Tambahkan sebuah record lagi sehingga isi dari table sebagai berikut :

Page 22: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

22

4. Tambahkan sebuah record lagi pada table barang sehingga isi dari table sebagai berikut :

5. Tambahkan 3 buah record pada table suplier sehingga isi dari table sebagai berikut :

6. Tambahkan 3 buah record pada table customer sehingga isi dari table sebagai berikut :

7. Pada table barang yaitu pada field satuan barang dan field stok barang untuk kode_barang

=’B003’ terlihat kosong. Isikan pada field satuan_barang dengan ‘UNIT’ dan stok_barang

dengan 30.

8. Tambahkan sebuah record pada table pasok pada field kode_pasok =’P001’,

kode_barang=’B010’, kode_suplier=’s001’, dan jumlah _pasok=5. Lihat apa yang terjadi ?

Apakah terjadi penambahan record pada table pasok ? Jika tidak , jelaskan mengapa ?

Page 23: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

23

9. Tambahkan 3 buah record pada table pasok sehingga isi dari table sebagai berikut :

10. Tambahkan 3 buah record pada table pembelian sehingga isi dari table sebagai berikut :

11. Ketik perintah berikut ini :

SQL> select table_name from users_tables;

Apa yang terjadi ?

12. Ketik perintah berikut ini :

SQL> disconnect;

KESIMPULAN :

Page 24: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

24

PENGELOMPOKAN, PENGURUTAN, DAN KRITERIA DATA

PENGELOMPOKAN DATA (GROUP BY ) DAN AGGREGATE FUNCTIONS

Pada Kasus seleksi data, seringkali diminta untuk menampilkan atau memilih sekumpulan data

berdasarkan kelompok data terentu. Untuk menyelesaikan permasalahan tersebut SQL

menyedian perintah atau sintak group by. Pada pengelompokan data biasanya disertakan bersama

Aggregate Function.

Min

Perintah min digunakan untuk menampilkan nilai terkecil dari suatu kelompok tabel.

Sintak :

Max

Perintah max digunakan untuk menampilkan nilai terbesar dari suatu kolom pada tabel.

Sintak :

Avg

Perintah avg digunakan untuk menghitung rata-rata dari nilai suatu kolom pada tabel.

Sintak :

SELECT field1, … field-n, MIN(nama_field)

FROM nama_tabel

GROUP BY nama_field;

SELECT field1, … field-n, MAX(nama_field)

FROM nama_tabel

GROUP BY nama_field;

SELECT field1, … field-n, AVG(nama_field)

FROM nama_tabel

GROUP BY nama_field;

Page 25: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

25

Sum

Perintah sum digunakan untuk menghitung jumlah nilai suatu kolom pada tabel.

Sintak :

Count

Perintah count digunakan untuk menghitung jumlah baris suatu kolom pada tabel.

Sintak :

LATIHAN

1. Tampilkan minimum pemasokan per kode barang

Ketik perintah berikut ini

SQL> Select kode_barang as kd_brg, min (jumlah_pasok) as minimum_pasok

2 From pasok;

Apakah perintah tersebut dapat dieksekusi ? Menurut anda mengapa perintah tidak bisa di

proses ?

2. Ketik perintah berikut ini

SQL> Select kode_barang as kd_brg, min (jumlah_pasok) as minimum_pasok

2 From pasok

3 group by kode_barang;

Bagaimana hasil dari perintah diatas ? Jelaskan ?

3. Tampilkan minimum pembelian per customer .

4. Tampilkan maksimum pemasokan per kode suplier.

5. Tampilkan rata rata pemasokan (rata-rata jumlah pasok) per kode barang.

6. Tampilkan total pembelian per kode barang per customer.

7. Tampilkan berapa kali pemasokan(cacah pasok) tiap kode_barang. Atau dengan kata lain :

SELECT field1, … field-n, SUM(nama_field)

FROM nama_tabel

GROUP BY nama_field;

SELECT field1, … field-n, COUNT(nama_field)

FROM nama_tabel

GROUP BY nama_field;

Page 26: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

26

berdasarkan kode barang ada berapa kali pemasokan.

8. Tampilkan minimum , maksimum, rata-rata dan jumlah barang serta berapa kali terjadi

pembelian untuk tiap kode barang.

KESIMPULAN :

PENGURUTAN DATA (ORDER BY)

Klausa ORDER BY digunakan untuk mengurutkan data berdasarkan kolom tertentu sesuai

dengan tipe data yang dimiliki.

Sintak

LATIHAN

1. Tampilkan semua data barang berdasarkan urutan nama barang

Ketik perintah berikut ini

SQL> select * from barang

SQL> order by nama_barang;

Tuliskan hasilnya dan simpulkan

2. Tampilkan semua data customer berdasarkan urutan nama customer

3. Tampilkan semua data suplier diurutkan secara terbalik berdasarkan urutan nama customer

SELECT field1,field2,…, field-n

FROM nama_tabel

ORDER BY nama_field;

Page 27: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

27

KESIMPULAN :

KRITERIA DATA

Kriteria dengan having

Klausa HAVING digunakan untuk menentukan kondisi bagi klausa GROUP BY.

Kelompok yang memenuhi HAVING saja yang akan dihasilkan.

Sintak :

Kriteria dengan where

Pada kriteria dengan where pemilihan atau seleksi dara dilakukan setalah kata where. Setelah

kata where biasa diikuti oleh comparison (=,<>,<,>,>,<= atau >=), between, in, like/not like atau

is null, is not null.

Sintak kriteria where dengan comparison

Sintak kriteria where dengan between

SELECT field1,field2,…, field-n, aggregate_function

FROM nama_tabel

GROUP BY nama_field

HAVING kriteria_agregate_function;

SELECT field1,field2,…, field-n

FROM nama_tabel

WHERE field = | <> | < | > | <= | >= …;

SELECT field1,field2,…, field-n

FROM nama_tabel

WHERE field BETWEEN … AND … ;

Page 28: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

28

Sintak kriteria where dengan in

Sintak kriteria where dengan like/ not like

LATIHAN

1. Tampilkan kode customer yang mempunyai cacah pembeliann =4;

2. Tampilkan kode barang yang jumlah pasoknya kurang dari atau sama dengan 5

3. Tampilkan kode barang dan kode suplier yang jumlah pasoknya antara 5 dan 12

4. Tampilkan customer pada table pembelian yang mempunyai kode ‘c001’ atau ‘c003’

5. Tampilkan data suplier yang nama suplier nya berawalan huruf ‘A’

KESIMPULAN :

SELECT field1,field2,…, field-n

FROM nama_tabel

WHERE field IN (…,…,…);

SELECT field1,field2,…, field-n

FROM nama_tabel

WHERE field LIKE | NOT LIKE … ;

Page 29: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

29

QUERY, VIEW DAN ALJABAR RELASIONAL

SELEKSI SATU TABEL

Seleksi ini hanya berkisar pada field yang ada pada satu table. Misalkan anda akan menampilkan

nama suplier dan berapa jumlah pasokannya, maka pada kasus seleksi satu table ini anda tidak

bisa melakukannya. Hal ini disebabkan karena nama suplier adalah field pada table suplier,

sedangkan jumlah pasok adalah field pada table pasok.

Sintak SQL nya sebagai berikut

SELEKSI LEBIH DARI SATU TABEL

Seleksi tipe ini memungkinkan anda untuk bebas memilih field mana saja yang anda ingin

tampilkan, asalkan antara field yang satu dengan field yang lain masih berada pada table table

yang saling berelasi.

Sintak SQL nya sebagai berikut

UNION

Union merupakan operator yang digunakan untuk menggabungkan hasil query, dengan ketentuan

SELECT field1,field2,…, field-n, aggregate_function

FROM nama_tabel

WHERE kriteria

GROUP BY field1,…, field-n,

HAVING kriteria_aggregate_function

ORDER BY field ;

SELECT field1,field2,…, field-n, aggregate_function

FROM nama_tabel1, … , nama_tabel-n

WHERE kriteria

GROUP BY field1,…, field-n,

HAVING kriteria_aggregate_function

ORDER BY field ;

Page 30: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

30

jumlah, nama dan tipe kolom dari masing-masing tabel yang akan ditampilkan datanya harus

sama.

Sintak SQL nya sebagai berikut

INTERSECT

Intersect merupakan operator yang digunakan untuk memperoleh data dari dua buah query

dimana data yang ditampilkan adalah yang memenuhi kedua query tersebut dengan ketentuan

jumlah, nama dan tipe kolom dari masing-masing tabel yang akan ditampilkan datanya harus

sama.

Sintak SQL nya sebagai berikut

SELECT field1,field2,…, field-n, aggregate_function

FROM nama_tabel

[WHERE] [kriteria]

[GROUP BY] [field1,…, field-n]

UNION

SELECT field1,field2,…, field-n, aggregate_function

FROM nama_tabel

[WHERE] [kriteria]

[GROUP BY] [field1,…, field-n]

SELECT field1,field2,…, field-n, aggregate_function

FROM nama_tabel

[WHERE] [kriteria]

[GROUP BY] [field1,…, field-n]

INTERSECT

SELECT field1,field2,…, field-n, aggregate_function

FROM nama_tabel

[WHERE] [kriteria]

[GROUP BY] [field1,…, field-n]

Page 31: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

31

DIFFERENCE (MINUS)

Difference bertujuan untuk menampilkan data hasil pengurangan dari dua query atau sub query.

Sintak SQL nya sebagai berikut

DISTINCT / PROYEKSI

Pada dasarnya distinct digunakan untuk menghilangkan nilai ganda.

Sintak SQL nya sebagai berikut

JOIN

Operasi Join, Join merupakan operasi yang digunakan untuk menggabungkan dua tabel

atau lebih dengan hasil berupa gabungan dari kolom-kolom yang berasal dari tabel-tabel

tersebut. Pada join sederhana, tabel-tabel digabungkan dan didasarkan pada pencocokan

antara kolom pada tabel yang berbeda.

Sintak SQL nya sebagai berikut

SELECT field1,field2,…, field-n, aggregate_function

FROM nama_tabel

[WHERE] [kriteria]

[GROUP BY] [field1,…, field-n]

DIFFERENCE | MINUS

SELECT field1,field2,…, field-n, aggregate_function

FROM nama_tabel

[WHERE] [kriteria]

[GROUP BY] [field1,…, field-n]

SELECT DISTINCT field1,field2,…, field-n, aggregate_function

FROM nama_tabel

[WHERE] [kriteria]

[GROUP BY] [field1,…, field-n]

Page 32: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

32

LATIHAN

1. Tampilkan berapa kali pembelian per kode barang per kode customer

2. Tampilkan nama barang, tanggal berapa barang itu dipasok dan berapa jumlah barang yang

dipasok

3. Tampilkan kode suplier, berapa kali pemasokan dan jumlah pasok . kode yang ditampilkan

adalah ‘s002’(gunakan operasi union)

4. Tampilkan kode barang dan kode suplier yang memiliki jumlah pasok lebih besar atau sama

dengan 4 (gunakan operasi intersection)

5. Tampilkan kode barang, banyaknya pemasokan dan jumlah pemasokan untuk kode barang

yang jumlah pemasokannya lebih kecil atau sama dengan 15.(gunakan operasi minus)

KESIMPULAN :

SELECT tabel1.field1,…, tabel1.field-n,

Tabel2.field1,…, tabel1.field-n,

Tabel3.field1,…, tabel1.field-n,

FROM tabel1, …, tabel2, …, table-n

[WHERE] tabel1.field_PK = tabel2.field_PK AND

Tabel2.field_PK = table-n.field_PK

Page 33: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

33

DATA CONTROL LANGUAGE (DCL)

COMMIT

Adalah perintah yang berfungsi untuk mengendalikan pengeksekusian transaksi yang

menyetujui rangkaian perintah yang berhubungan erat dengan perintah yang sebelumnya telah

berhasil dilakukan.

Keadaan Data Sebelum COMMIT:

• Operasi manipulasi data terutama mempengaruhi database buffer, oleh sebab itu keadaan

datasebelumnya dapat diperbaiki.

• User yang sedang connect (current user) dapat me-review hasil dari operasi manipulasi

data dengan melakukan query terhadap table

• User lain tidak dapat melihat hasil dari operasi manipulasi data dari current user. Oracle

memberlakukan read consistency untuk menjamin bahwa setiap user melihat data seperti

yang ada pada saat commit terakhir.

• Baris-baris data yang sedang diubah akan dikunci (locked), user lain tidak dapat

mengubah data yang sedang diubah tersebut.

Kita menggunakan COMMIT untuk membuat seluruh perubahan data menjadi permanen.

• Hal-hal yang mengikuti COMMIT:

• Seluruh perubahan data ditulis ke database

• Keadaan data sebelumnya secara permanen hilang

• Seluruh user dapat melihat hasil dari transaksi

• Penguncian terhadap baris-baris data yang diubah akan dibebaskan, baris-baris data

tersebut sekaran tersedia kembali bagi user lain untuk melakukan perubahan data

berikutnya.

• Seluruh savepoints dihapus.

ROLLBACK

Adalah perintah yang berfungsi untuk mengendalikan pengeksekusian transaksi yang

membatalkan transaksi yang dilakukan karena adanya kesalahan atau kegagalan pada salah satu

rangkaian perintah.

Page 34: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

34

LATIHAN

1. Gunakan user / database pembelian yang telah dibuat pada latihan sebelumnya, kemudian

tambahkan sebuah table KARYAWAN

Column pada table karyawan :

Data pada table karyawan :

2. Kemudian ketik perintah berikut ini :

INSERT KARYAWAN VALUES ('K003', 'Cici', 'Perumnas');

UPDATE KARYAWAN SET alamat=’bukit besar’ WHERE NIK=’K003’;

COMMIT;

SELECT * FROM KARYAWAN ;

3. Menurut anda apa yang terjadi pada table karyawan ?

4. Menurut anda apa fungsi dari commit ?

5. Ketik perintah berikut ini

DELETE * FROM karyawan ;

ROLLBACK;

SELECT * FROM karyawan;

DELETE FROM karyawan WHERE NIK=’K002’;

SELECT * FROM karyawan;

COMMIT;

6. Menurut anda apa fungsi dari rollback ?

KESIMPULAN

Page 35: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

35

DASAR DASAR PL/SQL

PL/SQL (Procedural Language/Structure Query Language) adalah suatu blok yang berisi

skrip-skrip bahasa prosedural. PL/SQL merupakan bahasa pemrograman procedural. PL/SQL

dapat meningkatkan kinerja database

Struktur Blok PL/SQL

Struktur blok PL/SQL terdapat tiga bagian :

– Bagian pendeklarasian tipe data (opsional)

– Bagian penulisan perintah

– Bagian eksepsi (opsional)

Bentuk Umum Stuktur Umum PL/SQL

Contoh Paling Sederhana

BEGIN

DBMS_OUTPUT.PUT_LINE(‘Belajar Oracle’);

END;

Catatan:

Untuk melihat hasil, setting terlebih dahulu variabel sistem SERVEROUTPUT dengan

menuliskan :

SET SERVEROUTPUT ON

DECLARE variabel tipe_data; konstanta CONSTANT tipe_data := nilai; ... BEGIN statement_1; statement_2; ... EXCEPTION WHEN nama_eksepsi THEN statement_untuk_mengatasi_error; ... END;

Page 36: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

36

Contoh Lain

SET SERVEROUTPUT ON

DECLARE

teks VARCHAR2 (20);

BEGIN

teks := ‘Belajar Oracle’;

DBMS_OUTPUT.PUT_LINE(teks);

END;

/

Tipe Data

• Numerik

– NUMBER, BINARY_INTEGER, DEC, DOUBLE PRECISION, INTEGER, INT,

NUMERIC, REAL, SMALLINT

• Karakter

– VARCHAR2, CHAR, LONG

• DATE

• BOOLEAN

• ROWID

Tipe Data tambahan :

• RECORD

• ARRAY

Variable

Adalah sebuah peubah yang digunakan untuk menampung sebuah nilai di memori komputer.

Contoh

DECLARE

X integer;

Page 37: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

37

Alamat varchar2(40);

No_induk char(8);

.....

BEGIN

X := 12;

Alamat := ‘Gelatik Dalam 391, Bandung’;

No_induk := ‘DOG29549’;

END;

Konstanta

Digunakan untuk menyimpan sebuah nilai di memori komputer.Nilai yang disimpan bersifat

tetap (konstan).

Contoh :

DECLARE

pi CONSTANT real:= 3.14;

lebar CONSTANT integer := 100;

Komentar

Digunakan untuk memudahkan proses maintenance

Jenis komentar :

• /* ... */ : untuk beberapa baris komentar

• -- ... : untuk satu bari komentar

Contoh :

/* Ini adalah komentar Oracle */

-- Ini juga komentar Oracle

Contoh dengan eksepsi :

SET SERVEROUTPUT ON

DECLARE

Page 38: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

38

X Integer;

BEGIN

X := ‘Belajar Oracle’;

DBMS_OUTPUT.PUT_LINE( TO_CHAR(X) );

EXCEPTION

WHEN VALUE_ERROR THEN

DBMS_OUTPUT.PUT_LINE (‘Kesalahan pada pengisisan

nilai’);

END;

/

LATIHAN

1. Ketik perintah berikut ini :

SQL> BEGIN

SQL> DBMS_OUTPUT.PUT_LINE(‘Belajar Oracle’);

SQL> END;

SQL> /

Apa yang terjadi ?

2. Ketik perintah berikut ini :

SQL> SET SERVEROUTPUT ON

SQL> /

Apa yang terjadi ? Menurut anda apa fungsi dari set serveroutput on ?

3. Koneksikan database anda ke user pembelian, kemudian ketik perintah berikut ini :

SQL> declare

SQL> nama varchar2(30);

SQL> alamat varchar2(30)

SQL> BEGIN

SQL> select nama_customer,alamat_customer into nama,alamat

SQL> from customer where kode_customer=’c001’;

SQL> dbms_output.put_line(‘Data Customer dengan kode c001’);

SQL> dbms_output.put_line(‘Nama : ‘ || nama);

SQL> dbms_output.put_line(‘Alamat : ‘ || alamat);

Page 39: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

39

SQL> end;

SQL> /

a. Apa yang terjadi ?

b. Menurut anda apa fungsi nama dan alamat ?

c. Mengapa untuk membuat blok SQL/PL tersebut harus dikoneksikan ke user pembelian ?

KESIMPULAN

RECORD DALAM PL/SQL ORACLE

Record merupakan struktur data komposit atau gabungan dari beberapa field, baik yang bertipe

sama maupun berbeda. Kita dapat menggunakan record untuk menyimpan variabel-variabel yang

berhubungan, Misalanya record Alamat dimana di dalamnya terdapat field NamaJalan, NoJalan,

NoRumah, Kota, kodePos dan lain-lain.

Untuk mendefinisikan suatu variabel yang bertipe Record, kita menggunakan Sebuah Keyword

yaitu RECORD

Syntax:

Contoh :

TYPE Alamat IS RECORD (

TYPE NamaRecord IS RECORD (

Field1 TipeData,

Field2 TipeData,

);

Page 40: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

40

NamaJalan VARCHAR2(100),

NOJalan NUMBER,

NoRumah VARCHAR2(5),

Kota VARCHAR2(20)

);

TYPE PemilikRumah IS RECORD(

Nama VARCHAR2(100),

Domisili Alamat -- menggunakan tipe record alamat

);

LATIHAN

Ketik perintah berikut ini

SQL> SET SERVEROUTPUT ON

SQL> DECLARE

2 TYPE Alamat IS RECORD (

3 NamaJalan VARCHAR2(100),

4 NOJalan NUMBER,

5 NoRumah VARCHAR2(5),

6 Kota VARCHAR2(20)

7 );

8 TYPE PemilikRumah IS RECORD(

9 Nama VARCHAR2(100),

10 Domisili Alamat

11 );

12 REC PemilikRumah; -- REC merupakan nama variabel

13 BEGIN

14 REC.Nama := 'Ahmad Budianto;

15 REC.Domisili.NamaJalan := 'Jalan Melati';

16 REC.Domisili.NoJalan := 10;

17 REC.Domisili.NoRumah := '10B' ;

18 REC.Domisili.Kota := 'Palembang' ;

19 DBMS_OUTPUT.PUT_LINE (REC.Nama);

20 DBMS_OUTPUT.PUT_LINE (rec.domisili.namaJalan ||' ' ||

21 rec.domisili.noJalan || ‘ ’ ||’No’ || ‘ ‘||

22 rec.domisili.NoRumah || ' ' || rec.domisili.kota);

23 END;

Page 41: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

41

24 /

Tuliskan hasil outputnya ? dan Berikan kesimpulan anda ?

KESIMPULAN :

ARRAY DALAM PL/SQL ORACLE

Array adalah tipe data bentukan yang dapat menyimpan sekumpulan nilai dari tipe data yang

sama dan dikemas dalam bentuk larik. Nilai dari elemen elemen array dapat diacu atau diakses

melalui indeksnya, perlu diperhatikan bahawa indeks array dari tipe data yang mempunyai

keterurutan, seperti halnya tipe integer.

Syntax:

Contoh :

DECLARE

TYPE array_KU IS TABLE OF CHAR(5)

INDEX BY BINARY_INTEGER;

X array_ku;

LATIHAN

Ketik perintah berikut ini

SQL> SET SERVEROUTPUT ON

SQL> DECLARE

2 TYPE LARIK IS TABLE OF NUMBER

TYPE NamaRecord IS TABLE OF tipe_data

INDEX BY BINARY_INTEGER ;

Page 42: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

42

3 INDEX BY BINARY_INTEGER ;

4 A LARIK ;

5 BEGIN

6 A(1) := 10; A(2) := 20;

7 A(3) := 30; A(4) := 40;

8 dbms_output.put_line(‘Nilai elemen larik ke 1 : ’|| to_char(a(1)));

9 dbms_output.put_line(‘Nilai elemen larik ke 2 : ’|| to_char(a(2)));

10 dbms_output.put_line(‘Nilai elemen larik ke 3 : ’|| to_char(a(3)));

11 dbms_output.put_line(‘Nilai elemen larik ke 4 : ’|| to_char(a(4)));

12 END;

13 /

Tuliskan hasil outputnya ? dan Berikan kesimpulan anda ?

KESIMPULAN :

PERCABANGAN DALAM PL/SQL ORACLE

Setiap pembahasan materi PL/SQL Oracle selalu tidak dapat dipisahkan dengan pembahasan

materi percabangan. Yang dimaksud dengan Percabangan adalah opsi atau pilihan yang

didasarkan atas satu atau beberapa kondisi tertentu. Sebuah atau beberapa statemen akan di

jalankan jika kondisi tersebut bernilai TRUE dan sebaliknya tidak akan dieksekusi jika kondisi

tersebut tidak terpenuhi.

Secara umum di dalam PL/SQL Oracle, struktur percabangan dibagi menjadi 3 struktur, yaitu :

A. Struktur percabangan dengan satu kondisi

B. Struktur percabangan dengan dua kondisi

C. Struktur percabangan dengan tiga kondisi

Page 43: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

43

Bentuk Umum Penulisan

Struktur percabangan dengan satu kondisi

Struktur percabangan dengan dua kondisi

Struktur percabangan dengan tiga kondisi atau lebih.

LATIHAN

1. Buatlah sebuah blok SQL/PL yang menentukan sebuah bilangan bulat apakah termasuk

kedalam bilangan genap atau ganjil

Ketik perintah berikut ini

SET SERVEROUTPUT ON

DECLARE

BIL INTEGER := 100;

BEGIN

IF MOD(BIL,2)=0 THEN

DBMS_OUTPUT.PUT_LINE(TO_CHAR(BIL)|| ' adalah bilangan Genap');

END IF;

END;

/

Tuliskan hasil outputnya ? dan Berikan kesimpulan anda ?

IF kondisi THEN

Statemen ;

END IF;

IF kondisi THEN

Statemen 1 ;

ELSE

Statemen 2 ;

END IF;

IF kondisi 1 THEN

Statemen A ;

ELSIF kondisi 2 THEN

Statemen B ;

ELSE

Statemen C;

END IF;

Page 44: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

44

2. Ubahlah blok SQL/PL pada soal no 1 dengan menggunakan percabangan dengan 2 kondisi.

Kondisi pertama menyatakan bilangan genap dan kondisi kedua menyatakan bilangan ganjil

3. Ubahlah blok SQL/PL pada soal no 1 dengan menggunakan percabangan dengan 3 kondisi.

Kondisi pertama menyatakan bilangan genap, kondisi kedua menyatakan bilangan ganjil dan

kondisi ketiga menyatakan bilangan negative.

KESIMPULAN :

PENGULANGAN DALAM PL/SQL ORACLE

Didalam Oracle ada 3 struktur pengulangan, yaitu :

1. Simple Loop

2. While-Loop

3. For-Loop.

Bentuk Umum Penulisan

Simple loop

While loop

For loop

LOOP

Statemen;

END LOOP;

WHILE kondisi LOOP

Statemen;

END LOOP;

Page 45: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

45

LATIHAN

1. Buatlah sebuah blok SQL/PL yang menampilkan kalimat ‘Sukses dengan oracle’ sebanyak

10 kali

Ketik perintah berikut ini

SET SERVEROUTPUT ON

DECLARE

I integer;

BEGIN

I := 0;

LOOP

I:=I +1;

DBMS_OUTPUT.PUT_LINE(‘Sukes dengan Oracle’);

EXIT WHEN i=10;

END LOOP;

END;

/

Tuliskan hasil outputnya ? dan Berikan kesimpulan anda ?

2. Ubahlah blok SQL/PL pada soal no 2 dengan menggunakan pengulangan dalam bentuk while

loop

3. Ubahlah blok SQL/PL pada soal no 2 dengan menggunakan pengulangan dalam bentuk for

loop

KESIMPULAN :

FOR variable IN indeks_awal .. indeks_akhir LOOP

Statemen;

END LOOP;

Page 46: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

46

PROSEDUR DAN FUNGSI

PROSEDUR

Sebenarnya prosedur pada PL/SQL hampir sama dengan prosedur bahasa pemrograman lainnya.

Prosedur memiliki header dan body. Header mengandung nama prosedur dan parameter atau

variabel yang digunakan oleh prosedur. Sedangkan body mengandung bagian deklarasi, bagian

eksekusi, dan bagian exception handling.

Sintaks umum untuk membuat prosedur

Eksekusi Prosedur

Unutuk melakukan eksekusi terhadap suatu prosedur dari luar blok PL/SQL, kita harus

menggunkan statemen EXECUTE, atau cukup dituliskan dengan EXEC saja. Namun apabila

Anda ingin memanggil prosedur dari dalam blok PL/SQL, maka statemen EXECUTE tidak perlu

di tuliskan. Berikut ini bentuk umumnya.

FUNGSI

Function adalah jenis PL/SQL block yang menghasilkan satu nilai. Secara umum, function

digunakan melakukan perhitungan, mengecek eksistensi dan kevalidan suatu data. Function bisa

dilibatkan dalam expresi. Function bisa disimpan dalam database sebagai object schema,

sehingga suatu function bisa digunakan berulangkali tanpa harus melakukan parsing dan compile

ulang.

CREATE [OR REPLACE] PROCEDURE nama_prosedur (parameter1 tipedata,

parameter2 tipedata,…)

IS

Variable_variabel lokal

BEGIN

Statemen ;

END;

EXEC[UTE] NamaProsedur (daftar_parameter);

Page 47: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

47

Ekesekusi Fungsi

Tidak seperti prosedur yang dalam eksekusinya membutuhkan perintah EXECUTE, pada fungsi

kita dapat langsung memasukkan nilainya ke dalam suatu variable yang sama tipedatanya

maupun melalui statemen SQL. Atau dapat juga melalui statemen SQL seperti yang ditunjukkan

oleh kode berikut .

Tabel Dual adlaah table dummy yang disediakan oleh Oracle.

PARAMETER

Dalam Oracele, parameter diklasifikasikan menjadi tiga jenis, yaitu parameter masukan, keluarn

dan masukan-keluaran.

1. Parameter Masukan

Parameter masukan adalah parameter yang berguna untuk menyimpan nilai yang

digunakn sebagai input di dalam badan prosedur maupun fungsi. Parameter ini ditandai

dengan mode IN.

2. Paramater Keluaran

Parameter keluaran adalah parameter yang menampung nilai hasil dari suatu proses yang

dilakukan dalam sub program.Pada kenyataannya parameter keluaran lebih sering di

temui di dalam prosedur dari pada didalam fungsi. Parameter ini ditandai dengan mode

OUT.

3. Parameter Masukan – Keluaran

CREATE OR REPLACE FUNCTION nama_fungsi (parameter1 tipedata, parameter2

tipedata,…)

RETURN tipedata_fungsi

IS

Variable_variabel_lokal

BEGIN

Statemen;

RETURN nilai_fungsi;

END;

SELECT nama_fungsi FROM DUAL ;

Page 48: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

48

Parameter ini merupakan parameter gabungan dari kedua jenis diatas. Parameter ini

berperan sebagai parameter masukan sekaligus parameter keluaran. Parameter ini

ditandai dengan mode IN OUT.

LATIHAN

1. Koneksikan database anda ke user pembelian kemudian buatlah sebuah prosedur yang dapat

menampilkan nama supplier dari table supplier yang memiliki kode ‘s001’.

Ketik perintah berikut ini :

create or replace procedure cari_nama_suplier

is vnamasuplier suplier.nama_suplier%TYPE;

begin

select nama_suplier into vnamasuplier from suplier where

kode_suplier=’s001’;

dbms_output.put_line(‘Namanya : ’|| vnamasuplier);

end;

/

a. Tuliskan hasil outputnya ?

b. Apakah nama suplier dengan kode ‘s001’ tampil di layar ?

c. Apa maksud dari suplier.nama_suplier%TYPE ?

Ketik perintah berikut ini :

SQL> Set serveroutput on

SQL> Execute cari_nama_suplier;

a. Apakah nama suplier dengan kode ‘s001’ tampil di layar ?

b. Tuliskan kesimpulan anda ?

2. Buatlah sebuah fungsi yang dapat menampilkan nama supplier dari table supplier yang

memiliki kode ‘s001’.

Ketik perintah berikut ini :

create or replace function cari_namasuplier

return suplier.nama_suplier%TYPE

is vnamasuplier suplier.nama_suplier%TYPE;

begin

select nama_suplier into vnamasuplier from suplier where

kode_suplier=’s001’;

Page 49: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

49

return vnamasuplier;

end;

/

a. Tuliskan hasil outputnya ?

b. Apakah nama suplier dengan kode ‘s001’ tampil di layar ?

Ketik perintah berikut ini :

Declare

Nama suplier.nama_suplier%TYPE;

Begin

Nama := cari_namasuplier;

dbms_output.put_line(Nama);

End;

/

a. Apakah nama suplier dengan kode ‘s001’ tampil di layar ?

b. Tuliskan kesimpulan anda ?

3. Ubahlah prosedur pada soal no 1 sehingga prosedur dapat menentukan nama suplier

berdasarkan kode suplier yang dimasukkan sebagai parameternya !

4. Ubahlah prosedur pada soal no 1 sehingga prosedur dapat mencari nama suplier dengan kode

suplier tertentu dimana nama suplier yang didapatkan tersebut disimpan ke dalam parameter

keluaran !

5. Ubahlah prosedur pada soal no 1 sehingga prosedur tersebut dapat mencari nama suplier

dengan kode tertentu menggunakan parameter masukan - keluaran !

KESIMPULAN :

Page 50: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

50

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.

Aktivasi trigger didasarkan pada event yang terjadi di dalam tabel tersebut sehingga trigger dapat

membantu dalam menjaga integritas dan konsistensi data. Implementasi trigger yang sering

ditemui dalam dunia nyata adalah untuk mengeset dan mengubah nilai kolom dalam suatu tabel

sehingga validasi nilai dari tabel tersebut akan terjaga. Adanya trigger dalam database akan

meringankan kita dalam pembuatan aplikasi karena di dalam aplikasi yang kita buat, kita tidak

perlu lagi untuk melakukan validasi data.

MEMBUAT TRIGGER

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.

Daftar event yang mungkin digunakan untuk mengaktifkan trigger:

Sintak untuk membuat trigger adalah

CREATE OR REPLACE TRIGGER nama_trigger

(BEFORE | AFTER) statement ON nama_tabel

FOR EACH ROW

DECLARE

--- berisi deklarasi variable

BEGIN

--- berisi statemen statement yang akan di eksekusi

END;

/

Page 51: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

51

Untuk mencoba pembuatan trigger pada oracle persiapkan terlebih dahulu user atau database

sebagai berikut ini

User database: penjualan

Table I : Barang

Colom pada table barang

Isi pada table barang

Tabel II : Pasok

Column pada table pasok :

Data pada table pasok :

Page 52: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

52

Tabel III : Pembelian

Column pada table pembelian :

Data pada table pembelian :

LATIHAN

1. Ketikanlah perintah trigger berikut ini pada SQL command line anda

2. Setelah itu periksalah pengaruh trigger yang telah di buat dengan cara melakukan update

terhadap table barang, apa yang terjadi ?

3. Menurut anda apa hubungan antara perintah trigger pada soal no 1 dengan perintah

update pada soal no 2 ?

4. Ketiklah perintah trigger berikut ini

create or replace trigger tr_coba

after update on barang

for each row

begin

dbms_output.put_line('Tabel barang telah diupdate'); end;

/

Set server output on

Update barang

Set stok_barang = 15 where kode_barang=’B001’;

Page 53: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

53

5. Setelah itu periksalah pengaruh trigger pada soal no 3 dengan cara melakukan

penambahan data pada table barang namun stok_barang yang ditambahkan bernilai

negative (minus), apa yang terjadi ?

6. Menurut anda apa hubungan antara perintah trigger pada soal no 4 dengan perintah

menambah pada soal no 5 ?

ALIAS DI DALAM TRIGGER

Di dalam trigger dikenal istilah alias atau referensi, yaitu sejenis variabel yang menyimpan nilai

dari suatu kolom di dalam tabel. Alias tersebut terbagi menjadi dua yaitu :new dan :old. Alias

:new untuk menyimpan nilai terbaru sedangkan alias :old untuk menyimpan nilai lama.

Ketersediaan Alias Di dalam Trigger

� Pada statement UPDATE, terdapat alias :new dan :old

� Pada statement DELETE, hanya terdapat alias :old

� Pada statement INSERT, hanya terdapat alias :new

MANAGING TRIGGER

Mengaktifkan atau menonaktifkan trigger

Syntax :

ALTER TRIGGER nama_trigger ENABLE | DISABLE;

create or replace trigger tr_cekstokbarang

before insert on barang

for each row

begin

if(:new.stok_barang < 0) then

:new.stok_barang := 0;

dbms_output.put_line('Stok barang diubah menjadi 0');

end if;

end;

/

Set serveroutput on

Insert into barang values (‘B006’,’kursi’,’unit’,-5);

Select * from barang;

Page 54: Universitas riwijaya - si.ilkom.unsri.ac.idsi.ilkom.unsri.ac.id/.../2018/11/Praktikum-Basis-Data-II-FIX.pdf · INSTALASI ORACLE XE & ADMINISTRASI USER ... LATIHAN 1. Buka SQL*Plus

54

Mengaktifkan atau menonaktifkan semua trigger pada sebuah tabel

Syntax :

ALTER TABLE nama_tabel ENABLE | DISABLE ALL TRIGGERS;

Menghapus trigger

Syntax :

DROP TRIGGER nama_trigger;

LATIHAN :

1. Ketiklah perintah trigger berikut ini

2. Setelah itu periksalah pengaruh trigger pada soal no 1 dengan cara menambahkan data

pada table pasok , lalu lihat apa yang terjadi pada table pasok dan table barang ?

3. Jika dilihat dari perubahan data yang terjadi pada table barang, Menurut anda apa

hubungan antara perintah trigger pada soal no 1 dengan perintah menambah data pada

soal no 2 ?

KESIMPULAN :

create or replace trigger tr_insert_pasok

after insert on pasok

for each row

begin

update barang set stok_barang=stok_barang +:new.jumlah_pasok; end;

/

Insert into pasok values (‘P004’,’B002’,’s002’,5);

Select * from pasok;

Select * from barang;