Selasa, 29 Desember 2015

Oracle


ORACLE
Oracle adalah 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 EllisonBob 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.


Sejarah Singkat Oracle

Perusahaan Oracle didirikan pada tahun 1977 oleh tiga orang programmer, Bob Miner, Ed Oates, dan Larry Ellison yang menjabat sebagai CEO (Chief Executive Officer) selama beberapa tahun sampai saat ini. Perusahaan ini berkonsentrasi pada pembuatan database server di mainframe.

Kisah sukses Oracle Corp terkait dengan sejarah dan teori database relasional. Teori database relasional diperkenalkan hampir secara simultan oleh Edgar F. Codd (dalam artikelnya yang terkenal Large shared data banks) dan seorang penemu lain yang kurang dikenal, pada tahun 1969. IBM adalah perusahaan pertama yang menerapkan model relasional ini dalam bahasa SQL, dengan produknya DB2. Sayangnya IBM agak ragu akan keampuhan SQL dan model relasional (nantinya akan berpengaruh pada ketertinggalan IBM di pasar database-server sistem operasi Unix dan Windows ).

Larry melihat perkembangan teori model relasional dan implementasi database relasional dalam DB2. Ia yakin bahwa model relational adalah “way of the future” dan memutuskan untuk mengimplementasikan model relasional di produk Oracle. Sebelumnya produk database Oracle memakai model nonrelasional. Oracle menjadi pesaing kuat bagi IBM dalam pasar database server di mainframe, terutama database bermodel relasional.

Sekitar pertengahan tahun 1980an, Larry mendiversifikasi produk Oracle (versi 6.x) keluar mainframe, yakni ke sistem operasi Unix. Selanjutnya tahun 1996 Oracle Corp mendiversifikasi Oracle (versi 7.x) ke sistem operasi Novell Netware, Windows NT, dan Linux (versi 8.x, tahun 1997).
Mulai pertengahan tahun 1990an Oracle Corp mulai membuat juga produk-produk nondatabase-server seperti application server (WebDB, OAS), development tools (Oracle Developer, Oracle Designer), dan application suite (Oracle Apps).

Install database oracle 10g di Windows XP

Secara umum, guide ini berlaku untuk semua instalasi Oracle. Di semua OS, proses instalasi itu sama, hanya sedikit berbeda di pre-installation requisite-nya.
Download software Database Oracle dulu. Free, alias gratis… tis.. Sebelumnya anda harus punya account di Oracle. Kalau belum punya, membuatnya gampang sekali, yang penting punya email. Ikuti saja proses “sign up”. Kalau diminta memasukkan pin OPN, dan anda tidak punya pin OPN karena company anda bukan partner-nya Oracle, kosongkan saja.
Berikut ini panduan download “Oracle Database 10g Release 2 (10.2.0.1.0)”:

Buka link (page) untuk download di sini

Pilih versi database dan tipe OS

Dalam hal ini saya memilih “Oracle Database 10g Release 2 (10.2.0.1.0) for Microsoft Windows”

Kemudian muncul pilihan berikut

- Oracle Database 10g Release 2 (10.2.0.1.0)
- Oracle Database 10g Companion CD Release 2 (10.2.0.1.0)
- Oracle Database 10g Client Release 2 (10.2.0.1.0)
- Oracle Clusterware Release 2 (10.2.0.1.0)
- Oracle Gateways 10g Release 2 (10.2.0.1.0) (10.2.0.1.0)

Pilihlah option pertama. Kalau hanya untuk sekedar belajar database, anda cukup milih option pertama saja.

PC yang saya gunakan dalam instalasi ini adalah:

- Microsoft Windows XP Professional Version 2002 Service Pack 2
- CPU: intel 2 Ghz
- Memory: 1G
- Virtual (page) memory: 1,5G

Dengan spesifikasi tersebut, jelas PC saya sangat (lebih dari cukup) memenuhi syarat. Lebih detail tentang spesifikasi komputer yang bisa diinstall, lihat dokumentasi (installation guide) yang ada di paket software yang telah di download. Secara umum, berikut ini spesifikasinya:

Hardware:

- Physical memory (RAM) : 256 MB minimum, 512 MB recommended
- Virtual memory: dua kali RAM
- Disk space: kira-kira 5 G
- Video (monitor) adapter: 256 colors
- Processor : 550 MHz

Operating system (OS)

- Windows 2000 with service pack 1 or later. All editions, including Terminal Services and Microsoft Windows 2000 MultiLanguage Edition (MLE)
- Windows Server 2003 – all editions
- Windows XP Professional
- Windows NT is not supported.

Berikut ini langkah-langkahnya:

Jalankan command “setup.exe” yang ada di paket software yang telah di download
Kemudian muncul Install wizard (GUI). 
 - Pilih option “Basic Installation”
- Masukkan directory “Oracle Home Location”
- Pilih “Installation Type”
- Jangan pilih “Create Starter Database”
- Klik button “Next”
Oracle installer akan mengecek OS kita, apakah requirement-nya dipenuhi atau tidak.
Pastikan semua statusnya “Succeeded”. Kalau ada warning, atau statusnya bukan Succeed, bereskan dulu OS-nya. Kemudian klik button “Next”
Dalam proses installati, Oracle akan menjalankan program java. Bila firewall PC anda memblock java, dan muncul alert “Windows Security Alert”, kilk tombol “Unblock”.
Muncul summary komponen Oracle Database 10g yang siap kita install.
Kemudian klik tombol “Install”.
Installation progress.
Setelah itu akan dilakukan konfigurasi tambahan oleh Oracle Installer. Kita cukup perhatikan saja.
Setelah konfigurasi selesai, klik tombol “Next”. Kadang-kadang kita tidak perlu kilk tombol Next tersebut, secara otomatis wizard menuju ke berikutnya.
Akhirnya instalasi selesai.
Setelah itu klik tombol “Exit”

Komputer Lambat setelah Install Database Oracle

Untuk belajar database Oracle ataupun keperluan development, kita bisa menginstall software Oracle di komputer (PC) kita. Misalkan kita menginstall database Oracle di PC kita yang punya memory 1 GB dan hard disk puluhan GB. Terus, setelah install kok performance PC jadi lambat, ya. Kenapa?
Ketika instalasi, kita ditanya apakah akan membuat database sekalian? Lihat gambar di bawah ini.

Kalau “create starter database” kita check, maka setelah installasi, installer akan membuat database. Pada contoh gambar di atas, pilihan ini tidak saya ambil.
Tentu saja database Oracle memakai memory. Kalau memory database Oracle terlalu besar untuk ukuran PC kita, jelas… PC akan jadi lambat. Untuk melihat berapa memory yang sedang dipakai, gunakan windows Task Manager.
Kalau memory yang dipakai Oracle terlalu besar untuk ukuran PC kita, untuk itu kita bisa menurunkannya.
Cara menurunkan alokasi memory di database Oracle:
Edit init (instance) parameter.
Misalkan saya akan menurunkan memory menjadi 200MB. Buka command prompt, jalankan SQLPLUS
C:\>sqlplus "/ as sysdba"
SQL> alter system set sga_target=209715200 scope=spfile;
Restart database
SQL> shutdown immediate
SQL> startup
Di Windows, database server (instance) kita dibuatkan service. Untuk melihatnya, dariControl Panel, buka Administrative Tools, kemudian buka Services. Lihat gambar di bawah ini (dalam contoh ini, nama database dan instance adalah DATAKU).

Startup Type services punyanya Oracle biasanya dibuat Automatic. Dalam contoh ini, ada 3 yaitu:
- OracleDBConsoleNAMADATABASE
- OracleNAMAHOMETNSListener
- OracleServiceNAMAINSTANCE
Agar service-service tersebut tidak segera naik waktu PC baru startup, ubah Startup Type menjadi Manual.
Terus, kalau database Oracle sedang tidak kita pakai, service-service tersebut dimatikan saja. Dan nyalakan kalau sedang dipakai saja sehingga resource (khususnya memory) tidak terbuang sia-sia.


Cara Menggunakan Perulangan (Looping) di Oracle PL/SQL
Oracle PL/SQL mempunyai 3 jenis perulangan (looping), yaitu:

Perulangan sederhana (Simple Looping)
Perulangan FOR (FOR Looping)
dan Perulangan WHILE (WHILE Looping)

Simple Looping
Simple Looping atau dikenal juga dengan Basic Looping adalah perulangan yang sangat sederhana yang akan mengeksekusi  program tanpa batasan waktu. Perulangan akan berhenti ketika ada statement EXIT atau EXIT WHEN.

Sintak Dasar: 

Dibawah ini adalah sintak dasar penggunaan Simple Looping / Perulangan sederhana.

1
LOOP
2
  statement;

3
END LOOP;

Contoh:

Dibawah ini adalah contoh program looping sederhana untuk mencetak bilangan 1 sampai dengan 5 dengan menggunakan operator penambahan (+). Perulangan akan berhenti ketika bilangan = 6, yaitu dengan adanya statement EXIT.

01
DECLARE
02
   bilangan NUMBER := 1;

03
BEGIN
04
   -- Program Mencetak Bilangan 1 s/d 5

05
    LOOP
06
        DBMS_OUTPUT.PUT_LINE ('Bilangan = ' || bilangan);

07
        bilangan := bilangan + 1;
08
        IF bilangan = 6 THEN

09
            -- Jika bilangan = 6, keluar dari blok looping
10
              EXIT;

11
        END IF;
12
    END LOOP;

13
        
14
END;

15
/

Contoh program diatas, apabila dijalankan maka akan menghasilkan output seperti dibawah ini:

1
Bilangan = 1
2
Bilangan = 2

3
Bilangan = 3
4
Bilangan = 4

5
Bilangan = 5
6


7
PL/SQL procedure successfully completed.


FOR Looping
FOR Looping adalah perulangan dimana kita telah menentukan batas minimal dan maksimal untuk dilakukan proses perulangan (looping).

Sintak Dasar:

Di bawah ini adalah sintak dasar penggunaan FOR looping:

1
FOR nilai IN [ REVERSE ] nilai_bawah..nilai_atas LOOP
2
   statement;

3
END LOOP

Contoh:

Dibawah ini adalah contoh program FOR Looping untuk mencetak bilangan 1 sampai dengan 5. 

1
BEGIN
2
    -- Program untuk mencetak bilangan 1 s/d 5

3
    FOR no IN 1 .. 5 LOOP
4
        DBMS_OUTPUT.PUT_LINE('Bilangan : ' || no);

5
      END LOOP;
6
END;

7
/





Apabila program diatas dijalankan, maka akan keluar output seperti dibawah ini:

1
Bilangan : 1
2
Bilangan : 2

3
Bilangan : 3
4
Bilangan : 4

5
Bilangan : 5

Bagaimana caranya agar kita dapat mencetak bilangan 5 sampai dengan 1 dengan menggunakan looping? Caranya adalah menggunakan tambahan keyword REVERSE pada FOR LOOP diatas, seperti contoh program dibawah ini.

1
BEGIN
2
    -- Program untuk mencetak bilangan 5 s/d 1 Menggunakan REVERSE

3
    FOR no IN REVERSE 1 .. 5 LOOP
4
        DBMS_OUTPUT.PUT_LINE('Bilangan : ' || no);

5
      END LOOP;
6
END;

7
/

Coba Anda jalankan program diatas, maka akan menghasilkan output seperti dibawah ini:

1
Bilangan : 5
2
Bilangan : 4

3
Bilangan : 3
4
Bilangan : 2

5
Bilangan : 1
WHILE Looping
WHILE Looping adalah perulangan yang menggunakan eskpresi boolean, artinya akan dicek terlebih dahulu sebelum melakukan perulangan. Apabila kondisi bernilai TRUE, maka perulangan akan dijalankan sampai kondisi tidak terpenuhi. Sebaliknya kalau bernila FALSE, maka akan keluar dari blok perulangan.

Sintak Dasar:

Dibawah ini adalah sintak dasar penggunakan WHILE Looping: 

1
WHILE kondisi LOOP
2
   statement;

3
END LOOP

Contoh:

Dibawah ini adalah contoh program WHILE Looping untuk mencetak bilangan 1 sampai dengan 5 beserta jumlahnya. 

01
DECLARE
02
   no NUMBER := 0;

03
   jumlah NUMBER := 0;
04
BEGIN

05
    -- Program mencetak angkan 1 s/d 5 dan jumlahnya
06
    WHILE no < 5 LOOP

07
        no := no + 1;
08
        jumlah := jumlah+no;

09
         
10
        DBMS_OUTPUT.PUT_LINE('Angka :' || no);

11
    END LOOP;
12
    DBMS_OUTPUT.PUT_LINE('Jumlah :' || jumlah);  

13
END;
14
/

Coba Anda jalankan program diatas, maka akan menghasilkan output seperti dibawah ini.

1
Angka :1
2
Angka :2

3
Angka :3
4
Angka :4

5
Angka :5
6
Jumlah :15

7

8
PL/SQL procedure successfully completed.

WHERE Clause pada perintah SELECT digunakan untuk menyeleksi data atau record sesuai dengan kondisi yang diinginkan.
Sintak Dasar
Dibawah ini adalah sintak dasar perintah SELECT dengan WHERE Clause.

1
SELECT *
2
FROM nama_table

3
WHERE kondisi;

Contoh: 

1
SELECT *
2
  FROM mahasiswa

3
 WHERE nama = 'Budi';

Perintah diatas akan menampilkan data dari table mahasiswa yang bernama 'Budi'. 

Operator Yang Digunakan
Di bawah ini adalah tabel operator-operator yang sering digunakan dalam WHERE Clause di SELECT Statement.
Operator
Keterangan
=
Sama dengan
!= atau <>
Tidak sama dengan
Lebih besar dari
>=
Lebih besar dari atau sama dengan
Kurang dari
<=
Kurang dari atau sama dengan
IS NULL
Apakah record sama dengan null
IS NOT NULL
Apakah record tidak sama dengan null
IN
Apakah record berada dalam
NOT IN
Apakah record berada diluar
LIKE
Pencarian record berdasarkan wildcard
NOT LIKE
Pencarian record tidak berdasarkan wildcard
BETWEEN
Pencarian record berada dalam range antara nilai minimum dan maksimum
AND
Logika AND (dan)
OR
Logika OR (atau)
Contoh Kasus
Untuk lebih memperjelas pokok bahasan tutorial ini, saya akan memberikan beberapa contoh kasus yang sering banyak digunakan dalam penggunaan WHERE clause.

Silahkan anda ikuti langkah-langkah di bawah ini.

Buat table MAHASISWA untuk menampung data mahasiswa dengan seperti dibawah ini 
01
SQL> CREATE TABLE mahasiswa(
02
  2  npm VARCHAR2(10),

03
  3  nama VARCHAR2(30),
04
  4  gender VARCHAR2(1),

05
  5  jurusan VARCHAR2(30),
06
  6  ipk NUMBER(3,2),

07
  7  PRIMARY KEY(npm)
08
  8  );

09

10
Table created.
Isi data atau Insert Data MAHASISWA dengan data seperti di bawah ini



NPM
Nama
Gender
Jurusan
IPK
20151001
Nurul
P
Akuntansi
3,1
20152001
Budi
L
Teknik Mesin
2,9
20153001
Ida
P
Sastra Inggris
3,5
20154001
Eko
L
Teknik Informatika
3,25
20151002
Dina
P
Akuntansi
3,3
20154002
Doni
L
Teknik Informatika
2,75
20154003
Dinda
P
Teknik Informatika
3,65
20151003
Naura
P
Akuntansi
2,85
20153002
Soni
L
Sastra Inggris
3,3
20154004
Iski
P
Teknik Informatika
3,8
Isi data atau Insert Data MAHASISWA dengan data seperti di bawah ini 

01
SQL> INSERT INTO mahasiswa VALUES('20151001','Nurul','P','Akuntansi',3.1);
02

03
1 row created.
04

05
SQL> INSERT INTO mahasiswa VALUES('20152001','Budi','L','Teknik Mesin',2.9);
06

07
1 row created.
08

09
SQL> INSERT INTO mahasiswa VALUES('20153001','Ida','P','Sastra Inggris',3.5);
10

11
1 row created.
12

13
SQL> INSERT INTO mahasiswa VALUES('20154001','Eko','L','Teknik Informatika',3.25);
14

15
1 row created.
16

17
SQL> INSERT INTO mahasiswa VALUES('20151002','Dina','P','Akuntansi',3.3);
18

19
1 row created.
20

21
SQL> INSERT INTO mahasiswa VALUES('20154002','Doni','L','Teknik Informatika',2.75);
22

23
1 row created.
24

25
SQL> INSERT INTO mahasiswa VALUES('20154003','Dinda','P','Teknik Informatika',3.65);
26

27
1 row created.
28

29
SQL> INSERT INTO mahasiswa VALUES('20151003','Naura','P','Akuntansi',2.85);
30

31
1 row created.
32

33
SQL> INSERT INTO mahasiswa VALUES('20154004','Iski','P','Teknik Informatika',3.8);
34

35
1 row created.
36

37
SQL> commit;
38

39
Commit complete.












Tampilkan semua data Mahasiswa 
1
SQL> SELECT * FROM mahasiswa;
Query diatas akan menampilkan data berikut ini:

Tampilkan semua data Mahasiswa yang berjenis kelamin Pria 
1
SQL> SELECT * FROM mahasiswa
2
  2  WHERE gender = 'L';
Query diatas akan menampilkan data berikut ini:


Tampilkan data mahasiswa berjenis kelamin pria dan yang mempunyai jurusan Teknik Informatika 
1
SQL> SELECT * FROM mahasiswa
2
  2  WHERE gender = 'L'

3
  3  AND jurusan = 'Teknik Informatika';
Query diatas akan menampilkan data berikut ini:


Apa itu Table?
Table adalah salah satu unit dasar penyimpanan data di database Oracle. Table terdiri atas baris (rows) dan kolom (columns). Ketika anda membuat table, pastikan memberikan tipe data yang sesuaing dengan nama kolom tersebut. Apabila data yang akan dimasukkan adalah berupa karakter, maka anda bisa menggunakan tipe data VARCHAR atau VARCHAR2. Jika data yang dimasukkan berupa bilangan/number, anda bisa menggunakan tipe data NUMBER, dan seterusnya.
Panduan Membuat Table
Di bawah ini adalah panduan dasar membuat table di database Oracle: 

Gunakan nama yang jelas dan desktiptif untuk setiap table dan kolom.
Gunakan Komentar untuk table kolom yang mempunyai arti tertentu.
Normalisasi setiap table.
Gunakan tipe data yang sesuai dengan kolom.
Sintak Dasar
Untuk membuat table di database Oracle diperlukan hak akses/privilege CREATE TABLE atau CREATE ANY TABLE. Kalau user/schema tersebut tidak mempunyai privilege diatas, maka akan keluar error "insufficient privileges".

Untuk memberikan hak akses CREATE TABLE, anda bisa menggunakan perintah di bawah ini dengan menggunakan user SYS atau SYSTEM:

1
GRANT CREATE TABLE To nama_user;

Langkah selanjutnya, anda tinggal membuat table sesuai dengan kebutuhan. Dibawah ini adalah sintak dasar untuk membuau table di database Oracle.

1
CREATE TABLE nama_skema.nama_table (
2
         kolom_1 tipe_data [null | not null],

3
         kolom_2 tipe_data [null | not null],
4
         kolom_n tipe_data [null | not null]

5
     );


Contoh
Untuk membuat table di Oracle, ada beberapa langkah yang harus dilakukan yaitu: 
Login ke database oracle
Silahkan anda logi ke database Oracle menggunakan user yang telah anda buat menggunakan perintah di bawah ini pada SQLPlus command prompt. 
1
conn nursalim/nursalim123



Buat Table

Sebagai contoh, buatlah table MAHASISWA dengan dengan spesifikasi berikut: 
Kolom
Tipe Data
Length
npm
varchar2
10
nama
varchar2
30
tempat_lahir
varchar2
30
tanggal_lahir
date

gender
char
1
jurusan
varchar2
30

Anda bisa membuat table diatas dengan menggunakan perintah dibawah ini pada SQLPlus . 
1
CREATE TABLE akademik.mahasiswa(
2
    npm varchar2(10),

3
    nama varchar2(30),
4
    tempat_lahir varchar2(30),

5
    tanggal_lahir date,
6
    gender char(1),

7
    jurusan varchar2(30)
8
);

Memberikan Komentar Pada Table
Setelah anda berhasil membuat table MAHASISWA diatas, anda mungkin ingin membuat komentar tentang table MAHASISWA diatas. Fungsi komentar disini adalah untuk memberikan deskripsi dari suatu table agar table tersebut mudah di baca dan di maitenance.


Untuk membuat sebuah komenta di table dibutuhkan hak akses "COMMENT ANY TABLE" pada user/schema.

Sintak untuk membuat komentar pada table adalah:

1
COMMENT ON nama_skema.nama_table IS 'deskripsi komentar';

Untuk membuat komentar pada suatu table, caranya adalah sebagai berikut:

1
COMMENT ON akademik.mahasiswa is 'Table untuk menyimpan data mahasiswa';

Sedangkan untuk menghapus komentar, anda tinggal memberikan spasi kosong pada deskripsi di perintah COMMENT, caranya adalah :

1
COMMENT ON akademik.mahasiswa is ' ';


Memberikan Komentar Pada Kolom
Sama seperti pada komentar table, Anda juga bisa memberikan komentar pada kolom suatu table. Sintaknya adalah sebagai berikut :

1
COMMENT ON nama_skema.nama_table.nama_kolom IS 'deskripsi komentar';

Contoh :

1
COMMENT ON akademik.mahasiswa.npm IS 'Nomor Pokok Mahasiswa';



Membuat Table Backup (Copy Table)
Untuk membuat table Bakcup atau Mengcopy table, anda bisa menggunakan sintak berikut ini:

1
CREATE TABLE nama_table_tujuan
2
AS SELECT * FROM nama_table_asal;

Sebagai contoh, anda ingin membuat table MAHASISWA_BKP yang struktur table dan datanya sama seperti table MAHASISWA diatas, caranya adalah menggunakan script berikut ini:

1
CREATE TABLE mahasiswa_bkp
2
AS SELECT * FROM mahasiswa;

Contoh Kasus!

Anda ingin membuat table duplikat, tetapi yang di duplikat hanya table-nya saja tidak sama dengan datanya. Bagaimana caranya? Caranya mudah. Anda tinggal menggunakan script seperti di atas dengan sedikit modifikasi menambahkan logika boolean di WHERE clause-nya seperti di bawah ini:

1
CREATE TABLE mahasiswa_bkp
2
AS SELECT * FROM mahasiswa

3
WHERE 1 = 2;







Latihan
Sebagai bahan latihan, cobalah anda kerjakan soal-soal di bawah ini:

Buatlah table DOSEN dan table JURUSAN dengan struktur seperti di bawah ini:

Table DOSEN 
Kolom
Tipe Data
Length
Null?
KODE_DOSEN
VARCHAR2
10
NOT NULL
NAMA_DOSEN
VARCHAR2
40
NOT NULL
TEMPAT_LAHIR
VARCHAR2
40
NOT NULL
TANGGAL_LAHIR
DATE

NOT NULL
GENDER
CHAR
1
NOT NULL

Table JURUSAN 
Kolom
Tipe Data
Length
Null?
KODE_JURUSAN
VARCHAR2
10
NOT NULL
NAMA_JURUSAN
VARCHAR2
40
NOT NULL
DESKRIPSI
VARCHAR2
100
NOT NULL

Buatlah table duplikat dari masing-masing table di atas dengan nama DOSEN_BKP dan JURUSAN_BKP? 






Apa Itu Reserved Word?
Reserved Word atau merupakan salah satu kata atau keyword yang ada di dalam sebuah program atau aplikasi yang tidak boleh digunakan sebagai nama dari suatu variable, konstanta, tabel, synonym, trigger, dan nama lainnya.
Setiap bahasa pemrograma seperti Java, C, Pascal, dan lain sebagainya maupun database seperti Oracle, MySQL, PostgreSQL pasti memiliki reserverd word.

Di bawah ini adalah macam-macam reserved word yang ada di Oracle database:

A
ACCESS
ADD
ALL
ALTER
AND
ANY
AS
ASC
AUDIT
B
BETWEEN
BY

C
CHAR
CHECK
CLUSTER
COLUMN
COMMENT
COMPRESS
CONNECT
CREATE
CURRENT
D
DATE
DECIMAL
DEFAULT
DELETE
DESC
DISTINCT
DROP


E
ELSE
EXCLUSIVE
EXISTS
F
FILE
FLOAT
FOR
FOR


G
GRANT
GROUP

H
HAVING


I
IDENTIFIED
IMMEDIATE
IN
IDENTIFIED
IMMEDIATE
IN
INCREMENT
INDEX
INITIAL
INSERT
INTEGER
INTERSECT
INTO
IS

L
LEVEL
LIKE
LOCK
LONG


M
MAXEXTENTS
MINUS
MLSLABEL
MODE
MODIFY

N
NOAUDIT
NOCOMPRESS
NOT
NOWAIT
NULL
NUMBER
O
OF
OFFLINE
ON
ON
OPTION
OR
ORDER


P
PCTREE
PRIOR
PRIVILEGES
PUBLIC


R
RAW
RENAME
RESOURCE
REVOKEE
ROW
ROWID
ROWLABEL
ROWNUM
ROWS
S
SELECT
SESSION
SET
SHARE
SIZE
SMALLINT
START
SUCCESSFULL
SYNONYM
START
SUCCESSFULL
SYNONYM
SYSDATE


T
TABLE
THEN
TO
TRIGGER


U
UID
UNION
UNIQUE
UPDATE
USER

V
VALIDATE
VALUES
VARCHAR
VARCHAR2
VIEW

WHENEVER
WHERE
WITH

Apa itu Constraint?
Constraint adalah batasan atau aturan yang diaplikasikan terhadap kolom/field suatu table, yang bertujuan untuk menjaga integritas data.
Dengan adanya Constraint, akan meminimalisasi kesalahan data akibat kesalahan memasukan data oleh pengguna.

Pemberian constraint, dapat anda lakukan ketika proses pembuatan table dan bisa juga setelah table dibuat dengan menggunakan perintah ALTER TABLE ADD CONSTRAINT.


Mendefiniskan Constraint
Anda dapat mendefinisikan constraint di Oracle dengan dua cara, yaitu:

Mendefinisikan Constraint Pada Level Column/Field

Anda dapat mendefinisikan constraint pada level kolom dengan menggunakan perintah di bawah ini:
1
...
2
nama_kolom tipe_data[(size)] [ NULL | NOT NULL ] [nama_constraint],

3
....

Mendefinisikan Constraint Pada Level Tabel

Anda dapat mendefinisikan constraint pada level table dengan menggunakan perintah di bawah ini:
01
...
02
nama_kolom tipe_data[(size)] [ NULL | NOT NULL ],

03
nama_kolom tipe_data[(size)] [ NULL | NOT NULL ],
04
[ CONSTRAINT nama_constraint

05
 PRIMARY KEY ( col1, col2, ... ) |
06
 FOREIGN KEY ( col1, col2, ... ) REFERENCES table_2 [ ( col1, col2, ... )

07
  [ ON UPDATE | ON DELETE
08
   [ NO ACTION | SET NULL | SET DEFAULT | CASCADE ]

09
  ]
10
 ] |

11
 UNIQUE ( col1, col2, ... ) |
12
 CHECK ( expression )

13
],
14
...

Menambahkan Constraint Pada Table
Anda dapat menambahkan constraint pada sebuah table menggunakan sintak di bawah ini:

1
ALTER TABLE nama_table
2
ADD CONSTRAINT nama_constraint [PRIMARY KEY|FOREIGN KEY|CHECK|UNIQUE] (nama_kolom);

Contoh:

1
ALTER TABLE pegawai
2
ADD CONSTRAINT PRIMARY KEY(kode_pegawai);


Menghapus Constraint Pada Table
Anda dapat menghapus sebuah constraint pada table dengan menggunakan perintah berikut ini:

1
ALTER TABLE table_name
2
 DROP CONSTRAINT constraint_name;

Contoh

1
ALTER TABLE pegawai
2
DROP CONSTRAINT pegawai_pk;
Macam-Macam Constraint
Database Oracle mempunyai macam-macam Constraint, yaitu: 

Primary Key
Primary Key atau Kunci Utama adalah sebuah kolom atau gabungan dari beberapa kolom yang mendefinisikan sebuah record yang unik. Dalam sebuah table hanya boleh memiliki sebuah (satu)primary key, tidak boleh lebih.

Satu lagi yang paling penting adalah bahwa kolom yang mempunyai Primary Key tidak boleh NULL.

Contohnya adalah sebuah Pegawai tidak boleh memiliki NIP (Nomor Induk Pegawai) yang lebih dari satu (tidak unik).
Foreign Key
Foreign Key atau KunciSebuah kolom yang nilainya mempunyai referensi ke table lainnya. Biasanya table yang menjadi referensi adalah tabel yang mempunyai field Primary Key.
Not Null
Sebuah kolom yang mempunyai constraint NOT NULL artinya bahwa kolom itu tidak boleh null. Contohnya adalah kolom jenis kelamin itu tidak boleh null, karena setiap manusia pasti mempunyai jenis kelamin baik pria maupun wanita.
Unique Key
Constraint Unique Key ini sebenarnya mirip dengan constraint Primary Key, yaitu sama-sama bernilai unik. Bedanya adalah kalau Unique Key ini boleh bernilai NULL sedangkan Primary Key tidak boleh bernilai NULL.

Perbedaan lainnya adalah Unique Key dapat diaplikasikan lebih dari satu pada suatu table, sedangkan Primary Key hanya boleh satu. 
Check
Check Constraint akan mengecek data atau nilai yang masuk, apabila sesuai kondisi yang telah ditentukan maka bernilai true atau boleh masuk, sedangkan kalau bernilai false maka data tidak boleh masuk.

Contohnya adalah sebuah kolom ditable dibuat constraint check > 1000, maka data yang boleh masuk adalah data yang lebih dari 1000.
Default
Default Constraint digunakan untuk memberikan nilai default untuk sebuah kolom. Jika Anda tidak memberikan nilai pada kolom ini, maka secara otomatis akan memberikan nilai default pada kolom ini.
Pada tutorial sebelumnya, kita telah belajar tentang Pengenalan Singkat Constraint di Oracle. Pada tutorial kali ini, kita akan membahas lebih detail macam-macam constraint di Oracle khususnya membahas tentang constraint Primary Key.

1
SQL> CREATE TABLE karyawan(
2
  2  id NUMBER(3,0) PRIMARY KEY,

3
  3  nama VARCHAR2(30),
4
  4  alamat VARCHAR(100),

5
  5  phone_no VARCHAR2(30),
6
  6  PRIMARY KEY(id)

7
  7  );
8


9
Table created.

Sebagai tambahan, Anda juga bisa mendefinisikan constraint pada level table dengan cara menambahkan nama constraint seperti sintak dibawah ini: 
1
CREATE TABLE nama_table(
2
 nama_kolom tipe_data[(size)] [ NULL | NOT NULL ],

3
 nama_kolom tipe_data[(size)] [ NULL | NOT NULL ],
4
 ...,

5
 CONSTRAINT nama_constraint PRIMARY KEY ( nama_kolom, ... ),
6
 ...

7
);

Contoh:
1
SQL> CREATE TABLE karyawan(
2
  id NUMBER(3,0),

3
  nama VARCHAR(30),
4
 alamat VARCHAR(100),

5
 phone_no VARCHAR(20),
6
 CONSTRAINT pk_id PRIMARY KEY(id)

7
);
8


9
Table created.


Add Primary Key Menggunakan Alter Table

Anda dapat menambahkan constraint primary key setelah Anda membuat table dengan perintah ALTER TABLE. Tujuannya adalah ketika Anda lupa mendefinisikan primary key sewaktu membuat table.

Anda dapat menggunakan sintak dibawah ini untuk menambahkan constraint Primary Key:

1
ALTER TABLE nama_table
2
 ADD PRIMARY KEY (column_name, ...);


Contoh:

1
SQL> ALTER TABLE karyawan ADD PRIMARY KEY (id);
2


3
Table altered.


Menampilkan Constraint
Untuk menampilkan constraint yang telah Anda buat, anda bisa menggunakan query di bawah ini:

1
SQL> SELECT constraint_name, constraint_type, table_name
2
  2  FROM user_constraints

3
  3  WHERE table_name = 'KARYAWAN'
4
  4  and constraint_type = 'P';

5

6
CONSTRAINT_NAME                C TABLE_NAME

7
------------------------------ - ------------------------------
8
SYS_C0053518                   P KARYAWAN

table_name pada query diatas, dapat Anda ganti sesuai dengan table yang diinginkan. 

Drop Primary Key
Untuk menghapus constraint primary key, Anda dapat menggunakan sintak di bawah ini:

1
ALTER TABLE nama_table
2
      DROP PRIMARY KEY;

Contoh:

1
ALTER TABLE karyawan DROP PRIMARY KEY;


Atau Anda juga bisa menggunakan perintah dibawah ini: 

1
SQL> ALTER TABLE nama_table DROP CONSTRAINT nama_constraint;

Contoh: 
1
SQL> ALTER TABLE karyawan DROP CONSTRAINT pk_id;
2


3
Table altered.

Apa itu Check Constraint?
Check constraint digunakan untuk memvalidasi data yang masuk apakah sesuai dengan kondisi yang telah ditentukan atau tidak. Check constraint selalu bernilai true atau false. Jika bernilai true artinya data boleh dimasukkan, sedangkan bila bernilai false data ditolak.
Misalkan, sebuah kolom Gender di table Pegawai mempunyai constraint Check yaitu hanya boleh diisi oleh karakter 'L' untuk laki-laki, dan 'P' untuk perempuan, maka ketika ada data yang tidak sesuai selain 'L' dan 'P', maka akan ditolak.

Ketika Anda mencoba untuk memasukkan data yang tidak sesuai dengan kondisi pada Check constraint, maka akan keluar error message "ORA-02290: check constraint xxx violated".


Mendefiniskan Constraint
Ketika Anda membuat sebuah table, Anda dapat langsung mendefinisikan Check constraint dengan dua cara, yaitu:

Mendefinisikan Check constraint pada level kolom/field.

Anda dapat langsung memberikan Check constraint dengan menambahkan langsung pada atribut di kolom atau field. Sintaknya adalah sebagai berikut: 
SQL> CREATE TABLE nama_table(
 nama_kolom tipe_data[(size)] [ NULL | NOT NULL ] CHECK (nama_kolom kondisi),
 nama_kolom tipe_data[(size)] [ NULL | NOT NULL ] CHECK (nama_kolom kondisi),
 ....
);

Contoh:
SQL> CREATE TABLE pegawai(
  2  kode_pegawai VARCHAR2(5) NOT NULL,
  3  nama_pegawai VARCHAR2(40) NOT NULL,
  4  gender CHAR(1) NOT NULL CHECK(gender IN('L','P')),
  5  department VARCHAR2(40) NOT NULL CHECK(department = 'IT'));

Table created.

Keterangan:

- Data yang masuk pada kolom gender hanya boleh data karakter 'L' atau 'P'
- Data yang masuk pada kolom department hanya boleh department 'IT'
- Ketika anda tidak memberikan nama pada constraint Check, secara default Oracle akan memberikan nama Check constraint dengan nama SYS_C0xxx.
Mendefinisikan Check constraint pada level table

Anda dapat mendefinisikan Check constraint pada level table dengan menggunakan perintah dibawah ini:
SQL> CREATE TABLE nama_table(
 nama_kolom tipe_data[(size)] [ NULL | NOT NULL ],
 nama_kolom tipe_data[(size)] [ NULL | NOT NULL ],
 ...,
 CHECK ( nama_kolom kondisi),
 CHECK ( nama_kolom kondisi),
 ...
);

Contoh:
SQL> CREATE TABLE pegawai(
  2  kode_pegawai VARCHAR2(5) NOT NULL,
  3  nama_pegawai VARCHAR2(40) NOT NULL,
  4  gender CHAR(1),
  5  department VARCHAR2(40),
  6  CHECK(gender IN('L','P')),
  7  CHECK(department = 'IT')
  8  );

Table created.

Menambahkan Check Constraint dengan Alter Table
Check constraint tidak hanya Anda buat ketika membuat sebuah table. Anda juga bisa membuat Check constraint setelah table selesai dibuat. Tujuannya adalah ketika Anda lupa untuk memberikan Check constraint pada table.

Anda dapat menambahkan Check constraint dengan perintah "ALTER TABLE ADD CONSTRAINT". Sintaknya adalah sebagai berikut:


SQL> ALTER TABLE nama_table
  ADD CONSTRAINT nama_constraint CHECK(nama_kolom kondisi);


Contoh:


SQL> ALTER TABLE pegawai
   ADD CONSTRAINT check_gender CHECK(gender IN('L','P'));



Menampilkan Check Constraint
Anda dapat menampilkan daftar Check constraint pada suatu table dengan menggunakan query dibawah ini:


SQL> SELECT constraint_name, constraint_type
  2  FROM all_constraints
  3  WHERE table_name = 'PEGAWAI'
  4  AND constraint_type = 'C';

CONSTRAINT_NAME                C
------------------------------ -
SYS_C0053561                   C
SYS_C0053562                   C
SYS_C0053563                   C
SYS_C0053564                   C


Keterangan:

- table_name = 'PEGAWAI' adalah nama table dimana Check constraint dibuat. Nama table harus huruf kapital.
- constraint_type = 'C', adalah tipe dari Check constraint.


Menghapus Constraint Dengan Alter Table
Anda dapat menghapus Check constraint pada suatu table dengan menggunakan perintah dibawah ini:
SQL> ALTER TABLE nama_table
     DROP CONSTRAINT nama_constraint;

Contoh:
SQL> ALTER TABLE pegawai
  2  DROP CONSTRAINT SYS_C0053564;

Table altered.

Apa itu Alter Table?
ALTER TABLE adalah salah satu perintah di Oracle yang digunakan untuk merubah struktur suatu table, seperti melakukan proses dibawah ini:

Menambah suatu kolom di table
Merubah tipe data suatu kolom
Merubah nama table
Menghapus suatu kolom


Menambah Kolom (Add Column)
Untuk menambah kolom pada suatu table, Anda dapat menggunakan perintah berikut ini:

1
ALTER TABLE nama_table
2
        ADD nama_kolom tipe_data[(ukuran)];
Contoh:
1
SQL> ALTER TABLE karyawan
2
        ADD jabatan VARCHAR2(50);

Contoh diatas adalah cara menambahkan satu kolom ke dalam suatu table. Lantas, bagaimana cara menambahkan banyak kolom (multiple) kedalam suatu table? Anda dapat menggunakan perintah dibawah ini:

ALTER TABLE nama_table
        ADD (nama_kolom tipe_data[(ukuran)],
             nama_kolom tipe_data[(ukuran)],
        ...);

Contoh:

1
SQL> ALTER TABLE karyawan
2
   ADD ( jabatan VARCHAR2(50),

3
         manajer VARCHAR2(50),
4
         gaji NUMBER(5));


Merubah Tipe Data Kolom
Anda dapat merubah tipe data di kolom pada suatu table dengan menggunakan perintah dibawah ini:
ALTER TABLE nama_table
     MODIFY nama_kolom tipe_data[(ukuran)];

Contoh:
SQL> ALTER TABLE karyawan
  MODIFY jabatan VARCHAR2(100) NOT NULL;

Merubah atau Modifikasi Banyak Kolom

Anda dapat merubah atau memodifikasi banyak kolom sekaligus pada perintah Alter Table dengan cara menggunakan perintah dibawah ini:



ALTER TABLE nama_table
  MODIFY (kolom_1 tipe_data,
          kolom_2 tipe_data,
          ...
          kolom_n tipe_data);

Contoh:


SQL> ALTER TABLE karyawan
  MODIFY (jabatan VARCHAR2(100) NOT NULL,
          manajer VARCHAR2(100) NOT NULL,
          gaji NUMBER(10) NOT NULL);


Mengubah Nama Kolom di Table
Anda dapat mengubah sebuah nama kolom di table dengan menggunakan perintah dibawah ini:
ALTER TABLE nama_table
  RENAME COLUMN nama_kolom_lama TO nama_kolom_baru;
Contoh:
SQL> ALTER TABLE karyawan
   RENAME COLUMN manajer TO manajer_lama;
Menghapus Kolom di Table
Anda dapat menghapus suatu kolom di table dengan menggunakan sintak dibawah ini:
1
ALTER TABLE nama_table
2
  DROP COLUMN nama_kolom;
Contoh:

SQL> ALTER TABLE karyawan
       DROP COLUMN manajer;

Mengubah Nama Table (Rename Table)
Anda dapat mengubah nama sebuah table dengan menggunakan sintak dibawah ini:

1
ALTER TABLE nama_table_lama
2
  RENAME TO nama_table_baru;

Contoh:


SQL> ALTER TABLE karyawan
       RENAME TO karyawan_backup;

Table altered.