proposal praktikum_bab ii

44
 BAB II LANDASAN TEORI Pada bab ini diuraikan beberapa teori dasar tentang Oracle dan perintah-  perintah dasar dalam Oracle. 2.1 Basis data Or acle Merupakan basis data relasional yang terdiri dari kumpulan data dalam suatu sistem man ajemen bas is dat a RDB MS. Perusa haa n per ang kat lunak Ora cle 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 Mi ne r dan Ed Oates lewat perusa haan kons ul tasi nya bernama Soft ware De ve lopment Laborato ri es (SDL) pa da ta hu n 1977. Pada tahu n 1983,  perusahaan ini berubah nama menjadi Oracle Corporation sampai sekarang. 2.2 Keha ndala n 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

Upload: lukman

Post on 10-Jul-2015

438 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Proposal Praktikum_bab II

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

Page 2: Proposal Praktikum_bab II

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

Page 3: Proposal Praktikum_bab II

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

Page 4: Proposal Praktikum_bab II

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

Page 5: Proposal Praktikum_bab II

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

Page 6: Proposal Praktikum_bab II

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

Page 7: Proposal Praktikum_bab II

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

Page 8: Proposal Praktikum_bab II

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

Page 9: Proposal Praktikum_bab II

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

Page 10: Proposal Praktikum_bab II

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

Page 11: Proposal Praktikum_bab II

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

Page 12: Proposal Praktikum_bab II

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

Page 13: Proposal Praktikum_bab II

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

Page 14: Proposal Praktikum_bab II

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

Page 15: Proposal Praktikum_bab II

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

Page 16: Proposal Praktikum_bab II

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

Page 17: Proposal Praktikum_bab II

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

Page 18: Proposal Praktikum_bab II

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

Page 19: Proposal Praktikum_bab II

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

Page 20: Proposal Praktikum_bab II

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

Page 21: Proposal Praktikum_bab II

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

Page 22: Proposal Praktikum_bab II

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

Page 23: Proposal Praktikum_bab II

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

Page 24: Proposal Praktikum_bab II

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

Page 25: Proposal Praktikum_bab II

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

Page 26: Proposal Praktikum_bab II

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

Page 27: Proposal Praktikum_bab II

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

Page 28: Proposal Praktikum_bab II

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

Page 29: Proposal Praktikum_bab II

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

Page 30: Proposal Praktikum_bab II

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

Page 31: Proposal Praktikum_bab II

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

Page 32: Proposal Praktikum_bab II

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

Page 33: Proposal Praktikum_bab II

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

Page 34: Proposal Praktikum_bab II

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

Page 35: Proposal Praktikum_bab II

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

Page 36: Proposal Praktikum_bab II

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

Page 37: Proposal Praktikum_bab II

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

Page 38: Proposal Praktikum_bab II

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

Page 39: Proposal Praktikum_bab II

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

Page 40: Proposal Praktikum_bab II

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

Page 41: Proposal Praktikum_bab II

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

Page 42: Proposal Praktikum_bab II

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

Page 43: Proposal Praktikum_bab II

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

Page 44: Proposal Praktikum_bab II

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