Post on 10-Jul-2015
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 1/44
BAB II
LANDASAN TEORI
Pada bab ini diuraikan beberapa teori dasar tentang Oracle dan perintah-
perintah dasar dalam Oracle.
2.1 Basis data Oracle
Merupakan basis data relasional yang terdiri dari kumpulan data dalam suatu
sistem manajemen basis data RDBMS. Perusahaan perangkat lunak Oracle
memasarkan jenis basis data ini untuk bermacam-macam aplikasi yang bisa
berjalan pada banyak jenis dan merk perangkat keras komputer (platform).
Basis data Oracle ini pertama kali dikembangkan oleh Larry Ellison, Bob
Miner dan Ed Oates lewat perusahaan konsultasinya bernama Software
Development Laboratories (SDL) pada tahun 1977. Pada tahun 1983,
perusahaan ini berubah nama menjadi Oracle Corporation sampai sekarang.
2.2 Kehandalan Oracle
Beberapa keunggulan database oracle sebagai produk database yang paling
banyak dipakai di kalangan programer antara lain sebagai berikut :
a. Scalability
kemampuan menangani banyak user yang melakukan hubungan / koneksi
secara simultan tanpa kekurangannya performa secara signifikan. Dalam
dokumentasi oracle disebutkan bahwa oracle database sanggup melayani
puluhan ribu user secara simultan.
b. Reliability
3
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 2/44
kemampuan untuk melindungi data dari kerusakan jika terjadi kegagalan
fungsi pada system
c. Serviceability
kemampuan untuk mendeteksi masalah, kecepatan dalam mengoreksi
kesalahan dan mampu melakukan konfigurasiulang struktur data.
d. Stability
kemampuan untuk tidak crash karena beban kerja yang tinggi
e. Availability
kemampuan dalam menangani crash atau failure agar service dapat tetap
berjalan
f. Multiplatform
dapat digunakan pada banyak system operasi
g. Mendukung data yang cukup besar. Menurut dokumentasi oracle
dapat menampung sampai lebih dari 512 petabytes (1 petabytes =
1.000.000 gigabytes)
h. System scurity yang cukup handal.
i. Mendukung database berorientasi object
j. Dapat menampung hampir semua tipe data seperti text, image,
sound, video dan time series.
Keunggulan – keunggulan diatas membuat oracle banyak di gunakan pada
aplikasi internet maupun client server pada LAN.
2.3 Siklus Pengembangan Sistem
Siklus pengembangan sistem meliputi :
4
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 3/44
a. Strategi dan analisis
Menganalisa kebutuhan bisnis, meng-interview manajer dan user untuk
mengidentifikasi kebutuhan sistem, dan menentukan strategi yang
dipakai.
b. Desain
Mendesain database berdasarkan model yang dikembangkan dalam fase
strategi dan analisis.
c. Membangun Sistem dan Dokumentasi
Membangun prototipe sistem, membuat tabel dan object2 yang
mendukung database, mendevelop dokumentasi user atau manual
operasi.
d. Transisi
Memperbaiki prototipe, melakukan transformasi dari aplikasi menjadi
produksi dengan melakukan pengujian, konversi data yang ada, dan
melakukan modifikasi bila diperlukan.
e. Produksi
Siap untuk men-deliver sistem pada user. Mengawasi performansi dan
melakukan perbaikan dan peningkatan fasilitas jika diperlukan.
2.4. Penyimpanan Data pada Media yang berbeda
Suatu Organisasi dapat menyimpan data dalam bermacam media dengan
format yang berbeda-beda semisal dokumen hard-copy dalam filling
cabinet, atau data yang disimpan dalam spreadsheet atau database.
Database adalah kumpulan informasi yang terorganisasi. Untuk mengelola
database, dibutuhkan DBMS (Database Management System). DBMS ini
dapat menyimpan, memanggil dan memodifikasi data. Ada empat tipe
database : hirarki, network, relasional dan object relasional.
5
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 4/44
2.5. Konsep Database Relasional
Prinsip dari model relasional pertama kali dikenalkan oleh Dr. E.F. Codd
pada bulan Juni 1970 pada papernya yang berjudul “A Relational Model of
Data for Large Shared Data Banks”. Pada paper tersebut Dr. E.F. Codd
mengusulkan model relasional untuk sistem database.
Model relasional lebih popular daripada tipe model database lain seperti
hirarki dan network, dikarenakan keserhanaannya. Relational Database
Management System (RDBMS) menjadi sangat populer karena mudah
digunakan dan strukturnya bersifat fleksibel. Komponen dari model
relasional adalah :
a. Kumpulan obyek atau relasi yang menyimpan data
b. Kumpulan operator yang dapat digunakan pada relasi untuk
menghasilkan relasi yang lain.
c. Integritas data untuk akurasi dan konsistensi.
2.6. Definisi Database Relasional
Database relasional menggunakan relasi atau tabel dua dimensi untuk
menyimpan informasi. Sebagai contoh, misal akan disimpan informasi
tentang pegawai dalam suatu perusahaan, maka pada database relasional
dibuat beberapa tabel untuk menyimpan kumpulan informasi tentang
pegawai semisal tabel pegawai, tabel departemen dan tabel gaji.
2.7. Model Data
Model adalah hasil dari proses desain. Perekayasa teknik membangun
model sebelum melakukan produksi, dan untuk mengekplorasi ide dan
meningkatkan pemahaman terhadap desain database.
6
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 5/44
Model membantu komunikasi dalam konsep berpikir manusia. Model
dapat digunakan untuk: komunikasi, kategorisasi, penggambaran,
spesifikasi, investigasi, dan analisa.
2.8. ER Model
Model dibuat dengan Entity-Relationship diagram. ER Model terdiri dari
dua simbol utama yaitu Entity dan atribut. Entity adalah object dari dunia
nyata, sedangkan atribut adalah komponen yang dimiliki oleh suatu entity.
Dalam ER Model, entity- entity saling terhubung dalam suatu relasi.
2.9. Merelasikan Banyak Tabel
Sebuah database terdiri dari tabel-tabel. Misal database perusahaan
terdiri dari tabel karyawan, departemen, gaji, dll. Tabel terdiri dari atribut
atau kolom-kolom. Misal tabel karyawan memiliki kolom nomer_induk,
nama_pegawai, nomer_department, dll. Masing-masing tabel memiliki
kolom yang mengidentifikasi data yang ada di tabel secara unik, kolom
tersebut dinamakan primary key (PK).
Suatu tabel bisa memiliki foreign key (FK) atau kunci tamu, yaitu
kolom yang menjadi primary key di tabel yang lain.
7
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 6/44
2.10. Dasar Penulisan Statement Oracle
2.10.1 Membuat table
Misalkan kita akan membuat table sederhana dosen, sintagnya sebagai berikut
:
Untuk membuat Table dosen
CREATE TABLE DOSEN(
NIP Char(3) Not Null,
Nama_d char(10) not null,
Alamat_d char (20),
PRIMARY KEY(NIP)
);
Untuk membuat Table mahasiswa
CREATE TABLE MHS(
NIM Char(3) Not Null,
Nama_mhs char(10) not null,
Alamat_mhs char (20),
NIP_wali char (3),
PRIMARY KEY(NIM),
FOREIGN KEY (NIP_wali)
);
8
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 7/44
Tipe Data
Terdapat banyak tipe data yang disediakan oleh sistem basis data Oracle.
Tipe-tipe data utama adalah character, number, date, dan RAW.
VARCHAR2(n)
Karakter dengan panjang bervariasi dengan panjang maksimum n. Panjang
minimum 1 dan maksimum 2000.
CHAR(n)
Karakter dengan panjang tetap dengan panjang maksimum n. Nilai default
1, panjang maksimum 255.
NUMBER
Angka dengan tingkat panjang sampai 38 digit.
NUMBER( p,s)
Angka dengan panjang maksimum p dengan jangkauan 1 sampai 38 digit
dan s desimal.
DATE
Tanggal dan waktu antara 1 Januari 4712 S.M sampai 31 Desember 4712
M.
LONG
Karakter dengan panjang bervariasi hingga 2 gigabytes. Hanya satu kolom
LONG yang diperbolehkan pada setiap table.
RAW dan LONG RAW
Sama dengan VARCHAR2 dan LONG, namun digunakan untuk
menyimpan data byte-oriented atau binary misalnya image.
2.10.2
Mengubah Table
9
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 8/44
Setelah kita menciptakan table kita dapat memodifikasi strukturnya
dengan menggunakan perintah ALTER TABLE. Kita dapat menambah
kolom, menghapus kolom, memodifikasi panjang kolom, menambah atau
menghapus constraints dan mengenblekan atau men – disable kan
constrain tersebut menggunakan perintah.
Misalnya dari table mahasiswa yang sudah ada kita rubah atau kita
tambahkan tanggal lahir,sintagnya sebagai berikut :
Menambahkan ke table mahasiswa
ALTER TABLE MHS ADD tanggal_lahir date;
Menambahkan ketable dosen
ALTER TABLE DOSEN ADD tanggal_lahir date;
2.10.3 Menghapus Table
Jika kita ingin menghapus table, baik data maupun strukturnya, dapat
dilakukan dengan perintah DROP TABLE. Perintah-perintah lain yang
berpengaruh terhadap table adalah :
RENAME, untuk mengubah nama table
TRUNCATE, untuk menghapus data dari table
COMMENT, untuk menambahkan komentar tentang suatu objek
database ke dalam data dictionary
Sintag untuk menghapus table :
DROP TABLE<table_name>
Dimana :
Table_name adalah nama table yang akan dihapus
Catatan:
10
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 9/44
Perintah DROP TABLE, sekali dieksekusi, tidak dapat diputar balik.
Oracle tidak memberikan pertanyaan ketika kita menjalankan perintah
DROP TABLE. Jika kita memiliki table tersebut atau memiliki privilege
dengan level tinggi, maka table segera terhapus. Seluruh perintah-perintah
DDL mengeksekusi commit, sehingga menyebabkan transaksi menjadi
permanen. Seluruh perintah-perintah tersebut termasuk ke dalam perintah-
perintah Data Definition Languate (DDL). Ketika kita mengeksekusi
statement-statement ini, akan terjadi proses commit otomatis. Kita tidak
dapat me-rollback perintah-perintah DDL. Oleh sebab itu, berhati-hatilah
ketika menggunakannya.
2.10.4 Memodifikasi Column
Kita dapat memodifikasi kolom dengan menggunakan perintah ALTER
TABLE dengan klausa MODIFY. Modifikasi kolom dapat mengandung
perubahan tipe data, panjang, nilai default, dan constraint NOT NULL.
Sintaks :ALTER TABLE table
MODIFY (column datatype [DEFAULT expr][NOT NULL]
[, column datatype] . . .);
dimana:
• table: nama table
• column: nama kolom
•
datatype: tipe data dan panjangnya• DEFAULT expr: menentukan nilai default dari kolom
• NOT NULL : menambahkan contraint NOT NULL untuk kolom
Aturan Penggunaan
• Memperbesar lebar kolom atau presisi untuk kolom bertipe numerik
11
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 10/44
• Memperkecil lebar kolom jika kolom hanya mengandung nilai null atau
jika table tidak memiliki data
• Mengubah tipe data jika kolom mengandung nilai null
• Mengkonversi tipe data CHAR menjadi VARCHAR2 atau sebaliknya, jika
kolom mengandung nilai null atau jika kita tidak mengubah panjang tipe
datanya
• Perubahan ke nilai default akan berefek kepada proses insert berikutnya,
tidak terhadap data yang sudah ada
• Menambahkan constraint NOT NULL hanya jika tidak terdapat nilai null
pada kolom
Versi Oracle terbaru menyediakan kemampuan untuk mengubah nama
kolom, dengan perintah:
ALTER TABLE table
RENAME COLUMN old_name TO new_name;
2.10.5 Menambahkan dan Menghapus Contraint
Constraint dapat didefinisikan pada salah dua level berbeda.
Column Constraint Didefinisikan bersama-sama dengan definisi
kolom yang memilikinya. Pada level ini kita dapat mendefinisikan
seluruh tipe constraint.
Table Constraint
Didefinisikan terpisah dari definisi kolom yang memilikinya. Pada level
ini kita dapat mendefinisikan seluruh tipe constraint kecuali NOT NULL.
Sintaks – Constraint Level Kolom
column [CONSTRAINT constraint_name] constraint_type
Sintaks – Constraint Level Kolom
12
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 11/44
column,
[CONSTRAINT constraint_name] constraint_type
(column, …),
Contoh:
Mendefinisikan constraint PRIMARY KEY (level kolom) untuk kolom
ID dari table REGION.
CREATE TABLE region
(id NUMBER(7)
CONSTRAINT region_id_pk PRIMARY KEY,
name VARCHAR2(50)
CONSTRAINT_region_name_nn NOT NULL
CONSTRAINT region_name_uk UNIQUE);
Mendefinisikan constraint PRIMARY KEY (level tabel) untuk kolom ID
dari table REGION.
CREATE TABLE region
(id NUMBER(7),
name VARCHAR2(50)
CONSTRAINT_region_name_nn NOT NULL
CONSTRAINT region_name_uk UNIQUE,
CONSTRAINT region_id_pk PRIMARY KEY(id));
Kita dapat menambah dan menghapus contraint pada table yang telah ada
dengan menggunakan perintah ALTER TABLE dengan klausa ADD atau
DROP.
Sintaks :
ALTER TABLE table
ADD [CONSTRAINT constraint] type (column);
13
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 12/44
dimana:• table: nama table
• contraint: nama contraint
• type: tipe contraint
• column: nama kolom yang terpengaruh oleh constraint
Catatan:
Sintaks constraint name adalah opsional, meskipun direkomendasikan.
Jika kita tidak memberi nama terhadap contraint, system akan menciptakan
nama contraint tersebut secara otomatis.
Aturan penggunaan
• Kita dapat menambah, menghapus, mengaktifkan, dan menonaktifkan
constraint, tetapi kita tidak dapat memodifikasi strukturnya
• Kita dapat menambahkan contraint NOT NULL terhadap kolom dengan
menggunakan klausa MODIFY dari perintah ALTER TABLE
Untuk menghapus constraint, kita dapat mengidentifikasi nama constraint dari
data dictionary views USER_CONSTRAINTS dan
USER_CONS_COLUMNS. Kemudian, kita dapat menggunakan perintah
ALTER TABLE dengan klausa DROP. Opsi CASCADE pada klausa DROP
menyebabkan seluruh constraint yang bergantung terhadap constraint yang
kita hapus akan ikut terhapus.
Sintaks
ALTER TABLE tableDROP PRIMARY KEY | UNIQUE (column) |
CONSTRAINT constraint [CASCADE];
dimana:
• table: nama table
• column: nama kolom dari constraint yang akan dihapus
• constraint: nama constraint
14
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 13/44
Catatan:
Ketika kita menghapus integrity constraint, constraint tersebut tidak lagi
dijalankan oleh Oracle dan tidak lagi tersedia di dalam data dictionary.
Ketentuan Penamaan Constraint
Seluruh constraint tersimpan pada data dictionary. Penamaan constraint
yang baik memudahkan kita jika suatu saat kita akan memodifikasi atau
menghapus constraint yang telah kita ciptakan. Jika kita tidak memberi nama
pada constraint yang kita ciptakan, maka otomatis Oracle akan memberikan
nama dengan format SYS_Cn, dimana n adalah nomor constraint.
Nama constraint sebaiknya memiliki format table_constraint_type . Sebagai
contoh apabila kita ingin menciptakan constraint PRIMARY KEY untuk
kolom ID dari tabel EMPLOYEE, maka nama constraint sebaiknya
EMPLOYEE_ID_PK. Keterangan mengenai simbol yang disarankan untuk
setiap jenis constraint dapat dilihat pada tabel berikut.
• Primary Key -> PK
• Unique -> UK
• Not Null -> NN
• Check -> CK
• Primary Key Kombinasi -> PK n
• Unique Kombinasi -> Uk n
Tipe – tipe Constraint
Oracle menyediakan lima constraint yang dapat digunakan untuk
memberikan batasan batasan operasi DML baik pada level kolom maupun
level table. Constraint level kolom adalah constraint yang hanya melibatkan
satu kolom saja dan didefinisikan langsung pada definisi kolom tersebut.
Sedangkan constraint level table melibatkan lebih dari satu kolom (composite
15
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 14/44
constraint) atau didefinisikan secara terpisah dari definisi kolom. Kelima
constraint tersebut adalah :
NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK
Dari kelima constraint tersebut di atas hanya constraint NOT NULL yang
dikhususkan untuk level kolom. Dan selebihnya bisa digunakan pada level
kolom maupun level table.
NOT NULL
Tipe ini hanya berlaku untuk level kolom. Bentuk umum klausa constrain
untuk tipe ini adalah sebagai berikut.
[CONSTRAINT constraint_name] NOT NULLConstraint NOT NULL bertujuan untuk membuat suatu kolom tidak boleh
berisi nilai null. Berikut sebuah contoh pemberian constraint terhadap
kolom no_peg dari table PEGAWAI.
ALTER TABLE PEGAWAI MODIFY (no_peg VARCHAR(8)
NOTNULL);
table altered
Contoh:Menentukan constraint NOT NULL pada kolom PHONE.
CREATE TABLE friend …
phone VARCHAR2(15) NOT NULL
Menentukan constraint NOT NULL pada kolom LAST_NAME.
Constraint diberi nama FRIEND_LAST_NAME_NN.
16
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 15/44
CREATE TABLE friend …
last_name VARCHAR2(15)
CONSTRAINT friend_last_name_nn NOT NULL, …
UNIQUE
Constraint ini berlaku pada level kolom maupun level table. Bentuk
constraint pada level kolom.
[CONSTRAINT constraint_name] UNIQUE
sedangkan bentuk umum pada level tabel adalah sebagai berikut.
[CONSTRAINT constraint_name] UNIQUE {col_1 [, col_2 [,
…[, col_n]]] }
Contoh:
Mendefinisikan constraint UNIQUE untuk kolom NAME dari tabel
REGION.
CREATE TABLE region …
name VARCHAR2(50)
CONSTRAINT region_name_uk UNIQUE, …
Jika constraint tersebut didefinisikan pada level table maka perintahnya
menjadi sebagai berikut.
CREATE TABLE employee …
name VARCHAR2(50), …
CONSTRAINT region_name_uk UNIQUE(name), …
Constraint UNIQUE ini bertujuan untuk membuat sebuah kolom atau
kombinasi dari beberapa kolom pada sebuah table menjadi bersifat unik.
Dengan demikian, didalam table tersebut tidak diperbolehkan ada dua
baris data yang nilai unique key-nya sama.
PRIMARY KEY
Constraint tipe ini juga berlaku pada level kolom maupun level
table.bentuk umumnya pada level kolom adalah sebagai berikut.
17
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 16/44
[CONSTRAIN constrain_name] PRIMARY KEY
Sedangkan bentuk umum pada level table adalah sebagai berikut
[CONSTRAIN constrain_name] PRIMARY KEY ( col_1 [,
col_2 [,….[, col_n]]] )
Contoh:
Mendefinisikan constraint PRIMARY KEY untuk kolom ID dari table
EMPLOYEE.
CREATE TABLE employee …
id NUMBER(7)
CONSTRAINT employee_id_pk PRIMARY KEY, …
Jika constraint tersebut didefinisikan pada level table maka perintahnya
menjadi sebagai berikut.
CREATE TABLE employee …
id NUMBER(7), …
CONSTRAINT employee_id_pk PRIMARY KEY (id), …
Constrain ini bertujuan untuk menentukan suatu kolom atau kombinasi
dari beberapa kolom sebagai primary key dari sebuah table. Primary key
merupakan identitas dari baris baris data pada suatu table. Sebagai
identitas ,primary key hanya boleh ada satu pada sebuah table, tentu saja
dapat berupa kombinasi kolom kolom . selain itu kolom atau kombinasi
kolom yang menjadi primary key tersebut tidak boleh diberi nilai NULL.
Dengan kata lain, primary key adalah unique key yang diberi constrain
NOT NULL. Sebagai catatan , sebuah primary key pada table tidak boleh
diberi constrain UNIQUE tetapi diperbolehkan diberi constrain NOT
NULL
FOREIGN KEY
Constrain ini bertujuan untuk menetapkan suatu kolom atau kombinasi
dari beberapa kolom menjadi foreign key dari sebuah table. Foreign key
serin disebut sebagai referential integrity constraint . kegunaaan foreign
18
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 17/44
key adalah untuk membentuk sebuah relasi antara suatu table dengan table
lainnya. Kolom atau kombinasi kolom yang menjadi foreign key pada
table anak (dependen atau chil tabel) mengacu ke kolom atau kombinasi
kolom yang menjadi primery key atau unique key pada rabel induk
(referent atau parent tabel) table induk dapat berupa table itu sendiri atau
table lainnya.
Bentuk umum klausa constraint untuk membuat sebuah FK pada level
kolom adalah sebagai berikut.
[CONSTRAIN constrain_name] REFERENCES [schema]
table [(coluum)] [ON DELETED < CASCADE │ SET NULL>]
Bentuk umum klausa constraint untuk membuat sebuah Foreign key pada
level tabel adalah sebagai berikut.
[CONSTRAIN constrain_name] FOREIGN KEY (col_list)
REFERENCES [schema.] table [ (col_list) ] [ON DELETED <
CASCADE │ SET NULL>]
Contoh:Mendefinisikan constraint FOREIGN KEY untuk kolom
DEPT_ID dari table EMPLOYEE yang mengacu kepada kolom ID dari
table DEPARTMENT.
CREATE TABLE employee …
dept_id NUMBER(7)
CONSTRAINT employee_dept_id_fk REFERENCES
department(id), …
Jika constraint tersebut didefinisikan pada level table maka perintahnya
menjadi sebagai berikut.
CREATE TABLE employee …
dept_id NUMBER(7), …
CONSTRAINT employee_dept_id_fk FOREIGN KEY (dept_id)
REFERENCES department(id), …
19
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 18/44
Pada kedua bentuk umum diatas terlihat bahwa kolom atau col_list setelah
table adalah bersifat opsional. Namun sebaiknya, columm atau col_list
tersebut dituliskan secara eksplisit agar oracle dapat memastikan kolom
atau kombinasi kolom yang mana yang dijadikan sebagai referensi. Hal ini
juga memudahkan pemahaman bagi orang yang membaca SQL statement
tersebut.
CHECK
Constrain CHECK dapat berlaku untuk level kolom maupun level table.
Bentuk umum klausa CHECK untuk kedua level tersebut sama saja, yakni
seperti yang ditunjukkan berikut.
[ CONSTRAINT constrain_name CHECK (condition) ]
Contoh:
Mendefinisikan constraint CHECK untuk kolom COMMISSION_PCT
dari table EMPLOYEE.
CREATE TABLE employee …
commission_pct NUMBER(4,2)
CONSTRAINT employee_commission_pct_ck
CHECK (commission_pct IN (10, 12.5, 15, 17.5, 20)), …
Jika constraint tersebut didefinisikan pada level table maka perintahnya
menjadi sebagai berikut.
CREATE TABLE employee …
commission_pct NUMBER(4,2), …
CONSTRAINT employee_commission_pct_ck
CHECK (commission_pct IN (10, 12.5, 15, 17.5, 20)),
Constrain CHECK berguna untuk membuat suatu kondisi yang harus
dipenuhi oleh setiap baris data didalam suatu table. Kondisi tersebut dapat
berupa salah satu dari kondisi kondisi berikut ini.
a. Kondisi perbandingan
20
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 19/44
b. Kondisi range
c. Kondisi LIKE
d. Kondisi EXISTS
Kondisi yang memenuhi adalah yang menghasilkan nilai TRUE atau
uknown untuk nilai NULL. Kondisi pada constraint CHECK disuatu table
dapat mengacu kesembarang kolom pada table tersebut tetapi tidak boleh
mengacu ke kolom – kolom pada table lainnya. Ketika oracle
mengevaluasi suatu kondisi pada constraint CHECK untuk sebuah baris
nama – nama kolom yang diberikan pada kondisi tersebut mengacu ke
nilai – nilai kolom pada baris tersebut.
2.10.6 Menghidupkan dan Mematikan Constraint
Kita dapat menghidupkan dan mematikan constraint tanpa menghapus atau
menciptakannya ulang dengan menggunakan perintah ALTER TABLE
dengan klausa ENABLE atau DISABLE.
Sintaks
ALTER TABLE table
DISABLE | ENABLE CONSTRAINT constraint [CASCADE];
Aturan penggunaan
• Jika kita menghidupkan constraint, constraint tersebut terpakai
pada seluruh data dalam table. Seluruh data dalam table harus memenuhi
ketetapan dari contraint tersebut.
• Jika kita menghidupkan contraint UNIQUE atau PRIMARY KEY,
maka UNIQUE dan PRIMARY KEY index otomatis diciptakan.
• Kita dapat menggunakan klausa ENABLE dan DISABLE baik
pada perintah CREATE TABLE maupun perintah ALTER TABLE.
• Klausa CASCADE mematikan constraint yang bergantung
dibawahnya
21
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 20/44
2.10.7 Mengubah Nama dan Menghapus Isi TablePerintah-perintah DDL tambahan termasuk perintah RENAME, yang
mana digunakan untuk mengubah nama table, view, sequence, atau
synonym, dan perintah TRUNCATE TABLE, yang mana digunakan untuk
me
nghapus seluruh data dari table dan untuk membebaskan tempat
penyimpanan yang digunakan oleh table tersebut.
Sintaks – Perintah RENAME
RENAME old_name TO new_name;
Kita harus merupakan pemilik objek yang akan diubah namanya
Sintaks – Perintah TRUNCATE
TRUNCATE TABLE table;
Kita harus merupakan pemilik table atau memiliki system privilege
DELETE TABLE untuk dapat melakukan TRUNCATE terhadap table.
Catatan:
Perintah DELETE dapat juga menghapus seluruh data dari table, tetapi ia
tidak membebeaskan tempat penyimpanan yang digunakan oleh table
tersebut.
2.10.8 Menambahkan Komentar Terhadap Table
Kita dapat menambahkan komentar hingga 2000 bytes, terhadap column,table, view, atau snapshot dengan menggunakan perintah COMMENT.
Komentar tersimpan didalam data dictionary dan dapat dilihat didalam
salah satu data dictionary views berikut didalam kolom COMMENTS:
ALL_COL_COMMENTS
USER_COL_COMMENTS
ALL_TAB_COMMENTS
22
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 21/44
USER_TAB_COMMENTS
Sintaks
COMMENT ON TABLE table | COLUMN table.column IS ‘text’;
dimana:
• table: nama table
• column: nama column
• text: isi komentar
Contoh:Menambahkan komentar pada table EMPLOYEE.
COMMENT ON TABLE employee IS ‘Employee Information’;
Menghapus komentar pada column.
COMMENT ON COLUMN employee.last_name IS ”;
2.11 FunctionStored function tidak berbeda dengan stored procedure. Perbedaan satu-
satunya adalah stored function selalu mempunyai nilai balik. Untuk
membedakannya dengan function yang di dalam package, biasanya stored
function disebut dengan istilah stand-alone stored function.
2.12 Procedure
Procedure adalah sebuah blok PL/SQL yang dapat berdiri sendiri serta
dikompilasi untuk selanjutnya masuk kedalam skema database. Nama procedure
yang dibuat kemudian menjalankan object dengan type procedure.
Stored procedure adalah skema object yang berisi sekumpulan SQL
statement dan perintah-perintah PL/SQL yang disimpan di database dan bekerja
sebagai sebuah unit yang dapat mengerjakan sekumpulan tugas. Stored procedure
sering disebut dengan procedure saja.
23
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 22/44
2.12.2 Membuat dan Menjalankan Procedure.
Untuk membuat sebuah procedure sebenarnya tidak berbeda
dengan pembuatan block PL/SQL biasa. Bentuk umum statement untuk
membuat sebuah procedure adalah sebagai berikut.
CREATE [OR REPLACE] PROCEDURE [schema.] procedure_name
({ argument [ IN | OUT ] datatype [ DEFAULT value ] }) ] [ AUTHID
<CURRENT_USER I DEFINE> ] IS ! AS > pl/sql_subprogram_body;
Kata kunci OR REPLACE dapat digunakan untuk membuat
ulang procedure yang sudah ada sebelumnya. Dengan adanya kata kunci
ini maka pemberian grant object privilege tidak perlu diulang lagi. Kata
kunci ini biasanya digunakan untuk meng-compile ulang procedure yang
sudah ada karena terjadi perubahan definisi pada procedure tersebut.
Argument pada procedure bersifat pilihan. Apabila digunakan
maka tipe data dari argument tersebut juga dapat diberikan atribut IN,
OUT, atau IN OUT. Atribut IN berfungsi untuk menandakan bahwa
argumen tersebut adalah nilai masukan sehingga ketika procedure
tersebut dipanggil, argumen yang diberikan -arus berupa representasi dari
sebuah nilai. OUT berfungsi untuk menandakan bahwa nilai argument
tersebut dapat diubah di dalam procedure. Sedangkan IN OUT adalah
gabungan IN dan OUT. Jika IN, OUT, atau IN OUT tidak disertakan,
defaultnya adalah IN. Jika yang digunakan adalah atribut IN, pada
argumen tersebut dapat diberikan kata kunci DEFAULT dan nilai
defaultnya.
[ AUTHID <CURRENT_USER | DEF1NE> ] berfungsi
untuk menetapkan dengan privilege apa dan di schema mana procedure
tersebut dieksekusi. Jika menggunakan CURRENTJUSER, privilege
dan schema yang : gunakan selama perintah-perintah di dalam procedure
tersebut dijalankan adalah privilege dan schema milik current user.
24
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 23/44
Sedangkan DEFINE berarti user pemilik schema dimana
procedure tersebut berada. Kata kunci IS atau AS digunakan untuk
menandakan batas dimulainya isi dari PL/SQL subprogram.
User dapat membuat procedure di schema miliknya jika user
tersebut memiliki system privilege CREATE PROCEDURE. Seorang user
dapat membuat procedure di sembarang schema apabila user tersebut
memiliki user privilege CREATE ANY PROCEDURE. Seorang user
dapat membuat ulang sebuah procedure di sembarang schema
(menggunakan kata kunci OR REPLACE) apabila user tersebut
mempunyai system privilege ALTER ANY PROCEDURE. Secara
sederhana sintak umum pembuatan procedure adalah :
CREATE OR REPLACE PROCEDURE nama_procedure
(parameter_l type_data
……………………………………
Parameter_n type_data) AS
Variable 1 tipe_data;………………………………………
Variable_n tipe_data;
Begin
Statement 1;
………………………………………
………………………………………
End;2.12.3 Procedure Tanpa Parameter.
Pembuatan procedure yang tidak menggunakan parameter ini
bersifat atis (tetap), artinya hasil yang diberikan bernilai sama.
Contoh Procedure untuk menghitung luas segitiga.
CREATE OR REPLACE PROCEDURE luas_sg_tiga AS
Alas number (5) ;
25
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 24/44
Tinggi number ( 5 ) ;
Luas number (10) ;
BEGIN
Alas :=3;
Tinggi :=6;
Luas :=( Alas * Tinggi )/2;
Dbms_output .put_line (‘luas =’ lluas) ;
END;
/
Dengan asumsi bahwa server output sudah dalam keadaan on, maka
eksekusi rocedure tersebut dengan perintah :
EXECUTE luas_sg_tiga
Jika tidak ada kesalahan maka akan tampil output sebagai
berikut:
Luas = 9
Tampak bahwa procedure luas_sg_tiga tidak memiliki parameter
apapun, tetapi memiliki sejumlah variable seperti alas, tinggi dan luas. Pada
saat eksekusi procedure luas_sg_tiga pun tidak menyertakan suatu parameter.
Setiap memanggil atau mengeksekusi procdure tersebut, kita akan selalu
mendapatkan hasil yang sama. Hal inilah yang menyebabkan bahwa
procedure tanpa parameter bersifat statis.
2.12.4 Procedure Dengan Parameter.
Tidak seperti procedure tanpa parameter, procedure dengan
parameter ini dapat dikatakan mempunyai sifat dinarnis, karena pada saat
pemanggilan procedure tersebut nilai parameternya dapat diubah-ubah
sehigga hasil yang diberikanpun berubah.
26
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 25/44
Istilah parameter ini dibedakan menjadi parameter formal dan
parameter actual. Yang dimaksud dengan parameter formal adalah
parameter yang dideklarasikan pada saat pembuatan procedure.
Sedangkan parameter actual adalah parameter yang terdapat pada saat
pemanggilan procedure.
a. Parameter masukan (IN)
Sesuai dengan namanya, parameter ini bertindak sebagai masukan
(input) dalam procedure. Pada saat pemanggilan procedure, nilai yang
bertindak sebagai parameter actual akan dikirimkan ke dalam badan
procedure untuk melakukan pemrosesan. Parameter masukan ditandai dengan
kata IN.
Contoh :
Pembuatan procedure untuk memeriksa bilangan bulat yang
dimasukkan apakah tergolong bilangan prima atau bukan.
CREATE OR REPLACE PROCEDURE cek_prima
(bil IN integer) AS
Prima Boolean :=true;
J integer;
BEGIN
If bil <=1 then
Prima :=false;
End if;
For j in 2..(bil/2) loop
If mod(bil,2)=0 then
Prima:=false;
Exit;
End if;
End loop;
If prima then
27
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 26/44
Dbms_output .put_line (bil | | 'prima');
Else
Dbms_output .put_line (bil I I 'bukan prima') End if ; END;
Eksekusi procedure tersebut dengan perintah :
Execute cek_prima ( 17 ) ;
Tampak bahwa procedure cek_prima menggunakan
parameter bil yang merupakan perameter masukan. Cara pemanggilan
procedure inipun hampir sama dengan pemanggilan procedure tanpa
parameter, hanya saja pemanggilan procedure dengan parameter ini
disertakan nilai inputan parameternya dalam hal ini nilai 17.
b. Parameter keluaran (OUT).
Parameter keluaran berfungsi menampung hasil pelaksanaan suatu
procedure. Parameter aktual dari parameter yang bertipe keluaran ini
akan berbentuk variable, bukan berbentuk nilai. Parameter keluaran ini
ditandai dengan kata OUT. Cara pemanggilan procedure dengan
parameter keluaran ini berbeda dengan dengan pemanggilan procedure
dengan parameter masukan. Untuk pemanggilan procedure dengan
keluaran harus dengan sintak PL/SQL.
Contoh :
CREATE OR REPLACE PROCEDURE hitung
(a in number,
b in number,
1 out number ) AS
begin
l:=(a*b)/2;
end;
Cara pemanggilan procedure tersebut adalah sebagai berikut:
28
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 27/44
Set serveroutput on;
Declare
1 number;
Begin
Hitung (6,8,1);
Dbms_output.put_line ('hasil ' || 1);/
2.12.5 Penggunaan Procedure Untuk Database
Procedure dalam Oracle dapat digunakan untuk keperluan database.
Suatu misal kita mcmpunyai suatu table kategori yang mempunyai field nokatgori dan nama_kategori yang dibuat dengan sintak :
Create table kategori
(no_kategori number (5),
Nama_kategori varchar2 (10) ,
Constraint pk__no_kat primary key (no_kategori)
);
Kemudian kita membuat suatu procedure yang berfungsi untuk
memasukkan record kedalam table tersebut, ketikkan :
Create or replace procedure insert_kat
(no_kat number,
Nama_kat varchar2) AS
Begin
Insert into kategori
Values (no_kat,nama_kat);
End;
Kemudian jalankan procedure tersebut untuk mengisi record pada table
kategori:
Execute insert_kat (1 , 'basprog' ) ;
Contoh lainnya diberikan berikut ini. Contoh tersebut bertujuan untuk
membuat procedure PRC_UPD_POSDESK yang berisi SQL statement untuk
29
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 28/44
mengupdate kolom deskripsi pada tabel POSISI. Ada dua argumen pada
procedure tersebut, yaitu i_pos_id yang digunakan untuk menentukan baris mana
yang akan di-update dan i_deskripsi yang digunakan sebagai nilai baru pada
kolom deskripsi. Perhatikan juga cara penulisan tipe data argument. Panjang data
tidak dicantumkan.
CREATE OR REPLACE PROCEDURE prc _upd_posdesk (i_pos_id
NUMBER, i_deskripsi VARCHAR2 ) IS BEGIN
UPDATE POSISI
SET deskripsi = i_deskripsi
WHERE pos_id = pos_id; END;
Perintah dibawah ini menunjukan pemanggilan procedure
PRC_UPD_POSDESK untuk meng-update kolom deskripsi menjadi "Direktur
utama" untuk baris dengan nilai pos_id = 100.
SQL> EXECUTE prc_posdek(100, 'Direktur Utama' )
PL/SQL procedure successfully completed.
2.12.6 Menghapus Procedure
Menghapus procedure dapat dilakukan dengan menggunakan DROP
PROCEDURE statement dengan bentuk umum seperti dibawah ini:
DROP PROCEDURE [schema.] procedure;
Statement diatas hanya dapat dijalankan oleh user pemilik schema
tempat procedure tersebut berada atau user lainnya yang memiliki system
privilege DROP ANY PROCEDURE. Berikut ini contoh untuk menghapus
procedure PRC_UPD_POSDESK.
SQL> DROP PROCEDURE pro upd_posdesk;
30
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 29/44
2.13 Transaction
Jika anda pergi ke bank untuk memindahkan uang dari nomor rekening
1 ke nomor rekening 2, maka uang tersebut akan diambil dari nomor rekening 1
kemudian dimasukkan ke dalam nomor rekening 2.
Pemasukan uang ke nomor rekening 2 harus terjadi serempak secara
otomatis pada saat uang diambil dari nomor rekening 1. Proses ini dinamakan
transaksi, yaitu suatu unit kerja logika dimana satu seri perubahan database terjadi
secara serempak untuk mengikuti suatu peraturan yang telah didefinisikan
sebelumnya.
2.13.2 Mengatur Transaksi Database.
Untuk membuat perubahan data menjadi permanen setelah
melakukan perintah DML (Data Manipulation Language) statement
seperti insert, update dan delete maka harus diakhiri dengan COMMIT.
Pengertian permanen pada kalimat sebelumnya adalah disimpan atau
diperbaharui atau dihapus secara flsik pada atau dari tabel bersangkutan.
Sebuah INSERT statement hanya bersifat sementara dan hanya berlaku
pada session yang bersangkutan sebelum COMMIT dijalankan. Perintah
COMMIT sendiri berfungsi untuk mengakhiri suatu transaksi dan
membuat scmua perubahan yang diakibatkan oleh DML pada transaksi
tersebut menjadi permanen.
Transaksi pada database berarti suatu rangkaian SQL statement
yang dianggap sebagai suatu satuan kerja logikal. Pertanyaannya adalah
kapankah awal dan akhir sebuah transaksi database? Transaksi diawali
ketika sebuah SQL statement yang pertama dieksekusi dan diakhiri ketika
salah satu dari kejadian-kejadian berikut ini muncul.
1. Perintah COMMIT atau ROLLBACK dijalankan.
31
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 30/44
2. Salah satu statement dari kelompok Data Definition Langguage.
(seperti CREATE statement) atau Data Control Language (seperti
GRANT statement) dieksekusi.
3. User keluar dari suatu program aplikasi yang mengakses database.
4. Sistem mengalami crash.
Akhir transaksi yang disebabkan oleh kejadian yang disebutkan
pada butir pertama di atas, secara eksplisit dapat dilakukan oleh user.
Sedangkan akhir transaksi yang disebabkan oleh kejadian-kejadian pada
butir kedua dan seterusnya diatur secara otomatis oleh Oracle. Secara
implisit Oracle menjalankan COMMIT atau ROLLBACK jika kejadian-
kejadian tersebut muncul.
Bagaimanakah kedudukan data yang telah diubah oleh DML
statement pada saat transaksi tersebut diakhiri? Jawabannya tercantum
pada daftar di bawah ini :
a. Data tersebut masih bersifat sementara sehingga masih
mungkin dikembalikan ke posisi awal transaksi.
b. User yang berada pada transaksi tersebut dapat melihat
hasil operasi DML yang telah di lakukan menggunakan SELECT
statement.
c. User pada session lainnya tidak dapat melihat
perubahan-perubahan data tersebut.
Baris-baris data tersebut terkunci (locked) sehingga user pada
session lain tidak dapat melakukan operasi DML pada baris-baris tersebut.
Pada pokok bahasan berikut ini dipaparkan tentang masing-masing
statement yang tergabung di dalam transaction control statement secara
rinci. Transaction control statement tersebut terdiri dari SET
TRANSACTION, COMMIT, ROLLBACK, dan SAVEPOINT.
Mulailah dengan mengetikkan script berikut menggunakan text
editor, misalnya notepad. Berikan satu baris kosong pada bagian akhir dari
32
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 31/44
setiap file. Simpanlah dalam file dan beri nama "script0l.sql". Tempatkan
file tersebut dalam sebuah direktori atau folder tertentu, misalnya saja
"C:\PraktikumBDL".
ScriptOl.sql
/* Membuat Tabel Kelas Gaji */
CREATE TABLE T_KLS_GAJI (
KELAS NUMBER(2),
BATAS_BAWAH NUMBER(8),
BATAS_ATAS NUMBER(8)
)
/
/* Mengisi Data pada Tabel T_KLS_GAJI */
INSERT INTO T_KLS GAJI VALUES(1,5000000,NULL);
INSERT INTO T_KLS~GAJI VALUES(2,3000000,4999999);
INSERT INTO T_KLS_GAJI VALUES(3,1500000,2999999);
INSERT INTO T_KLS_GAJI VALUES(4, 750000,1499999);
INSERT INTO T_KLS_GAJI VALUES(5, 300000, 749999);
INSERT INTO T_KLS_GAJI VALUES(6, 0, 299999);
COMMIT;
Setelah itu login ke SQL * PLUS, jalankan perintah berikut ini.
SQL> start C:\PraktikumBDL\script01.sql
Jangan khawatir jika ada pesan kesalahan yang muncul. Tanda
sukses dijalankannya script tersebut adalah apabila tulisan "Table created"
muncul dua kali sebelum prompt "SQL>" yang terakhir. Kemudian,
buatlah suatu tabel dengan nama T_WHO dengan struktur seperti yang
ditunjukan oleh SQL statement berikut ini.
SQL> CREATE TABLE T_WHO (
33
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 32/44
2 NO_URUT NUMBER,
3 DIBUAT_OLEH VARCHAR2(30),
4 TGL_DIBUAT DATE,
5 DIUBAH_OLEH VARCf}AR2 (30) ,
6 TGL__DIUBAH DATE) ;
Kemudian, simpanlah statement tersebut ke dalam file
"script02.sql" dan letakkan pada folder kerja Anda.
SQL> save C:\PraktikumBDL\script02.sql
2.13.3 Set Transaction.
Statement ini bertujuan untuk menentukan tipe suatu transaksi.
Perintah ini jarang digunakan namun kadangkala diperlukan juga terutama
untuk membuat t ransaksi menjadi READ ONLY. J ika SET
TRANSACTION statement digunakan, dia harus dijalankan pada
awal transaksi. Bentuk umum penggunaannya ditunjukan berikut ini.
SET TRANSACTION param;
Pada statement diatas, param berfungsi untuk menentukan tipe
transaksi apa yang dipilih. Parameter param tersebut dapat diisi dengan
salah satu dari kata-kata kunci di bawah ini :
a. READ ONLY
Pada tipe transaksi read-only, hanya diperkenankan menjalankan
SELECT statement, ALTER SESSION, ALTER SYSTEM, SET
ROLE, dan LOCK TABLE. Perubahan data sama sekali tidak
diperkenankan. Demikian juga perubahan object database tidak
dapat dilakukan pada saat transaksi tipe ini berlangsung.
34
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 33/44
b. READ WRITE
Pada saat write-read transaction, perubahan data dan pembuatan
object database diperkenankan.
c. ISOLATION LEVEL READ COMMITED
Pada jenis transaksi ini apabila DML statement dikenakan pada bans-bans
data yang terkunci (locked) karena bekerjanya DML statement pada
transaksi lainnya maka DML statement pada transaksi ini akan menunggu
sampai beris-baris data yang terkunci tersebut terbebas (relesed).
Transaksi jenis ini merupakan default dari tipe transaksi pada Oracle.
d. ISOLATION LEVEL SERIALIZABLE
Pada jenis transaksi ini apabila DML statement dikenakan pada baris-
baris data yang terkunci (locked) karena bekerjanya DML statement pada
transaksi lainnya maka DML statement pada transaksi ini akan mengalami
kegagalan.
Perlu dicatat, perintah SET TRANSACTION hanya berlaku pada transaksi
itu saja, tidak berlaku pada transaksi lainnya ataupun session lainnya.
Apabila suatu transaksi berakhir, misalnya karena munculnya COMMIT
ataupun ROLLBACK, tipe transaksi akan kembali ke default
(ISOLATION LEVEL READ COMMITED).
Cobalah jalankan perintah berikut ini untuk membuat transaksi menjadi
READ ONLY. Sebelumnya jalankan COMMIT untuk memastikan
bahwa transaksi yang sebelumnya diakhiri dan transaksi yang baru
dimulai.
SQL> COMMIT;
SQL> SET TRANSACTION READ ONLY;
Jika tidak mengalami suatu kesalahan, maka akan muncul pesan yang
menandakan bahwa transaksi berhasil diset, perintah tersebut adalah :
Transaction set.
35
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 34/44
Pada transaksi read-only seperti ini, DML statement tidak bisa dijalankan.
Berikut ini sebuah DML statement yang dijalankan pada transaksi read-
only.
SQL> INSERT INTO T_WHO
VALUES (100, USER, SYSDATE, NULL, NULL);
Perhatikan pesan kesalahan yang muncul.
INSERT INTO T_WHO
•*•
ERROR at line 1;
ORA-01456 may not perform insert / delete / update operation
inside
a READ ONLY transaction
Untuk mengembalikan ke transaksi tipe default jalankanlah perintah
COMMIT. Sebagai catatan, transaksi read-only tidak berakibat apa-apa
pada user SYS. Artinya DML statement tetap dapat dijalankan pada user SYS walaupun user SYS tersebut telah menetapkan transaksi menjadi
read-only.
2.13.4 COMMIT
Telah disebutkan sebelumnya bahwa perintah COMMIT berfungsi
untuk mengakhiri suatu transaksi dan membuat semua perubahan yang
diakibatkan oleh DML pada transaksi tersebut menjadi permanen.
Perintah COMMIT ini selain secara eksplisit dapat digunakan oleh user,
juga secara implisit dilakukan oleh Oracle ketika kejadian-kejadian
berikut ini muncul.
Sebuah DDL atau DCL statement dieksekusi.
36
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 35/44
a. User keluar secara normal dari program-program utility produk Oracle
seperti SQL * Plus. Termasuk dalam hal ini adalah ketika user
menjalankan perintah DISCONNECT dari SQL * Plus.
Selengkapnya, bentuk umum penggunaan COMMIT adalah sebagai
berikut :
COMMIT [WORK] [COMMENT 'text'];
Penggunaan kata kunci WORK sama sekali tidak mengubah fungsi
kerja COMMIT. Penambahan kata kunci tersebut hanya ditujukan untuk
penyesuaian dengan perintah standar ANSI.
Sedangkan kata kunci COMMENT dapat diberikan untuk
menambahkan komentar. Komentar tersebut akan disimpan di dalam
data dictionary apabila terjadi kegagalan pada network atau mesin yang
mengakibatkan perintah COMMIT tidak berjalan sebagaimana mestinya.
Bagaimana kedudukan data yang telah diubah oleh DML statement
pada suatu transaksi sesudah perintah COMMIT dieksekusi?Jawabannya adalah sebagai berikut:
° Data di database diubah secara permanen sesuai dengan operasi-
operasi DML statement yang telah dilakukan.
° Semua user dapat melihat hasil perubahan-perubahan tersebut.
° Baris-baris yang sebelumnya dikunci telah dibebaskan kembali
sehingga user dapat melakukan operasi DML pada baris-baris tersebut.
°Semua savepoint tidak berlaku lagi (lihat bahasan SAVEPOINT).
Contoh-contoh penggunaan COMMIT dapat ditemukan pada
pokok-pokok bahasan sebelumnya.
2.13.5 ROLLBACK
37
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 36/44
Telah disebutkan sebelumnya bahwa baris-baris data yang sudah
diubah oleh DML statement masih dapat dikembalikan ke posisi awal
transaksi (kondisi sebelum perubahan dilakukan). Pengembalian ke posisi
awal tersebut, dapat dilakukan menggunakan ROLLBACK statement.
Bentuk umum ROLLBACK statement diberikan dibawah ini.
ROLLBACK [WORK] [TO [SAVEPOINT] savepoint_name];
Perhatikan rumusan ROLLBACK diatas. Sama seperti
COMMIT statement, kata kunci WORK pada ROLLBACK statement
tidak mempengaruhi fungsi dan cara kerja ROLLBACK, hanya ditujukan
sebagai penyesuaian terhadap perintah standar ANSI. Tentang
hubungan ROLLBACK dan SAVEPOINT dijelaskan pada pokok
bahasan berikut ini.
Berikut ini diberikan sebuah contoh penggunaan ROLLBACK di
dalam transaksi. Terlebih dahulu jalankanlah perintah COMMIT untuk
memastikan dimulainya transaksi baru yang bukan READ ONLY
sehingga user dapat melakukan operasi DML. Kemudian, cobalah lihat
baris-baris data pada tabel T_KLS_GAJI dengan melakukan query seperti
berikut ini.
SQL> SELECT * FROM T KLS GAJI ORDER BY kelas;
Setelah itu, jalankan dua UPDATE statement berikut ini untuk
memperbaharui dua baris data. Baris yang pertama adalah baris dengan nilai
kelas sama dengan 1. Perubahan baris ini adalah kolom batas_bawah
menjadi 4000000 dan batas_atas menjadi 7000000. Baris yang kedua
adalah baris dengan nilai kelas sama dengan 2, dengan perubahan kolom
batas_atas menjadi 3999999. Setelah itu query kembali semua data dari
tabel T_KLS_GAJI.
SQL> UPDATE T_KLS_GAJI
38
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 37/44
SET batas_bawah = 4000000, batas_atas = 7000000 WHERE kelas =
1 ;
SQL> UPDATE T_KLS GAJI
SET batas_atas = 3999999 WHERE kelas = 2;
SQL> SELECT * FROM T_KLS_GAJI ORDER BY kelas;
Kemudian, karena suatu sebab, hasil UPDATE statement pada
transaksi ini ingin dibatalkan. Oleh karena COMMIT belum dijalankan,
maka perintah ROLLBACK dapat dijalankan untuk membatalkan
semau perubahan-perubahan data yang sudah dilakukan. Setelah
menjalankan ROLLBACK, query kembalilah semua data dari label
T_KLS_GAJI seperti yang diperlihatkan dibawah ini.
SQL> ROLLBACK;
SQL> SELECT * FROM T KLS GAJI ORDER BY kelas;
Dengan menjalankan perintah ROLLBACK diatas, semua
perubahan data pada transaksi tersebut dibatalkan sekaligus mengakhiri
transaksi tersebut dan memulai transaksi yang baru. Selain itu, semua baris
data yang terkunci akan dibebaskan sehingga operas! DML pada baris-
baris tersebut dapat dilakukan oleh semua user.
Perlu diingat bahwa selain dapat dijalankan secara eksplisit,
ROLLBACK statement juga dapat dijalankan secara implisit oleh
Oracle. Oracle akan menjalankan ROLLBACK secara otomatis ketikakejadian-kejadian berikut ini muncul.
b. User keluar secara tidak normal dari program-program utility produk
Oracle seperti SQL * plus.
c. User keluar dari program aplikasi lainnya tanpa menjalankan
perintah COMMIT secara eksplisit.
2.14 Business Rules
39
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 38/44
Rule adalah sekumpulan named-set of privileges.Operasi-operasi terhadat
rule mencakup tiga operasi klasik CREATE,ALTER,DROP dan satu operasi SET
untuk mengaktifkan di tambah dengan dua operasi GRANT dan REVOKE(seperti
untuk privileges).Role di buat untuk mempermudah pengelolaan hak-hak
(privileges).
Statemen INSERT digunakan untuk mengisikan data ke sebuah table.
Format umumnya :
INSERT INTO
nama_table [(column_list )]
VALUES (ekspresi [, ekspresi2 ... [, ekspresi n]])
di mana :
nama_table Nama table yang akan diisi datanya.
column_list Daftar column yang akan diisi datanya; column_list tidak
perlu ditulis bila data yang akan diisikan sesuai dengan
jumlah dan urutan column pada saat table dibuat.
Ekspresi Ekspresi yang merupakan nilai yang akan diisikan di columnyang bersesuaian
SELECT
Statemen SELECT digunakan untuk melakukan query data. Format umum
statemen SELECT :
SELECT [ALL | DISTINCT] select_list
FROM nama_table [, nama_table2 [..., nama_table n]]
[WHERE klausa_where]
[GROUP BY klausa_groupby]
[ORDER BY klausa_orderby]
di mana :
select_list Urutan column atau ekspresi
nama_table Nama table yang akan diquery
klausa_where Kondisi join untuk membatasi record yg. terquery
40
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 39/44
klausa_groupbyUrutan column atau ekspresi untuk mengelompokkan record
berdasarkan group tertentu
klausa_orderby Urutan column atau ekspresi untuk menentukan urutan record
yang diquery
Statemen berikut menghasilkan query semua record dan semua column dari table
pegawai:
SELECT * FROM pegawai;
hasilnya :
nip nama id_dept gaji
---------------------------------
001 Yudoyono HNK 1500
002 Wiranto HNK 1000
003 Alwi LNG 900
004 Alatas LNG 800
005 Suryadi DNG 700
UPDATE
Statement UPDATE digunakan untuk mengganti data sebuah table. Format
umumnya:
UPDATE nama_table
SET nama_column = ekspresi
[, nama_column2 = ekspresi
...[, nama_column_nameN = ekspresi]]
[WHERE kondisi]
di mana :
nama_table Nama table yang akan diganti isinya
41
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 40/44
nama_column Nama column yang akan diganti isinya
EkspresiEkspresi yang merupakan nilai yang akan diisikan ke dalam
column yang bersesuaian
Kondisi Kondisi yang membatasi data yang akan diganti dari table
tersebut
DELETE
Statemen DELETE digunakan untuk menghapus record sebuah table. Format
umumnya :
DELETE FROM nama_table [WHERE kondisi]
di mana :
nama_table Nama table yang akan dihapus datanya
Kondisi Kondisi yang akan membatasi data yang akan dihapus
2.15 PACKAGE
Package adalah sarana/cara pengelompokkan dan pengorganisasian kelas-kelas
dan interface yang sekelompok menjadi suatu unit tunggal dalam library.Package
juga mempengaruhi mekanisme hak akses ke kelas-kelas di dalamnya.
Fungsi Package adalah mengelompokkan file kelas yang terkait (karena jenisnya,
fungsinya atau karena alas an lainnya) pada direktori yang sama, dimana di dalam
setiap kelasnya terdapar directive (statement java dalam code yang digunakanuntuk membuat kelas) package yang mengacu pada direktori tersebut.
Secara fisik Package dapat berupa folder yang berisi file-file / kelas interface
lain yang keduanya hampir sama sehingga patut untuk dikelompokan. Package
mempengaruhi mekanisme hak akses ke kelas didalamnya.
Ada tiga langkah dalam membuat package yaitu:
1. Mendeklarasikan dan memberi nama package.
42
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 41/44
2. Membuat struktur dan nama folder yang sesuai dengan struktur dan
nama package.
3. Mengkompilasikan kelas kelas sesuai dengan nama package
masing masing.
Mendeklarasikan dan memberi nama package. Deklarasi package harus diletakan
pada bagian paling awal. Syarat nama package:
1. Diawali huruf kecil
2. Menggambarkan kelas kelas yang dibungkusnya.
3. Merepresentasikan path dari package tersebut.
4. Harus sama direktorinya.
2.16 TRIGGER
Trigger adalah sebuah stored procedura yang dieksekusi pada saat terjadi
modifikasi data pada tabel-tabel dalam database. Data pada sebuah tabel dikatakan
telah dimodifikasi jika pada tabel tersebut dilakukan proses pemasukan data
(insert), penggabungan data (update), atau penghapusan data (delete). Trigger
diaktivasi berdasarkan event yang terjadi sehingga trigger berguna sekali dalam
menjaga integritas dan konsistensi data.
Trigger merupakan sebuah program unit yang disimpan di database dan
hanya dapat dieksekusi (fired) secara implisit oleh oracle. Server menurut event
yang terjadi pada objek acuan dari trigger tersebut. Trigger dapat berisi SQL,
PL/SQL, dan Java statement. Selain itu juga dapat memanggil method yang ditulis
dengan bahasa C.
Trigger mempunyai banyak kegunaan, beberapa di antaranya sebagai
berikut :
− Menentukan nilai kolom-kolom tertentu secara otomatis.
− Menghindari transaksi data yang tidak valid.
43
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 42/44
− Membuat authorisasi sekuriti yang kompleks.
−Membuat business rule yang kompleks.
Trigger hanya dapat dieksekusi secara implicit oleh Oracle Server.
Eksekusi trigger sendiri dapat dipicu (triggered) oleh salah satu dari event
berikut :
• DML event, yaitu insert, update, delete
• DDL event, yaitu : create, alter, drop
• Database event, seperti database starup atau shutdown, munculnya error
message tertentu, atau user event (saat user log on atau log off).
Walaupun trigger mempunyai banyak kegunaan, namun berhati-hatilah
membuat trigger pada database. Semakin banyak trigger semakin sulit
mengaturnya sebab pengeksekusian trigger, yang biasanya mengacu pada objek-
objek chema, dilakukan secara implicit begitu event pemicu muncul. Pengaturan
trigger-trigger dengan cara yang jelek dapat mengakibatkan suatu proses beruntun
sehingga proses keseluruhan menjadi lambat atau bahkan looping terus tidak akan
pernah berhenti. Misalnya : sebuah insert statement pada T1 memicu bekerjanya
trigger TGR1. proses yang dikerjakan trigger TGR1 adalah mengupdate tabel T2.
pada tabel T2 terdapat trigger TGR2 yang pemicunya adalah update statement.
Dengan demikian, trigger TGR2 juga akan bekerja. Demikian seterusnya.
Contoh trigger adalah sebagai berikut :
R1 : create or replace trigger jadwal_kerja
after insert on JADWAL
referency new as JD
for each row
when (JD.Jam_Kerja is null)
update JADWAL
set Jam_Kerja=’0’
where Jam_Kerja = JD.Jam_Kerja
R2 : create or replace trigger peg_nip
44
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 43/44
after insert on PEGAWAI
referency new as PEG
for each row
when (PEG.NIP is null)
update PEGAWAI
set NIP=’00000’
where NIP = PEG.NIP
R3 : create or replace trigger tunj_kel
..............................................................................................................................
................................................................................after insert on GOLONGAN
referency new as G
for each row
when (G.Tunjangan is null)
update GOLONGAN
set Tunjangan=’0’
where Tunjangan = G.Tunjangaan
1.
2.17 Privileges
Privilege merupakan hak mengakses atau memanipulasi suatu object yang
ada dalam database. Privelege sendiri terdapat dua macam yaitu :
1. Sistem privelege (hak sistem) adalah hak untuk mengeksekusi perintah –
perintah system atau yang berhubungan dengan DDL, seperti create table,
create user, dan alter index.
2. Object privelege (hak objeck) adalah hak untuk mengeksekusi perintah –
perintah yang berhubungan dengan DML, seperti insert, update atau delete
pada suatu object database.
45
5/10/2018 Proposal Praktikum_bab II - slidepdf.com
http://slidepdf.com/reader/full/proposal-praktikumbab-ii 44/44
Hak-hak yang dapat diberikan kepada User antara lain :
− Connect : role yang mempunyai hak untuk koneksi ke suatu database.
− DBA : role yang mempunyai hak untuk membuat, mengubah dan
menghapus user serta mengatur database yang dimiliki oleh User.
− Resource : role yang mempunyai semua hak system yang diperlukan untuk
membuat table, index, view, dan object lain dalam Oracle.
Sintaks untuk pemberian hak akses adalah sebagai berikut :
GRANT nama_role | priveleges TO nama_user
Sedangkan untuk mencabut hak akses yang telah kita berikan kepada user
adalah :
REVOKE nama_role | privileges FROM nama_user
Jika berhasil maka akan muncul pesan berikut ini : Grant succeeded.
.
46