materi oracle sqlplus revisi 15

68
RELATIONAL DATABASE MANAGEMENT SYSTEM (RDBMS) ORACLE Diklat Prajabatan S1/D3 PT PLN (PERSERO) UDIKLAT SEMARANG Oleh: Agus Harya Maulana Novrizal Erdiansyah PT PLN (PERSERO) P3B

Upload: mhusnim9183

Post on 15-Jul-2016

47 views

Category:

Documents


4 download

DESCRIPTION

Pengenalan sqlplus untuk pemula

TRANSCRIPT

Page 1: Materi Oracle sqlplus Revisi 15

RELATIONAL DATABASE MANAGEMENT SYSTEM (RDBMS)

ORACLE

Diklat Prajabatan S1/D3PT PLN (PERSERO) UDIKLAT SEMARANG

Oleh:Agus Harya MaulanaNovrizal Erdiansyah

PT PLN (PERSERO) P3B2005

Page 2: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

Daftar Isi

DAFTAR ISI...................................................................................................................................................2RELATIONAL DATABASE MANAGEMENT SYSTEM.......................................................................................6

1. Perintah SQL (Structured Query Language)................................................................................61.1. Menjalankan Oracle.................................................................................................................61.2. Cara Koneksi............................................................................................................................61.3. Mengaktifkan User HR.............................................................................................................71.4. Perintah Dasar SQL: SELECT.................................................................................................71.5. Melihat Keseluruhan Tabel pada User Tertentu......................................................................81.6. Melihat User di Database........................................................................................................81.6.1. User yang Aktif.........................................................................................................................81.6.2. User yang Ada di dalam Database...........................................................................................81.7. Memilih Semua Kolom.............................................................................................................81.8. Memilih Kolom Tertentu...........................................................................................................81.9. Persyaratan Penulisan Perintah SQL......................................................................................81.10. Default untuk Heading Kolom..................................................................................................92. Ekspresi Aritmatika.......................................................................................................................92.1. Menggunakan Operator Aritmatika.........................................................................................92.2. Tingkatan Operator..................................................................................................................92.3. Menggunakan Parantheses......................................................................................................92.4. Definisi Nilai Null.....................................................................................................................92.5. Nilai Null pada Ekspresi Aritmatika......................................................................................103. Definisi Alias Kolom...................................................................................................................103.1. Menggunakan Alias Kolom....................................................................................................104. Operator Concatenation.............................................................................................................104.1. Menggunakan Operator Concatenation.................................................................................105. Literal Character Strings............................................................................................................105.1. Menggunakan Literal Character Strings................................................................................106. Duplikasi Baris............................................................................................................................116.1. Menghilangkan Duplikasi Baris.............................................................................................117. Perbandingan Pernyataan SQL dengan Perintah iSQL*Plus....................................................117.1. Overview tentang iSQL*Plus.................................................................................................117.2. Menampilkan Struktur Tabel..................................................................................................127.3. Interaksi dengan File Script...................................................................................................127.4. Menyimpan Script Menggunakan Command Line.................................................................137.5. Menggunakan Perintah dari File Script ke iSQL*Plus..........................................................137.6. Menjalankan Script di Command Line...................................................................................137.7. Menyimpan Output Perintah ke Dalam Sebuah File.............................................................138. Membatasi Jumlah Baris Hasil dengan Pilihan.........................................................................148.1. Menggunakan Klausa WHERE..............................................................................................149. String Karakter dan Tanggal......................................................................................................1410. Kondisi Pembanding..............................................................................................................1410.1. Menggunakan Kondisi Pembanding.......................................................................................1410.2. Kondisi Pembanding Lain......................................................................................................1410.2.1. Menggunakan Kondisi BETWEEN....................................................................................1510.2.2. Menggunakan Kondisi IN..................................................................................................1510.2.3. Menggunakan Kondisi LIKE.............................................................................................1510.2.4. Menggunakan Kondisi NULL............................................................................................1511. Kondisi Logika........................................................................................................................1611.1. Menggunakan Operator AND................................................................................................1611.2. Menggunakan Operator OR...................................................................................................1611.3. Menggunakan Operator NOT.................................................................................................1612. Aturan Prioritas......................................................................................................................1713. Klausa ORDER BY.................................................................................................................17

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 2

Page 3: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

13.1. Mengurutkan Baris Secara Descending.................................................................................1713.2. Mengurutkan Baris Berdasarkan Alias Kolom......................................................................1813.3. Mengurutkan Baris Berdasarkan Banyak Kolom...................................................................1814. Fungsi Karakter......................................................................................................................1814.1. Fungsi Case Manipulation.....................................................................................................1814.1.1. Menggunakan Fungsi Case Manipulation.........................................................................1814.2. Fungsi Character-Manipulation............................................................................................1914.2.1. Menggunakan Fungsi Character-Manipulation................................................................1915. Fungsi Angka..........................................................................................................................1915.1. Menggunakan Fungsi ROUND..............................................................................................1915.2. Menggunakan Fungsi TRUNC...............................................................................................2015.3. Menggunakan Fungsi MOD...................................................................................................2016. Menggunakan Tanggal...........................................................................................................2016.1. Aritmatika Menggunakan Tanggal.........................................................................................2016.2. Menggunakan Operator Aritmatika dengan Tanggal............................................................2017. Fungsi Tanggal.......................................................................................................................2117.1. Menggunakan Fungsi Tanggal...............................................................................................2117.2. Menggunakan Fungsi TO_CHAR pada Tanggal...................................................................2117.3. Elemen Model Format Tanggal..............................................................................................2217.4. Menggunakan Fungsi TO_CHAR pada Angka......................................................................2217.5. Menggunakan Fungsi TO_NUMBER dan TO_DATE............................................................2318. Fungsi Umum.........................................................................................................................2318.1. Menggunakan Fungsi NVL.....................................................................................................2318.2. Menggunakan Fungsi NVL2...................................................................................................2418.3. Menggunakan Fungsi NULLIF..............................................................................................2418.4. Menggunakan Fungsi COALESCE........................................................................................2419. Pernyataan Kondisional.........................................................................................................2419.1. Pernyataan CASE...................................................................................................................2419.1.1. Menggunakan Pernyataan CASE......................................................................................2419.2. Fungsi DECODE....................................................................................................................2519.2.1. Menggunakan Fungsi DECODE.......................................................................................2520. Menggabungkan Tabel Menggunakan Sintaks Oracle...........................................................2520.1. Mengambil Record Menggunakan Equijoin...........................................................................2520.2. Menambahkan Kondisi Pencarian Menggunakan Operator AND........................................2620.3. Menggunakan Alias Tabel......................................................................................................2620.4. Menggabungkan Lebih Dari Dua Tabel.................................................................................2620.5. Mengambil Record Menggunakan Non Equijoin...................................................................2621. Sintaks Outer Join..................................................................................................................2621.1. Menggunakan Outer Join.......................................................................................................2622. Menggabungkan Tabel ke Tabel Itu Sendiri..........................................................................2723. Menggabungkan Tabel Menggunakan SQL: Sintaks 1999....................................................2723.1. Menggabungkan Tabel Menggunakan Natural Join..............................................................2723.2. Menggabungkan Tabel Menggunakan Klausa USING..........................................................2723.3. Menggabungkan Tabel Menggunakan Klausa ON................................................................2823.4. LEFT OUTER JOIN...............................................................................................................2823.5. RIGHT OUTER JOIN.............................................................................................................2823.6. FULL OUTER JOIN...............................................................................................................2823.7. Menggabungkan Tabel dengan Kondisi Tambahan...............................................................2824. Menggunakan Fungsi AVG dan SUM....................................................................................2825. Menggunakan Fungsi MIN dan MAX.....................................................................................2826. Menggunakan Fungsi COUNT...............................................................................................2927. Menggunakan Keyword DISTINCT.......................................................................................2928. Fungsi Grup dan Nilai Null....................................................................................................2928.1. Menggunakan Fungsi NVL dengan Fungsi Grup..................................................................2929. Membuat Grup Data: Menggunakan Klausa GROUP BY.....................................................2929.1. Menggunakan Klausa GROUP BY.........................................................................................29

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 3

Page 4: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

29.2. Menggunakan Klausa GROUP BY pada Banyak Kolom.......................................................3029.3. Query Ilegal Menggunakan Fungsi Grup..............................................................................3029.4. Menggunakan Klausa HAVING.............................................................................................3029.5. Gabungan Fungsi Grup..........................................................................................................3130. Menggunakan Subquery.........................................................................................................3130.1. Subquery Satu Baris...............................................................................................................3130.1.1. Menggunakan Subquery Satu Baris...................................................................................3130.1.2. Menggunakan Fungsi Grup dalam Subquery....................................................................3230.2. Klausa HAVING dalam Subquery..........................................................................................3230.3. Subquery Multi-Baris.............................................................................................................3230.4. Menggunakan Operator ANY pada Subquery Multi-Baris....................................................3330.5. Menggunakan Operator ALL pada Subquery Multi-Baris.....................................................3330.6. Nilai Null pada Subquery.......................................................................................................3331. Menggunakan Variabel Pengganti &.....................................................................................3331.1. Nilai Karakter dan Waktu Menggunakan Variabel Pengganti..............................................3431.2. Mendefinisikan Nama Klom, Ekspresi, dan Teks...................................................................3431.3. Perintah DEFINE dan UNDEFINE.......................................................................................3431.4. Menggunakan Variabel Pengganti &&..................................................................................3431.5. Menggunakan Perintah VERIFY............................................................................................3431.6. Menggunakan Perintah COLUMN.........................................................................................3431.7. Model Format Kolom.............................................................................................................3531.8. Mengatur Lebar Kolom (Hanya untuk Teks)..........................................................................3531.9. Mengubah Setting Bahasa pada Oracle.................................................................................3531.10. Menggunakan Perintah BREAK........................................................................................3531.11. Menggunakan Perintah TTITLE dan BTITLE...................................................................3531.12. Membuat File Script untuk Menghasilkan Laporan..........................................................3632. Membuat dan Mengatur Tabel...............................................................................................3732.1. Aturan Penamaan...................................................................................................................3732.2. Perintah CREATE TABLE......................................................................................................3732.3. Query terhadap Data Dictionary...........................................................................................3732.4. Membuat Tabel Menggunakan Subquery...............................................................................3732.5. Menyalin Baris dari Tabel Lain.............................................................................................3832.6. Perintah ALTER TABLE.........................................................................................................3832.7. Menambah Kolom..................................................................................................................3832.8. Modifikasi Kolom...................................................................................................................3932.9. Menghapus Kolom..................................................................................................................3932.10. Membuat Objek Sequence..................................................................................................3932.10.1. Menggunakan Objek Sequence..........................................................................................3932.11. Option SET UNUSED........................................................................................................3932.12. Menghapus Tabel...............................................................................................................4032.13. Mengubah Nama Objek.....................................................................................................4032.14. Truncate Table...................................................................................................................4032.15. Menambah Komentar pada Tabel.....................................................................................4033. Manipulasi Data.....................................................................................................................4133.1. Menambah Baris dengan Nilai Null.......................................................................................4133.2. Mengisi Nilai Waktu Tertentu................................................................................................4133.3. Mengisi Tabel Menggunakan Script.......................................................................................4133.4. Update Baris dalam Tabel......................................................................................................4133.5. Update Dua Kolom Menggunakan Subquery.........................................................................4133.6. Menghapus Baris pada Tabel.................................................................................................4233.7. Menghapus Baris Mengacu Pada Tabel Lain........................................................................4233.8. Integrity Constraint Error Saat Menghapus Baris.................................................................4233.9. Menggunakan Subquery Pada Perintah INSERT...................................................................4234. Perintah MERGE....................................................................................................................4235. Commit Data..........................................................................................................................4336. ROLLBACK dan Status Data Setelah ROLLBACK................................................................43

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 4

Page 5: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

36.1. Penggunaan SAVEPOINT dan ROLLBACK..........................................................................4437. Konsistensi Pembacaan (Read Consistency)..........................................................................4538. Membuat Tablespace..............................................................................................................4539. Membuat Index.......................................................................................................................4640. Mengontrol Akses Pengguna..................................................................................................4740.1. Privilege Sistem......................................................................................................................4740.2. Membuat User........................................................................................................................4740.3. Typical User Privileges..........................................................................................................4740.4. Memberi Grant Pada Privilege Sistem...................................................................................4741. Role.........................................................................................................................................4741.1. Membuat dan Memberikan Privilege pada Sebuah Role.......................................................4742. Mengubah Password..............................................................................................................4843. Grant Object Privilege...........................................................................................................4844. Menggunakan Keyword WITH GRANT OPTION dan PUBLIC............................................4845. Mencabut (Revoke) Object Privilege......................................................................................4846. Tabel Eksternal.......................................................................................................................4846.1. Membuat Directory................................................................................................................4846.2. Contoh File Teks.....................................................................................................................4946.3. Membuat Tabel Eksternal.......................................................................................................4947. Menampilkan Hasil Query Dalam Format Web....................................................................5047.1. Membuat File HTML..............................................................................................................5047.2. Membuat File SQL.................................................................................................................54

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 5

Page 6: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

Relational Database Management System

1. Perintah SQL (Structured Query Language)

Perintah IstilahSELECT Data retrievalINSERTUPDATEDELETEMERGE

Data manipulation language (DML)

CREATEALTERDROPRENAMETRUNCATE

Data definition language (DDL)

COMMITROLLBACKSAVEPOINT

Transaction control

GRANTREVOKE

Data control language (DCL)

1.1.Menjalankan Oracle

Apabila kita ingin menjalankan Oracle pada komputer yang berbasiskan Windows, kita dapat melakukan salah satu langkah berikut:a. Klik Start, Program, Oracle, cari menu Sqlplus Applicationb. Klik Start, Run, ketikkan cmd di menu Open (running under DOS),

kemudian jalankan perintah berikut:- sqlplus /nolog- conn / as sysdba atau conn <user>/<password>

c. Buka Internet Explorer, kemudian masukkan address:http://localhost/isqlplus atauhttp://<IP_address>/isqlplus

Apabila kita akan menjalankan Oracle pada komputer yang berbasiskan UNIX atau Linux, maka kita dapat melakukan langkah berikut:a. Buka terminal windowb. Masukkan perintah: sqlplus <user>/<password>@<nama_database>

1.2.Cara Koneksi

Untuk melakukan koneksi ke Oracle, kita dapat melakukan langkah berikut:a. CONN <user>/<password>

Misal: CONN SCOTT/TIGERb. CONN <user>, kemudian masukkan password

Misal: CONN SCOTT, kemudian masukkan password: TIGER

1.3.Mengaktifkan User HR

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 6

Page 7: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

Salah satu user yang telah disediakan pada saat menginstall Oracle adalah user HR. Pada kondisi awal (default) user ini dalam kondisi di-lock. Kita dapat mengaktifkan (unlock) user ini dengan langkah berikut:

- Connect sebagai DBAo CONN / AS SYSDBA;

- Unlock user HR dan berikan passwordo ALTER USER HR ACCOUNT UNLOCK;o ALTER USER HR IDENTIFIED BY HR;o CONN HR/HR;

1.4.Perintah Dasar SQL: SELECT

SELECT *|{[DISTINCT] column|expression [alias],…}FROM table;

- SELECT mengidentifikasikan kolom- FROM mengidentifikasikan table

Dengan menggunakan perintah SELECT dapat dilakukan hal-hal sebagai beikut : Projection : menampilkan kolom tertentu pada tabel yang bersangkutan. Selection : menampilkan baris tertentu pada tabel yang bersangkutan. Joining : menampilkan kolom atau baris tertentu pada dua atau lebih

tabel yang saling berhubungan.

Projection Selection                                                                                                                                                        

Tabel-1 Tabel-2                                                                         Joining                                                                                            

Dalam penulisan SQL dikenal istilah-istilah yang umum digunakan, antara lain : Keyword : Individual SQL statement, umumnya dituliskan dengan huruf

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 7

Page 8: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

kapital. Contohnya : SELECT dan FROM Clause : Part of SQL Statement.

Contohnya : SELECT last_name,department_id Statement : Kombinasi dua atau lebih dari clause.

Contohnya : SELECT last_name,department_id FROM departments;

1.5.Melihat Keseluruhan Tabel pada User Tertentu

SELECT * FROM TAB;

1.6.Melihat User di Database1.6.1. User yang Aktif

SELECT USER FROM DUAL; atauSHOW USER;

1.6.2. User yang Ada di dalam Database

CONN / AS SYSDBA; atau CON SYSTEM/<password>;SELECT USERNAME FROM DBA_USERS;

1.7.Memilih Semua Kolom

SELECT *FROM departments;

1.8.Memilih Kolom Tertentu

SELECT department_id, location_idFROM departments;

1.9.Persyaratan Penulisan Perintah SQL

- Perintah SQL adalah tidak case sensitive- Perintah SQL dapat berupa satu atau lebih baris- Keyword tidak dapat dapat disingkat atau dipisah menjadi beberapa baris- Klausa ditempatkan pada baris terpisah- Indent digunakan untuk meningkatkan readability

1.10. Default untuk Heading Kolom

- iSQL*Plus:o Default heading justification : Centero Default heading display : Uppercase

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 8

Page 9: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

- SQL*Plus:o Heading kolom karakter dan tanggal : Left-justifiedo Heading kolom nomor : Right-justifiedo Default heading display : Uppercase

2. Ekspresi Aritmatika

Operator Deskripsi+ Tambah- Kurang* Kali/ Bagi

2.1.Menggunakan Operator Aritmatika

SELECT last_name, salary, salary + 500FROM employees;

2.2.Tingkatan Operator

* / + -

- Perkalian dan pembagian memiliki prioritas lebih tinggi daripada penambahan dan pengurangan

- Operator dengan tingkat prioritas yang sama dievaluasi dari kiri ke kanan- Parantheses (dalam kurung) digunakan untuk membuat prioritas sendiri

sesuai keinginan

SELECT last_name, salary, 12*salary+500FROM employees;

2.3.Menggunakan Parantheses

SELECT last_name, salary, 12*(salary+500)FROM employees;

2.4.Definisi Nilai Null

- Null adalah sebuah nilai yang bersifat unavailable, unassigned, unknown, atau inapplicable

- Null tidak sama dengan nol (zero) atau blank space

SELECT last_name, job_id, salary, commission_pctFROM employees;

2.5.Nilai Null pada Ekspresi Aritmatika

SELECT last_name, 12*salary*commission_pctFROM employees;

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 9

Page 10: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

3. Definisi Alias KolomAlias kolom :

- Mengganti nama heading kolom- Mengikuti nama kolom, dapat berupa keyword optional AS diantara nama

kolom dan alias- Membutuhkan double quotation jika berisikan space atau karakter spesial

atau case sensitive

3.1.Menggunakan Alias Kolom

SELECT last_name AS nama, commission_pct commFROM employees; SELECT last_name “Nama”, salary*12 “Gaji Tahunan”FROM employees;

4. Operator ConcatenationOperator concatenation:

- Menggabungkan kolom atau string karakter dengan kolom lain- Direpresentasikan dengan dua vertical bar (||)

4.1.Menggunakan Operator Concatenation

SELECT last_name || job_id AS “Pegawai”FROM employees;

5. Literal Character Strings- Literal merupakan karakter, nomor, atau tanggal yang terdapat pada list

SELECT- Nilai literal tanggal dan karakter harus diapit dengan tanda kutip tunggal- Setiap string karakter dihasilkan sekali untuk setiap baris

5.1.Menggunakan Literal Character Strings

SELECT last_name ||’ adalah seorang ‘||job_id AS “Detail Pegawai”FROM employees;

Contoh lain:SELECT last_name ||’: 1 bulan gaji = ‘|| salary BulananFROM employees;

6. Duplikasi BarisSecara default, tampilan hasil query adalah semua baris, termasuk duplikasi baris

SELECT department_idFROM employees;

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 10

Page 11: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

6.1.Menghilangkan Duplikasi BarisUntuk menghilangkan duplikasi baris kita dapat menggunakan keyword DISTINCT pada klausa SELECT

SELECT DISTINCT department_idFROM employees;

Contoh lain:SELECT DISTINCT department_id, job_idFROM employees;

7. Perbandingan Pernyataan SQL dengan Perintah iSQL*Plus

SQL iSQL*PlusLanguage EnvironmentStandar ANSI Milik OracleKeyword tidak dapat disingkat Keyword dapat disingkat

Dijalankan di browserBersifat central, tidak diimplementasikan pada tiap komputer

7.1.Overview tentang iSQL*PlusSetelah kita log in ke iSQL*Plus, kita dapat:

- Describe struktur tabel- Edit perintah SQL- Eksekusi SQL dari iSQL*Plus- Menyimpan perintah SQL menjadi sebuah file- Eksekusi perintah yang tersimpan pada saved file- Load perintah dari sebuah file teks ke edit window iSQL*Plus

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 11

Page 12: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

Keterangan gambar :1. Edit window : Area dimana perintah dan statement iSQL*Plus

dituliskan2. Execute button : Tombol untuk mengeksekusi perintah atau statement

yang tercantum di menu edit window3. Save script button : Tombol untuk menyimpan statement yang dituliskan

dalam edit window kedalam sebuah file4. Clear Screen button: Tombol untuk menghapus statement yang tercantum

dalam edit window5. Cancel button : Tombol untuk membatalkan perintah terakhir6. Script locator : Mengidentifikasi nama dan lokasi dari file script yang

akan dieksekusi7. Browse button : Digunakan untuk mencari file script dengan

memanfaatkan dialog box Windows File Open 8. Load script : Tombol untuk mengeksekusi statement yang ada di

file script dalam script locator

7.2.Menampilkan Struktur TabelDengan perintah DESCRIBE, kita dapat menampilkan struktur dari sebuah tabel

DESC[RIBE] tablename

DESCRIBE employees

7.3.Interaksi dengan File ScriptKita dapat menyimpan perintah dari edit window di iSQL*Plus menjadi sebuah file script text sebagai berikut:

- Ketikkan perintah SQL pada edit window iSQL*Plus

SELECT last_name, hire_date, salaryFROM employees;

- Klik tombol Save Script. Kemudian akan muncul kotak dialog Windows File Save. Isikan nama file dan tentukan tujuannya.

7.4.Menyimpan Script Menggunakan Command LineSelain menggunakan iSQL*Plus, kita dapat pula menggunakan command line untuk menyimpan perintah atau script SQL di Orace. Caranya adalah sebagai berikut:

a. SPOOL <lokasi_file>;b. <Masukkan perintah>;c. SPOOL OFF;d. Cek di lokasi file

SPOOL C:\Training\Hari1.sql;SELECT * FROM departments;SPOOL OFF;

7.5.Menggunakan Perintah dari File Script ke iSQL*PlusKita dapat menggunakan perintah sebelumnya yang telah disimpan menjadi file ke dalam iSQL*Plus sebagai berikut:

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 12

Page 13: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

- Ketikkan nama script dan lokasinya. Atau kita dapat pula mengklik tombol Browse untuk mencari lokasi dan nama file script.

D:\temp\emp_sql.htm

- Klik tombol Load Script. Isi file akan ditampilkan pada edit window iSQL*Plus- Klik tombol Execute untuk menjalankan perintah pada edit window iSQL*Plus

7.6.Menjalankan Script di Command LineKita dapat menjalankan script yang telah disimpan menggunakan perintah di command line, yaitu sebagai berikut:

@<lokasi_file>Contoh: @C:\Training\Test1

7.7.Menyimpan Output Perintah ke Dalam Sebuah FileKita dapat menyimpan hasil dari sebuah perintah SQL atau iSQL*Plus ke dalam sebuah file:

- Ketikkan perintah SQL dan iSQL*Plus pada edit window di iSQL*Plus- Ubah output option menjadi Save- Klik tombol Execute untuk menjalankan perintah pada edit window iSQL*Plus.

Kemudian akan muncul kotak dialog Windows File Save. Isikan nama file, dengan ekstensi default .html. Tipe file dapat diubah. Hasilnya akan dikirimkan pada file tersebut.

8. Membatasi Jumlah Baris Hasil dengan Pilihan

SELECT *|{[DISTINCT] column/expression [alias],…}FROM table[WHERE condition(s];

8.1.Menggunakan Klausa WHERE

SELECT employee_id, last_name, job_id, department_idFROM employeesWHERE department_id = 90;

9. String Karakter dan Tanggal- String karakter dan tanggal diapit dengan tanda kutip tunggal- Karakter bersifat case sensitive, dan tanggal bersifat format sensitive- Format tanggal default adalah DD-MON-RR

SELECT last_name, job_id, department_idFROM employeesWHERE last_name = ‘Whalen’;

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 13

Page 14: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

10. Kondisi Pembanding

Operator Arti= Sama dengan> Lebih dari

>= Lebih dari atau sama dengan< Kurang dari

<= Kurang dari atau sama dengan<> Tidak sama dengan

10.1. Menggunakan Kondisi Pembanding

SELECT last_name, salaryFROM employeesWHERE salary <= 3000;

10.2. Kondisi Pembanding Lain

Operator ArtiBETWEEN … AND … Diantara dua nilaiIN(set) Memenuhi beberapa dari nilai dalam listLIKE Memenuhi pola karakterIS NULL Sama dengan nilai null

10.2.1. Menggunakan Kondisi BETWEEN

Kondisi BETWEEN digunakan untuk menampilkan baris berdasarkan range nilai yang telah ditentukan.

SELECT last_name, salaryFROM employeesWHERE salary BETWEEN 2500 AND 3500;

10.2.2. Menggunakan Kondisi INKondisi IN digunakan untuk menguji nilai yang terdapat dalam list

SELECT employee_id, last_name, salary, manager_idFROM employeesWHERE manager_id IN (100, 101, 201);

SELECT employee_id, manager_id, department_idFROM employeesWHERE last_name IN (‘Hartstein’, ‘Vargas’);

10.2.3. Menggunakan Kondisi LIKE

- Kondisi LIKE digunakan untuk mencari string yang valid menggunakan wildcard

- Kondisi pencarian dapat berisikan karakter literal atau nomor:

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 14

Page 15: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

o % menunjukkan zero atau banyak karaktero _ menunjukkan satu karakter

SELECT first_nameFROM employeesWHERE first_name LIKE ‘S%’;

SELECT last_name, hire_dateFROM employeesWHERE hire_date LIKE ‘%95’;

Kita dapat pula mengkombinasikan pola-pola tersebut di atas sebagai berikut:SELECT last_nameFROM employeesWHERE last_name LIKE ‘_o%’;

Selain itu kita dapat pula menggunakan identifier ESCAPE untuk mencari special karakter % dan _ yang sebenarnyaSELECT employee_id, last_name, job_idFROM employeesWHERE job_id LIKE ‘%SA\_%’ ESCAPE ‘ \ ‘;

10.2.4. Menggunakan Kondisi NULL

SELECT last_name, manager_idFROM employeesWHERE manager_id IS NULL;

SELECT last_name, job_id, commission_pctFROM employeesWHERE commission_pct IS NULL;

11. Kondisi Logika

Operator ArtiAND Menghasilkan TRUE jka kedua kondisi

komponen benarOR Menghasilkan TRUE jika salah satu

kondisi komponen benarNOT Menghasilkan TRUE jika kondisi bernilai

salah

11.1. Menggunakan Operator AND

SELECT employee_id, last_name, job_id, salaryFROM employeesWHERE salary >=10000AND job_id LIKE ‘%MAN%’;

Berikut adalah tabel kebenaran untuk kondisi AND

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 15

Page 16: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

AND TRUE FALSE NULLTRUE TRUE FALSE NULLFALSE FALSE FALSE FALSENULL NULL FALSE NULL

11.2. Menggunakan Operator OR

SELECT employee_id, last_name, job_id, salaryFROM employeesWHERE salary >= 10000OR job_id LIKE ‘%MAN%’;

Berikut adalah tabel kebenaran untuk kondisi OROR TRUE FALSE NULLTRUE TRUE TRUE TRUEFALSE TRUE FALSE NULLNULL TRUE NULL NULL

11.3. Menggunakan Operator NOT

SELECT last_name, job_idFROM employeesWHERE job_id NOT IN (‘IT_PROG’, ‘ST_CLERK’, ‘SA_REP’);

Berikut adalah tabel kebenaran untuk kondisi NOTNOT TRUE FALSE NULL

FALSE TRUE NULL

12. Aturan Prioritas

Tingkat Evaluasi Operator1 Operator aritmatika2 Operator concatenation3 Kondisi pembanding4 IS [NOT] NULL, LIKE, [NOT] IN 5 [NOT] BETWEEN6 Kondisi logika NOT7 Kondisi logika AND8 Kondisi logika OR

SELECT last_name, job_id, salaryFROM employeesWHERE job_id = ‘SA_REP’OR job_id = ‘AD_PRES’AND salary > 15000;

Kita dapat menentukan sendiri prioritas yang diinginkan dengan menambahkan tanda dalam kurung seperti berikut:

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 16

Page 17: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

SELECT last_name, job_id, salaryFROM employeesWHERE (job_id = ‘SA_REP’OR job_id = ‘AD_PRES’)AND salary > 15000;

13. Klausa ORDER BYKita dapat mengurutkan baris menggunakan klausa ORDER BY- ASC : order secara ascending- DESC : order secara descendingKlausa ORDER BY berada pada urutan terakhir pada pernyataan SELECT

SELECT last_name, job_id, department_id, hire_dateFROM employeesORDER BY hire_date;

13.1. Mengurutkan Baris Secara Descending

SELECT last_name, job_id, department_id, hire_dateFROM employeesORDER BY hire_date DESC;

13.2. Mengurutkan Baris Berdasarkan Alias Kolom

SELECT employee_id, last_name, salary*12 tahunanFROM employeesORDER BY tahunan;

13.3. Mengurutkan Baris Berdasarkan Banyak Kolom

SELECT last_name, department_id, salaryFROM employeesORDER BY department_id, salary DESC;

Kita dapat mengurutkan baris berdasarkan kolom yang tidak ada pada list SELECT.SELECT last_name, salaryFROM employeesORDER BY department_id, salary DESC;

14. Fungsi KarakterFungsi case-manipulation Fungsi character-manipulation

LOWERUPPERINITCAP

CONCATSUBSTRLENGTHINSTRLPAD | RPADTRIMREPLACE

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 17

Page 18: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

14.1. Fungsi Case ManipulationFungsi ini bertujuan untuk mengubah case pada string karakter, sebagai berikut:

Fungsi HasilLOWER(‘SQL Course’) sql courseUPPER(‘SQL Course’) SQL COURSEINITCAP(‘SQL Course’) Sql Course

14.1.1. Menggunakan Fungsi Case Manipulation

SELECT employee_id, last_name, department_idFROM employeesWHERE last_name = ‘higgins’;No rows selected

SELECT employee_id, last_name, department_idFROM employeesWHERE LOWER(last_name) = ‘higgins’;

Pernyataan yang terakhir menghasilkan row yang memenuhi kriteria di atas. Dengan demikian penggunaan LOWER dapat menghasilkan query yang akurat.

14.2. Fungsi Character-Manipulation

Fungsi HasilCONCAT(‘Selamat’, ‘Pagi’) SelamatPagiSUBSTR(‘SelamatPagi’,1,5) SelamLENGTH(‘SelamatPagi’) 11INSTR(‘SelamatPagi’, ‘P’) 8LPAD(salary,10,’*’) *****24000RPAD(salary,10,’*’) 24000*****TRIM(‘S’ FROM ‘SelamatPagi’) elamatPagi

14.2.1. Menggunakan Fungsi Character-Manipulation

SELECT employee_id, CONCAT(first_name, last_name) NAMA, job_id, LENGTH (last_name), INSTR(last_name), ‘a’) “Mengandung ‘a’? “FROM employeesWHERE SUBSTR(job_id, 4) = ‘REP’;

SELECT employee_id, CONCAT(first_name, last_name) NAMA, LENGTH (last_name), INSTR(last_name), ‘a’) “Mengandung ‘a’? “FROM employeesWHERE SUBSTR(last_name, -1, 1) = ‘n’;

SELECT REPLACE(‘JAKARTA’,’KARTA’,’CKMANIA’) FROM dual;

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 18

Page 19: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

SELECT SUBSTR(last_name,3,5) FROM employees;

15. Fungsi Angka- ROUND: Membulatkan angka sesuai dengan hukum Aritmatika

o ROUND(45.926, 2) 45.93- TRUNC: Membulatkan angka ke bawah

o TRUNC(45.926, 2) 45.92- MOD: Sisa hasil bagi

o MOD(1600, 300) 100

15.1. Menggunakan Fungsi ROUND

SELECT ROUND(45.923,2), ROUND(45.923,0), ROUND(45.923,-1)FROM DUAL;

DUAL adalah tabel dummy yang dapat kita gunakan untuk melihat hasil sebuah fungsi atau kalkulasi.

15.2. Menggunakan Fungsi TRUNC

SELECT TRUNC(45.923,2), TRUNC(45.923), TRUNC(45.923,-2)FROM DUAL;

15.3. Menggunakan Fungsi MOD

SELECT last_name, salary, MOD(salary, 5000)FROM employeesWHERE job_id = ‘SA_REP’;

16. Menggunakan Tanggal- Database Oracle menyimpan tanggal dalam bentuk format numerik internal

yaitu: abad, tahun, bulan, hari, jam, menit, detik- Format tampilan tanggal default adalah DD-MON-RR

SELECT last_name, hire_dateFROM employeesWHERE last_name like ‘G%’;

SYSDATE adalah fungsi yang dapat menghasilkan waktu dan tanggal.SELECT SYSDATEFROM DUAL;

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 19

Page 20: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

16.1. Aritmatika Menggunakan Tanggal- Menambah atau mengurangi angka ke atau dari sebuah tanggal, nilai yang

dihasilkan dalam bentuk tanggal- Mengurangi dua tanggal menghasilkan jumlah hari antara kedua tanggal

tersebut- Menambah jam pada sebuah tanggal dengan membagi jumlah jam dengan 24

Operasi HasilTanggal + angka TanggalTanggal – angka TanggalTanggal – tanggal Jumlah hariTanggal + angka/24 Tanggal

16.2. Menggunakan Operator Aritmatika dengan Tanggal

SELECT last_name, (SYSDATE-hire_date)/7 AS WEEKSFROM employeesWHERE department_id = 90;

SELECT TO_DATE(’20-04-04’,’DD-MM-YY’) - TO_DATE(’10-04-04’,’DD-MM-YY’)FROM DUAL;

SELECT SYSDATE + NUMTODSINTERVAL(3,’HOUR’) “3 Jam Lagi”FROM DUAL;

17. Fungsi Tanggal

Fungsi DeskripsiMONTHS_BETWEEN Jumlah bulan diantara dua tanggalADD_MONTHS Menambah jumlah bulan pada tanggalNEXT_DAY Tanggal berikutnya pada hari yang

ditentukanLAST_DAY Tanggal terakhir pada bulan tertentuROUND Round tanggalTRUNC Truncate tanggal

17.1. Menggunakan Fungsi Tanggal

Fungsi HasilMONTHS_BETWEEN (’01-SEP-95’, ’11-JAN-94’) 19.6774194ADD_MONTHS (’11-JAN-94’, 6) ‘11-JUL-94’NEXT_DAY (’01-SEP-95’, ‘FRIDAY’) ’08-SEP-95’LAST_DAY (’01-FEB-95’) ’28-FEB-95’

Jika diasumsikan SYSDATE = ’25-JUL-95’ makaFungsi Hasil

ROUND(SYSDATE, ‘MONTH’) 01-AUG-95ROUND(SYSDATE, ‘YEAR’) 01-JAN-96TRUNC(SYSDATE, ‘MONTH’) 01-JUL-95

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 20

Page 21: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

TRUNC(SYSDATE, ‘YEAR’) 01-JAN-95

SELECT employee_id, hire_date, ROUND(hire_date, ‘MONTH’), TRUNC(hire_date, ‘MONTH’)FROM employeesWHERE hire_date LIKE ‘%97’;

17.2. Menggunakan Fungsi TO_CHAR pada Tanggal

TO_CHAR(date, ‘format_model’)

Format model:- Harus diapit dengan tanda kutip tunggal dan case sensitive- Dapat berisikan elemen dengan format tanggal yang valid- Memiliki elemen fm untuk menghilangkan space kosong atau menghilangkan

leading zero- Dipisahkan dari tanggal menggunakan koma

SELECT employee_id, TO_CHAR(hire_date, ‘MM/YY’) BulanFROM employeesWHERE last_name = ‘Higgins’;

SELECT last_name, TO_CHAR(hire_date, ‘fmDD Month YYYY’ ) AS TANGGALFROM employees;

17.3. Elemen Model Format Tanggal

Elemen MaknaYYYY Tahun secara lengkap dalam bentuk

angkaYEAR Tahun MM Bulan dalam bentuk angka 2 digitMONTH Bulan dalam bentuk nama lengkapMON Bulan dalam bentuk singkatan 3 hurufDY Hari dalam bentuk singkatan 3 hurufDAY Hari dalam bentuk nama lengkapDD Tanggal

Format dari elemen waktu menentukan tampilan dari waktu pada Oracle.Sebagai contoh:HH24:MI:SS AM 15:45:32 PM

Kita dapat pula menyelipkan karakter diantara elemen waktu dengan menambahkan tanda kutip ganda diantaranya.DD “of” MONTH 17 of AUGUST

Tanggal dapat pula ditampilkan dalam bentuk kata sebagai berikut:ddspth Fourteenth

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 21

Page 22: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

17.4. Menggunakan Fungsi TO_CHAR pada Angka

TO_CHAR(number, ‘format_model’ )

Berikut ini adalah beberapa elemen format yang dapat kita gunakan dengan fungsi TO_CHAR, untuk menampilkan angka sebagai karakter9 Menunjukkan angka0 Memaksakan angka 0 untuk ditampilkan$ Menempatkan tanda dolarL Menggunakan simbl mata uang lokal. Menampilkan penanda desimal, Menampilkan penanda ribuan

SELECT TO_CHAR(salary, ‘$99,999.00’ ) GAJIFROM employeesWHERE last_name = ‘Ernst’;

17.5. Menggunakan Fungsi TO_NUMBER dan TO_DATEUntuk mengubah karakter menjadi format angka kita dapat menggunakan fungsi TO_NUMBER:TO_NUMBER(char[, ‘format_model’])

Untuk mengubah karakter menjadi format tanggal kita dapat menggunakan fungsi TO_DATE:TO_DATE(char[, ‘format_model’])

Fungsi-fungsi di atas memiliki modifier fx. Fungsi modifier ini dapat dilihat dengan menggunakan contoh berikut iniSELECT last_name, hire_dateFROM employeesWHERE hire_date = TO_DATE(‘May 24, 1999’, ‘fxMonth DD, YYYY’);SELECT last_name, hire_dateFROM employeesWHERE hire_date = TO_DATE(‘May24, 1999’, ‘fxMonth DD, YYYY’);

SELECT last_name, hire_dateFROM employeesWHERE hire_date = TO_DATE(‘May 24, 1999’, ‘fxMonthDD, YYYY’);

18. Fungsi UmumBeberapa fungsi umum antara lain:

- NVL (pernyataan1, pernyataan2)- NVL2 (pernyataan1, pernyataan2, pernyataan3)- NULLIF (pernyataan1, pernyataan2)- COALESCE (pernyataan1, pernyataan2, …, pernyataann)

Deskripsi dari fungsi-fungsi di atas dapat dijelaskan sebagai berikut:Fungsi Deskripsi

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 22

Page 23: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

NVL Mengubah nilai null menjadi nilai aktualNVL2 Jika pernyataan1 tidak null, maka hasilnya adalah

pernyataan2. Jika pernyataan1 null, maka hasilnya adalah pernyataan3.

NULLIF Membandingkan dua pernyataan dan menghasilkan null jika kedua pernyataan sama, atau menghasilkan pernyataan pertama jika kedua pernyataan tidak sama

COALESCE Menghasilkan pernyataan tidak null yang pertama dalam list

18.1. Menggunakan Fungsi NVL

SELECT last_name, salary, NVL(commission_pct, 0), (salary*12) + (salary*12*NVL(commission_pct, 0)) AN_SALFROM employees;

SELECT last_name, salary, commission_pct, (salary*12) + (salary*12*commission_pct) AN_SALFROM employees;

18.2. Menggunakan Fungsi NVL2

SELECT last_name, salary, commission_pct, NVL2(commission_pct, ‘SAL+COMM’, ‘SAL’ ) incomeFROM employeesWHERE department_id IN (50, 80);

18.3. Menggunakan Fungsi NULLIF

SELECT first_name, LENGTH(first_name) “expr1”, last_name, LENGTH(last_name) “expr2”, NULLIF(LENGTH(first_name), LENGTH(last_name)) resultFROM employees;

18.4. Menggunakan Fungsi COALESCE

SELECT last_name, commission_pct, salary, COALESCE(commission_pct, salary, 10) commFROM employeesORDER BY commission_pct;

19. Pernyataan KondisionalPerintah SQL mengenal kondisi logika IF-THEN-ELSE dengan cara tertentu. Ada dua metode yang dapat digunakan, yaitu:

- CASE- DECODE

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 23

Page 24: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

19.1. Pernyataan CASE

CASE expr WHEN comparison_expr1 THEN return_expr1 [WHEN comparison_expr2 THEN return_expr2 WHEN comparison_exprn THEN return_exprn ELSE else_expr]END

19.1.1. Menggunakan Pernyataan CASE

SELECT last_name, job_id, salary, CASE job_id WHEN ‘IT_PROG’ THEN 1.10*salary WHEN ‘ST_CLERK’ THEN 1.15*salary WHEN ‘SA_REP’ THEN 1.20*salary ELSE salary END “REVISED_SALARY”FROM employees;

19.2. Fungsi DECODE

DECODE(col/expression, search1, result1 [, search2, result2, …,] [, default])

19.2.1. Menggunakan Fungsi DECODE

SELECT last_name, job_id, salary, DECODE(job_id, ‘IT_PROG’, 1.10*salary, ‘ST_CLERK’, 1.15*salary, ‘SA_REP’, 1.20*salary, salary) REVISED_SALARYFROM employees;

SELECT last_name, trunc(salary/2000,0), salary, DECODE (TRUNC(salary/2000, 0), 0, 0.00, 1, 0.09, 2, 0.20, 3, 0.30, 4, 0.40, 5, 0.42, 6, 0.44, 0.45) TAX_RATEFROM employeesWHERE department_id = 80;

20. Menggabungkan Tabel Menggunakan Sintaks Oracle

SELECT table1.column, table2.column

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 24

Page 25: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

FROM table1, table2WHERE table1.column1 = table2.column2;

20.1. Mengambil Record Menggunakan Equijoin

SELECT employees.employee_id, employees.last_name, employees.department_id, departments.department_id, departments.location_idFROM employees, departmentsWHERE employees.department_id = departments.department_id;

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 25

Page 26: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

20.2. Menambahkan Kondisi Pencarian Menggunakan Operator AND

SELECT last_name, employees.department_id, department_nameFROM employees, departmentsWHERE employees.department_id = departments.department_idAND last_name = ‘Matos’;

20.3. Menggunakan Alias Tabel

SELECT e.employee_id, e.last_name, e.department_id, d.department_id, d.location_idFROM employees e, departments dWHERE e.department_id = d.department_id;

20.4. Menggabungkan Lebih Dari Dua Tabel

SELECT e.last_name, d.department_name, l.cityFROM employees e, departments d, locations lWHERE e.department_id = d.department_idAND d.location_id = l.location_id;

20.5. Mengambil Record Menggunakan Non Equijoin

SELECT e.last_name, e.salary, j.min_salary, j.max_salaryFROM employees e, jobs jWHERE e.salary BETWEEN j.min_salary AND j.max_salary;

21. Sintaks Outer JoinKita dapat menggunakan outer join untuk melihat pula baris yang tidak sesuai dengan kondisi join. Operator untuk outer join adalah tanda (+).

SELECT table1.column, table2.columnFROM table1, table2WHERE table1.column(+) = table2.column;

SELECT table1.column, table2.columnFROM table1, table2WHERE table1.column = table2.column(+);

21.1. Menggunakan Outer Join

SELECT e.last_name, e.department_id, d.department_nameFROM employees e, departments dWHERE e.department_id(+) = d.department_id;22. Menggabungkan Tabel ke Tabel Itu Sendiri

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 26

Page 27: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

SELECT worker.last_name || ‘ bekerja untuk ‘ || manager.last_nameFROM employees worker, employees managerWHERE worker.manager_id = manager.employee_id;

23. Menggabungkan Tabel Menggunakan SQL: Sintaks 1999Menggabungkan Tabel Menggunakan Cross JoinKlausa CROSS JOIN menghasilkan cross-product dari dua tabel. Hal ini sama dengan Cartesian product antara dua tabel.

SELECT last_name, department_nameFROM employeesCROSS JOIN departments;

23.1. Menggabungkan Tabel Menggunakan Natural Join

SELECT department_id, department_name, location_id, cityFROM departmentsNATURAL JOIN locations;

Natural join dapat pula dituliskan sebagaimana equijoin berikut ini:SELECT department_id, department_name, departmens.location_id, cityFROM departments, locationsWHERE departments.location_id = locations.location_id;

Natural join dapat pula ditambah dengan klausa WHERE sebagai berikut:SELECT department_id, department_name, location_id, cityFROM departmentsNATURAL JOIN locationsWHERE department_id IN (20, 50);

23.2. Menggabungkan Tabel Menggunakan Klausa USING

SELECT e.employee_id, e.last_name, d.location_idFROM employees e JOIN departments dUSING (department_id);

Penggabungan tabel menggunakan klausa USING seperti di atas adalah sama dengan equijoin berikut ini:SELECT employee_id, last_name, employees.department_id, location_idFROM employees, departmentsWHERE employees.department_id = departments.department_id;

23.3. Menggabungkan Tabel Menggunakan Klausa ON

SELECT e.employee_id, e.last_name, e.department_id, d.department_id, d.location_id

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 27

Page 28: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

FROM employees e JOIN departments dON (e.department_id = d.department_id);

23.4. LEFT OUTER JOIN

SELECT e.last_name, e.department_id, d.department_nameFROM employees eLEFT OUTER JOIN departments dON (e.department_id = d.department_id);

23.5. RIGHT OUTER JOIN

SELECT e.last_name, e.department_id, d.department_nameFROM employees eRIGHT OUTER JOIN departments dON (e.department_id = d.department_id);

23.6. FULL OUTER JOIN

SELECT e.last_name, e.department_id, d.department_nameFROM employees eFULL OUTER JOIN departments dON (e.department_id = d.department_id);

23.7. Menggabungkan Tabel dengan Kondisi Tambahan

SELECT e.employee_id, e.last_name, e.department_id, d.department_id, d.location_idFROM employees e JOIN departments dON (e.department_id = d.department_id)AND e.manager_id = 149;

24. Menggunakan Fungsi AVG dan SUM

SELECT AVG(salary), MAX(salary), MIN(salary), SUM(salary)FROM employeesWHERE job_id LIKE ‘%REP%’;

25. Menggunakan Fungsi MIN dan MAX

SELECT MIN(hire_date), MAX(hire_date)FROM employees;

SELECT MIN(last_name), MAX(last_name)FROM employees;26. Menggunakan Fungsi COUNT

SELECT COUNT(*)FROM employeesWHERE department_id = 50;

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 28

Page 29: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

SELECT COUNT(commission_pct)FROM employeesWHERE department_id = 80;

27. Menggunakan Keyword DISTINCT

SELECT COUNT(DISTINCT department_id)FROM employees;

28. Fungsi Grup dan Nilai Null

SELECT AVG(commission_pct)FROM employees;

28.1. Menggunakan Fungsi NVL dengan Fungsi Grup

SELECT AVG(NVL(commission_pct, 0))FROM employees;

29. Membuat Grup Data: Menggunakan Klausa GROUP BY

SELECT column, group_function(column)FROM table[WHERE condition][GROUP BY group_by_expression][ORDER BY column];

29.1. Menggunakan Klausa GROUP BY

SELECT department_id, AVG(salary)FROM employeesGROUP BY department_id;SELECT AVG(salary)FROM employeesGROUP BY department_id;

SELECT department_id, AVG(salary)FROM employeesGROUP BY department_id;

29.2. Menggunakan Klausa GROUP BY pada Banyak Kolom

SELECT department_id dept_id, job_id, SUM(salary)FROM employeesGROUP BY department_id, job_id;

29.3. Query Ilegal Menggunakan Fungsi Grup

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 29

Page 30: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

SELECT department_id, COUNT(last_name)FROM employees;

SELECT department_id, count(last_name)FROM employeesGROUP BY department_id;

Pada saat menggunakan fungsi grup, kita tidak boleh menggunakan klausa WHERE pada fungsi grup tersebut. Untuk maksud yang sama kita dapat menggunakan klausa HAVING.

SELECT department_id, AVG(salary)FROM employeesWHERE AVG(salary) > 8000GROUP BY department_id;

Untuk itu kita harus menggunakan klausa HAVING sebagaimana ditunjukkan pada contoh berikut:

SELECT department_id, AVG(salary)FROM employeesHAVING AVG(salary) > 8000GROUP BY department_id;

29.4. Menggunakan Klausa HAVING

SELECT column, group_functionFROM table[WHERE condition][GROUP BY group_by_expression][HAVING group_condition][ORDER BY column];

SELECT department_id, MAX(salary)FROM employeesGROUP BY department_idHAVING MAX(salary) > 10000;

SELECT job_id, SUM(salary) PAYROLLFROM employeesWHERE job_id NOT LIKE ‘%REP%’GROUP BY job_idHAVING SUM(salary) > 13000ORDER BY SUM(salary);29.5. Gabungan Fungsi Grup

SELECT MAX(AVG(salary))FROM employeesGROUP BY department_id;

30. Menggunakan Subquery

SELECT last_name

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 30

Page 31: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

FROM employeesWHERE salary > (SELECT salary FROM employees WHERE last_name = ‘Abel’);

30.1. Subquery Satu BarisSubquery jenis ini hanya menghasilkan satu baris. Untuk itu kita dapat menggunakan operator pembanding sebagai berikut:

Operator Arti= Sama dengan> Lebih dari

>= Lebih dari atau sama dengan< Kurang dari

<= Kurang dari atau sama dengan<> Tidak sama dengan

SELECT last_name, job_idFROM employeesWHERE job_id = (SELECT job_id FROM employees WHERE employee_id = 141);

30.1.1. Menggunakan Subquery Satu Baris

SELECT last_name, job_id, salaryFROM employeesWHERE job_id = (SELECT job_id FROM employees WHERE employee_id = 141)AND salary > (SELECT salary FROM employees WHERE employee_id = 143);

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 31

Page 32: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

30.1.2. Menggunakan Fungsi Grup dalam Subquery

SELECT last_name, job_id, salaryFROM employeesWHERE salary = (SELECT MIN(salary) FROM employees);

30.2. Klausa HAVING dalam Subquery

Oracle server akan mengeksekusi subquery terlebih dahulu. Contoh berikut dapat menggambarkan situasi tersebut:

SELECT department_id, MIN(salary)FROM employeesGROUP BY department_idHAVING MIN(salary) > (SELECT MIN(salary) FROM employees WHERE department_id = 50); SELECT job_id, AVG(salary)FROM employeesGROUP BY job_idHAVING AVG(salary) = (SELECT MIN(AVG(salary)) FROM employees GROUP BY job_id);

30.3. Subquery Multi-Baris

Subquery jenis ini menghasilkan lebih dari satu baris. Untuk itu kita menggunakan operator pembanding multi-baris.

Operator ArtiIN Sama dengan salah satu anggota dalam listANY Membandingkan nilai dengan tiap nilai hasil dari subqueryALL Membandingkan nilai dengan semua nilai hasil dari subquery

SELECT last_name, salary, department_idFROM employeesWHERE salary IN (select MIN(salary) FROM employees GROUP BY department_id);

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 32

Page 33: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

30.4. Menggunakan Operator ANY pada Subquery Multi-Baris

SELECT employee_id, last_name, job_id, salaryFROM employeesWHERE salary < ANY (SELECT salary FROM employees WHERE job_id = ‘IT_PROG’)AND job_id <> ‘IT_PROG’;

30.5. Menggunakan Operator ALL pada Subquery Multi-Baris

SELECT employee_id, last_name, job_id, salaryFROM employeesWHERE salary < ALL (SELECT salary FROM employees WHERE job_id = ‘IT_PROG’)AND job_id <> ‘IT_PROG’;

30.6. Nilai Null pada Subquery

SELECT emp.last_nameFROM employees empWHERE emp.employee_id NOT IN (SELECT mgr.manager_id FROM employees mgr);

Untuk menghindari kemungkinan dihasilkannya nilai null pada subquery, kita dapat menambahkan klausa WHERE sebagai berikut:

SELECT last_nameFROM employeesWHERE employee_id NOT IN (select manager_id FROM employees WHERE manager_id IS NOT NULL);

31. Menggunakan Variabel Pengganti &

Kita dapat menggunakan variabel yang dimulai dengan tanda & (ampersand) untuk mengarahkan pengguna pada suatu nilai tertentu.

SELECT employee_id, last_name, salary, department_idFROM employeesWHERE employee_id = &employee_num;

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 33

Page 34: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

31.1. Nilai Karakter dan Waktu Menggunakan Variabel Pengganti

SELECT last_name, department_id, salary*12FROM employeesWHERE job_id = ‘&job_title’;

31.2. Mendefinisikan Nama Klom, Ekspresi, dan Teks

SELECT employee_id, last_name, job_id, &column_nameFROM employeesWHERE &conditionORDER BY &order_column;

Isikan dengan:- Column_name = salary- Condition = salary > 15000- Order_column = last_name

31.3. Perintah DEFINE dan UNDEFINEMenggunakan Perintah DEFINE dan Variabel Pengganti &

DEFINE employee_num = 200

SELECT employee_id, last_name, salary, department_idFROM employeesWHERE employee_id = &employee_num;

31.4. Menggunakan Variabel Pengganti &&

SELECT employee_id, last_name, job_id, &&column_nameFROM employeesORDER BY &column_name;

31.5. Menggunakan Perintah VERIFY

SET VERIFY ONSELECT employee_id, last_name, salary, department_idFROM employeesWHERE employee_id = &employee_num;

31.6. Menggunakan Perintah COLUMN- Membuat heading kolom

COLUMN last_name HEADING ‘Employee|Name’COLUMN salary JUSTIFY LEFT FORMAT $99,990.00COLUMN manager FORMAT 999999999 NULL ‘Tidak ada manager’

- Menampilkan setting tertentu untuk kolom LAST_NAMECOLUMN last_name

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 34

Page 35: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

- Menghilangkan setting untuk kolom LAST_NAMECOLUMN last_name CLEAR

31.7. Model Format Kolom

Elemen Contoh Hasil9 999999 12340 099999 001234$ $9999 $1234L L9999 L1234. 9999.99 1234.00, 9,999 1,234

31.8. Mengatur Lebar Kolom (Hanya untuk Teks)Pada saat menggunakan command line, adakalanya hasil query yang ditampilkan tidak sesuai dengan keinginan. Kita dapat mengatur lebar kolom hasil query tersebut menggunakan perintah berikut:

COL <nama_kolom> FOR <lebar_kolom>

COL last_name FOR A25

31.9. Mengubah Setting Bahasa pada OracleOracle mengenal beberapa setting bahasa, diantaranya bahasa Indonesia, Inggris, Belanda, Malaysia, dan lain-lain. Perintah yang dapat digunakan adalah:

ALTER SESSION SET NLS_LANGUAGE=’<nama_bahasa>’;

ALTER SESSION SET NLS_LANGUAGE=’DUTCH’;SELECT TO_CHAR(sysdate, ‘DAY DD-MM-YYYY’)

31.10.Menggunakan Perintah BREAK

BREAK ON job_id

31.11.Menggunakan Perintah TTITLE dan BTITLE- Menampilkan header dan footer

TTI[TLE] [text|OFF|ON]

- Mengeset header laporanTTITLE ‘Salary|Report’

- Mengeset footer laporanBTITLE ‘Confidential’

31.12.Membuat File Script untuk Menghasilkan Laporan

- Buat perintah SQL SELECT

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 35

Page 36: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

- Simpan perintah SELECT ke dalam file script- Load file script ke dalam editor- Tambah perintah formatting sebelum perintah SELECT- Hapus perintah formatting setelah perintah SELECT- Simpan file script- Load file script ke dalam text window iSQL*Plus, dan klik tombol Execute

Contoh:SET FEEDBACK OFFTTITLE ‘Employee|Report’BTITLE ‘Confidential’BREAK ON job_idCOLUMN job_id HEADING ‘Job|Category’COLUMN last_name HEADING ‘Employee’COLUMN salary HEADING ‘Salary’ FORMAT $99,999.99REM ** Insert SELECT statementSELECT job_id, last_name, salaryFROM employeesWHERE salary < 15000ORDER BY job_id, last_name/REM clear all formatting commands …SET FEEDBACK ONCOLUMN job_id CLEARCOLUMN last_name CLEARCOLUMN salary CLEARCLEAR BREAK

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 36

Page 37: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

32. Membuat dan Mengatur Tabel32.1. Aturan PenamaanPenamaan tabel dalam Oracle memiliki aturan yang harus diikuti yaitu sebagai berikut:- Harus dimulai dengan huruf- Panjang karakter antara 1-30 karakter- Hanya dapat berisikan A-Z, a-z, 0-9, _ , $, dan #- Tidak boleh duplikasi nama dari objek lain yang dimiliki oleh pengguna yang

sama- Tidak boleh berupa reserved word server Oracle

32.2. Perintah CREATE TABLE- Membuat tabel

CREATE TABLE dept (deptno NUMBER(2), dname VARCHAR2(14), loc VARCHAR2(13));

- Konfirmasi pembuatan tabelDESCRIBE dept

32.3. Query terhadap Data Dictionary- Melihat nama tabel yang dimiliki oleh pengguna

SELECT table_nameFROM user_tables;

- Melihat tipe objek yang dimiliki oleh penggunaSELECT DISTINCT object_typeFROM user_objects;

- Melihat tabel, view, synonym, dan sequences yang dimiliki oleh penggunaSELECT *FROM user_catalog;

32.4. Membuat Tabel Menggunakan Subquery

CREATE TABLE dept80 AS SELECT employee_id, last_name, salary*12, hire_date FROM employees WHERE department_id = 80;

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 37

Page 38: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

CREATE TABLE dept80 AS SELECT employee_id, last_name, salary*12 ANNSAL, hire_date FROM employees WHERE department_id = 80;

DESCRIBE dept80

CREATE TABLE sales_reps(id, name, salary, commission_pct)AS SELECT employee_id, last_name, salary, commission_pctFROM employeesWHERE 1=2;

32.5. Menyalin Baris dari Tabel Lain

INSERT INTO sales_reps(id, name, salary, commission_pct) SELECT employee_id, last_name, salary, commission_pct FROM employees WHERE job_id LIKE ‘%REP%’;

32.6. Perintah ALTER TABLEPerintah ALTER TABLE digunakan untuk:- Menambah kolom baru- Memodifikasi kolom yang ada- Mendefinisikan nilai default untuk kolom baru- Menghapus kolom

ALTER TABLE tableADD (column datatype [DEFAULT expr] [, column datatype] …);

ALTER TABLE tableMODIFY (column datatype [DEFAULT expr] [, column datatype] …);

ALTER TABLE tableDROP (column);

32.7. Menambah KolomKita dapat menggunakan klausa ADD untuk menambah kolom

ALTER TABLE dept80ADD (job_id VARCHAR2(9));

Kolom yang baru dibuat akan berada pada kolom terakhir.

32.8. Modifikasi KolomKita dapat pula mengubah tipe data pada kolom, ukuran maupun nilai default.

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 38

Page 39: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

ALTER TABLE dept80MODIFY (last_name VARCHAR2(30));

32.9. Menghapus KolomKita dapat menggunakan klausa DROP COLUMN untuk menghapus kolom yang tidak lagi dibutuhkan pada sebuah tabel.

ALTER TABLE dept80DROP COLUMN job_id;

32.10.Membuat Objek SequenceAdakalanya kita ingin memasukkan suatu nomor pada sebuah kolom secara otomatis dengan pola tertentu. Biasanya nomor ini digunakan sebagai ID pada tabel. Untuk memperoleh hasil tersebut kita dapat menggunakan objek sequence pada Oracle dengan script sebagai berikut:

CREATE SEQUENCE MYSQ INCREMENT BY 2 START WITH 10 MAXVALUE 20 NOCACHE NOCYCLE;

32.10.1. Menggunakan Objek Sequence

Setelah kita membuat objek sequence, maka kita dapat mempergunakannya pada saat memasukkan data ke tabel. Kita dapat melihat contoh berikut ini:

CREATE TABLE TEST (KOL1 NUMBER, KOL2 VARCHAR2(5));INSERT INTO TEST VALUES(MYSQ.NEXTVAL, ’Agus’);INSERT INTO TEST VALUES(MYSQ.NEXTVAL, ’Budi’);INSERT INTO TEST VALUES(MYSQ.NEXTVAL, ’Chintami’);

32.11.Option SET UNUSEDKita dapat pula menghapus sebuah kolom melalui tahapan-tahapan untuk menghindari kesalahan yang mungkin dapat terjadi. Tahap pertama adalah untuk menandai kolom mana yang akan dihapus, sedangkan tahap kedua adalah proses penghapusan kolom itu sendiri.

ALTER TABLE tableSET UNUSED (column);

Atau

ALTER TABLE tableSET UNUSED COLUMN column;

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 39

Page 40: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

ALTER TABLE tableDROP UNUSED COLUMNS;

Contoh:

ALTER TABLE dept80SET UNUSED (last_name);

ALTER TABLE dept80DROP UNUSED COLUMNS;

32.12.Menghapus TabelApabila kita melakukan penghapusan tabel, maka seluruh data dan struktur tabel tersebut akan terhapus. Disamping itu semua transaksi yang tertunda (pending) akan di-commit. Kita tidak dapat melakukan roll back setelah kita memberikan perintah DROP TABLE.

DROP TABLE dept80;

32.13.Mengubah Nama ObjekNama objek seperti tabel, view, dan sequence dapat diubah menggunakan perintah RENAME

RENAME dept TO detail_dept;

32.14.Truncate TablePerintah TRUNCATE TABLE bermakna sebagai berikut:- Menghapus semua baris pada tabel- Struktur tabel dimaksud masih tersisa

TRUNCATE TABLE detail_dept;

32.15.Menambah Komentar pada Tabel

COMMENT ON TABLE employeesIS ‘Employee Information’;

Komentar-komentar pada tabel dapat dilihat melalui data dictionary berikut:- ALL_COL_COMMENTS- USER_COL_COMMENTS- ALL_TAB_COMMENTS- USER_TAB_COMMENTS

33. Manipulasi DataMenambah Baris Baru

INSERT INTO departments(department_id, department_name, manager_id, location_id)VALUES (70, ‘Public Relations’, 100, 1700);

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 40

Page 41: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

33.1. Menambah Baris dengan Nilai Null- Metode implisit

INSERT INTO departments (department_id, department_name)VALUES (30,’Purchasing’);

- Metode eksplisitINSERT INTO departmentsVALUES (100, ‘Finance’, NULL, NULL);

33.2. Mengisi Nilai Waktu Tertentu

INSERT INTO employeesVALUES (114, ‘Den’, ‘Raphealy’, ‘DRAPHEAL’, ‘515.127.4561’, TO_DATE(‘FEB 3, 1999’, ‘MON DD, YYYY’), ‘AC_ACCOUNT’, 11000, NULL, 100, 30);

33.3. Mengisi Tabel Menggunakan Script

INSERT INTO departments (department_id, department_name, location_id)VALUES (&department_id, ‘&department_name’, &location);

33.4. Update Baris dalam Tabel

UPDATE employeesSET department_id = 70WHERE employee_id = 113;

UPDATE copy_empSET department_id = 110;

33.5. Update Dua Kolom Menggunakan Subquery

UPDATE employeesSET job_id = (SELECT job_id FROM employees WHERE employee_id = 205), salary = (SELECT salary FROM employees WHERE employee_id = 205)WHERE employee_id = 114;

33.6. Menghapus Baris pada TabelPerintah DELETE

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 41

Page 42: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

DELETE [FROM] table[WHERE condition];

DELETE FROM departmentsWHERE department_name = ‘Finance’;

Jika kita tidak menuliskan klausa WHERE, maka seluruh baris pada tabel akan terhapus.DELETE FROM copy_emp;

33.7. Menghapus Baris Mengacu Pada Tabel Lain

DELETE FROM employeesWHERE department_id = (SELECT department_id FROM departments WHERE department_name LIKE ‘%Public%’);

33.8. Integrity Constraint Error Saat Menghapus Baris

DELETE FROM departmentsWHERE department_id = 60;

33.9. Menggunakan Subquery Pada Perintah INSERT

INSERT INTO (SELECT employee_id, last_name, email, hire_date, job_id, salary, department_id FROM employees WHERE department_id = 50)VALUES (99999, ‘Taylor’, ‘DTAYLOR’, TO_DATE(’07-JUN-99’, ‘DD-MON-RR’), ‘ST_CLERK’, 5000, 50);

34. Perintah MERGESintaks Perintah MERGE

MERGE INTO table_name table_alias USING (table/view/sub_query) alias ON (join condition) WHEN MATCHED THEN UPDATE SET col1 = col_val1, col2 = col2_val WHEN NOT MATCHED THEN INSERT (column_list) VALUES (column_values);

MERGE INTO copy_emp c

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 42

Page 43: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

USING employees e ON (c.employee_id = e.employee_id)WHEN MATCHED THEN UPDATE SET c.first_name = e.fisrt_name, c.last_name = e.last_name, c.email = e.email, c.phone_number = e.phone_number, c.hire_date = e.hire_date, c.job_id = e.job_id, c.salary = e.salary, c.commission_pct = e.commission_pct, c.manager_id = e.manager_id, c.department_id = e.department_idWHEN NOT MATCHED THEN INSERT VALUES (e.employee_id, e.first_name, e.last_name, e.email, e.phone_number, e.hire_date, e.job_id, e.salary, e.commission_pct, e.manager_id, e.department_id);

35. Commit Data- Membuat perubahan data

DELETE FROM employeesWHERE employee_id = 99999;1 row deleted

INSERT INTO departmentsVALUES (290, ‘Corporate Tax’, NULL, 1700);1 row inserted

- Commit perubahan dataCOMMIT;Commit complete

36. ROLLBACK dan Status Data Setelah ROLLBACKKita dapat membatalkan perubahan yang dilakukan dengan menggunakan perintah ROLLBACK:

- Perubahan data tidak jadi dilaksanakan- Status data sebelumnya dikembalikan- Lock pada baris yang dilakukan perubahan dilepaskan

DELETE FROM copy_emp;22 rows deleted.ROLLBACK;Rollback complete

36.1. Penggunaan SAVEPOINT dan ROLLBACKApabila selama melakukan transaksi, kita ingin melalui tahapan yang aman sehingga bisa kembali ke kondisi sebelumnya, kita dapat menggunakan perintah SAVEPOINT. Penggunaan perintah SAVEPOINT dimaksud adalah sebagai berikut:

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 43

Page 44: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

CONN HR/HR;INSERT INTO departments(department_id, department_name) VALUES (86, ’A’);SAVEPOINT A;

INSERT INTO departments(department_id, department_name) VALUES (97, ’B’);SAVEPOINT B;

INSERT INTO departments(department_id, department_name) VALUES (98, ’C’);SAVEPOINT C;

INSERT INTO departments(department_id, department_name) VALUES (99, ’D’);SAVEPOINT D;

INSERT INTO departments(department_id, department_name) VALUES (101, ’E’);SAVEPOINT E;

Kemudian kita lakukan perintah berikut:

SELECT * FROM departments;ROLLBACK TO SAVEPOINT D;SELECT * FROM departments;

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 44

Page 45: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

37. Konsistensi Pembacaan (Read Consistency)Read consistency menjamin konsistensi terhadap data yang ada setiap saat. Perubahan yang dilakukan oleh seorang pengguna tidak akan bertentangan dengan perubahan yang dilakukan oeh pengguna lainnya.Read consistency dapat ditunjukkan melalui contoh berikut ini:

Sesi 1 Sesi 2 Waktu OutputSELECT salary FROM employeesWHERE last_name=’King’;

t1 24000

UPDATE employeesSET salary=salary+10000WHERE last_name=’King’;

t2

SELECT salary FROM employeesWHERE last_name=’King’;

t3 24000

COMMIT; t4

SELECT salary FROM employeesWHERE last_name=’King’;

t5 34000

38. Membuat TablespacePada saat kita membuat sebuah tabel, secara default tabel tersebut akan masuk ke dalam tablespace system. Jika tabel yang dibuat ternyata dalam jumlah yang banyak, tentu akan menambah beban tablespace system tersebut. Oleh karena itu kita dapat mengarahkan sebuah tabel pada tablespace yang kita inginkan. Sebelumnya kita harus membuat tablespace dimaksud sebagaimana dicontohkan berikut ini:

Create tablespace kinerjadatafile ’d:\rencana_scadatel\my_kinerja01.dbf’ size 5M;

Sedangkan untuk mengarahkan sebuah tabel pada tablespace yang kita inginkan dicontohkan sebagai berikut:

create table kinerja(id number,station varchar2(5),bay varchar2(7),awal varchar2(25),akhir varchar2(25)) tablespace kinerja

39. Membuat IndexPada saat kita melakukan query terhadap suatu tabel yang sangat besar (jumlah data melebihi 1 juta baris), kita dapat mempercepat proses query dengan menambahkan index pada tabel dimaksud.

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 45

Page 46: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

Berikut adalah contoh penggunaan index.

Create index station_idxon kinerja(station);

Agar kita dapat melihat perbedaan kecepatan query, kita dapat menggunakan perintah berikut:

SET timing on;

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 46

Page 47: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

40. Mengontrol Akses Pengguna40.1. Privilege Sistem

Privilege Sistem Otorisasi OperasiCREATE USER Diijinkan untuk membuat user OracleDROP USER Diijinkan untuk menghapus atau menghilangkan

user lainDROP ANY TABLE Diijinkan untuk menghapus tabel dalam setiap

skemaBACKUP ANY TABLE Diijinkan untuk melakukan back up setiap tabel

dalam setiap skema menggunakan export utilitySELECT ANY TABLE Diijinkan untuk melakukan query tabel, view, atau

snapshot dalam setiap skemaCREATE ANY TABLE Diijinkan untuk membuat tabel dalam setiap

skema

40.2. Membuat User

CREATE USER scottIDENTIFIED BY tiger;

40.3. Typical User Privileges

Privilege Sistem Otorisasi OperasiCREATE SESSION Diijinkan untuk terhubung (connect) ke databaseCREATE TABLE Diijinkan untuk membuat tabel dalam skema userCREATE SEQUENCE Diijinkan untuk membuat sequence dalam skema

userCREATE VIEW Diijinkan untuk membuat view dalam skema user

40.4. Memberi Grant Pada Privilege Sistem

GRANT create session, create table, create sequence, create viewTO scott;

41. RoleRole adalah nama dari grup privilege yang dapat diberikan pada pengguna. Metode ini memudahkan kita untuk menghapus maupun memelihara privilege.

41.1. Membuat dan Memberikan Privilege pada Sebuah Role- Membuat role

CREATE ROLE manager;

- Memberikan privilege pada roleGRANT create table, create viewTO manager;

- Memberikan role pada userGRANT manager TO DEHAAN, KOCHHAR;

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 47

Page 48: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

42. Mengubah PasswordKita dapat mengubah password user dengan menggunakan perintah ALTER USER

ALTER USER scottIDENTIFIED BY lion;

43. Grant Object PrivilegeGrant privilege dapat diberikan pada objek tertentu, misalkan pada sebuah tabel bahkan pada sebuah kolom tertentu.

GRANT selectON employeesTO sue, rich

GRANT update (department_name, location_id)ON departmentsTO scott, manager;

44. Menggunakan Keyword WITH GRANT OPTION dan PUBLIC

GRANT select, insertON departmentsTO scottWITH GRANT OPTION;

GRANT selectON alice.departmentsTO PUBLIC;

45. Mencabut (Revoke) Object PrivilegeSebagai contoh, connect sebagai user Alice. Kemudian lakukan statement berikut untuk mencabut privilege SELECT dan INSERT terhadap user Scott pada tabel DEPARTMENTS

REVOKE select, insertON departmentsFROM scott;

46. Tabel Eksternal46.1. Membuat DirectoryTabel eksternal bertujuan untuk memasukkan data ke tabel Oracle berdasarkan file teks di operating system (Windows, Linux, Unix, dsb). Sebelum membuat tabel eksternal untuk Oracle, kita harus membuat terlebih dahulu direktori yang menjadi acuan dari file teks tersebut.

Untuk membuat direktori dimaksud, kita dapat menjalankan perintah SQL berikut:

create directory kinerja_operasi as 'd:\kinerja_operasi';

46.2. Contoh File Teks

0008 BEKS7 5IBT7-2 08/01/2005 07:14:51 08/01/2005 13:32:350009 CRTA7 5IBT7-2 08/01/2005 08:03:15 08/01/2005 08:51:33

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 48

Page 49: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

0010 CRTA7 5IBT7-2 08/01/2005 09:04:34 08/01/2005 12:53:570011 CRTA7 5IBT7-2 08/01/2005 12:54:40 08/01/2005 12:57:180012 CRTA7 5IBT7-2 08/01/2005 12:58:51 08/01/2005 12:59:480013 CRTA7 5IBT7-2 08/01/2005 13:01:53 08/01/2005 13:53:040014 CBAT7 5IBT7-2 16/01/2005 09:04:35 16/01/2005 12:43:060015 SBBR7 5IBT7-2 06/02/2005 08:54:04 06/02/2005 11:20:130016 SBBR7 5IBT7-2 06/02/2005 11:31:02 06/02/2005 14:33:130017 SBBR7 5IBT7-2 06/02/2005 14:35:20 06/02/2005 14:36:140018 SBBR7 5IBT7-2 06/02/2005 14:42:06 06/02/2005 14:48:230019 SBBR7 5IBT7-2 06/02/2005 14:48:56 06/02/2005 15:42:540020 GNDU7 5IBT7-1 08/02/2005 11:13:57 08/02/2005 12:27:220021 GNDU7 5IBT7-2 08/02/2005 11:30:25 08/02/2005 12:36:200022 GNDU7 5IBT7-1 13/02/2005 08:16:46 13/02/2005 09:42:000023 GNDU7 5IBT7-1 13/02/2005 10:46:42 13/02/2005 18:28:040024 CBIN7 5IBT7-2 04/03/2005 17:19:10 04/03/2005 23:32:580025 CLGO7 5IBT7-2 19/03/2005 10:12:09 19/03/2005 11:14:160026 CLGO7 5IBT7-2 19/03/2005 16:10:48 19/03/2005 16:48:230027 CLGO7 5IBT7-2 19/03/2005 16:52:21 19/03/2005 17:19:380028 CLGO7 5IBT7-1 26/03/2005 12:35:59 26/03/2005 16:08:430029 GNDU7 5IBT7-2 10/04/2005 07:59:42 10/04/2005 09:26:040030 GNDU7 5IBT7-2 10/04/2005 11:26:47 10/04/2005 15:15:040031 CRTA7 5IBT7-2 17/04/2005 07:12:41 17/04/2005 12:19:15Simpan file di atas dengan nama 'gangguan.txt’ pada directory Windows 'd:\kinerja_operasi'.

46.3. Membuat Tabel Eksternal

drop table kinerja;create table kinerja(id number,station varchar2(5),bay varchar2(7),awal varchar2(25),akhir varchar2(25))organization external(type oracle_loader default directory kinerja_operasi access parameters (records delimited by newline characterset WE8MSWIN1252 badfile 'kinerja_jelek’ logfile 'kinerja_cakep’ readsize 1048576 fields ldrtrim reject rows with all null fields ( id (1:4) char,

station (9:13) char,bay (18:24) char,awal (29:47) char,

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 49

Page 50: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

akhir (52:70) char )

)location('gangguan.txt’))tablespace kinerjaparallel 500reject limit unlimited;

47. Menampilkan Hasil Query Dalam Format Web47.1. Membuat File HTMLSetelah membuat sebuah tabel eksternal di Oracle (juga dapat dilakukan terhadap tabel internal), kita dapat menampilkan hasil query terhadap tabel dimaksud dalam format web. Namun sebelumnya kita harus merancang terlebih dahulu file html yang akan digunakan untuk melakukan query dimaksud. Berikut adalah contoh file html yang pernah digunakan oleh PT PLN P3B untuk melakukan suatu query.

<HTML><HEAD><TITLE>kinerja - UBOS</TITLE></HEAD><BODY bgcolor="#C0C0C0" text="#000080" topmargin="30" leftmargin="30"><h1 align="center">KINERJA TRAFO</h1><hr><table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#FFFF00" width="100%" id="AutoNumber3" bgcolor="#808080"> <tr> <td width="18%"> <p align="center"> <b><font face="Arial Black" style="font-size: 7pt"> <a href="index.html" style="text-decoration: none"><font color="#FFFFFF"> <a style="text-decoration: none" href="kinerja_trafo.htm"> <font color="#FFFFFF">HOME</font></a></font></a></font></b></td> <td width="19%"> <p align="center"><b> <a style="text-decoration: none" href="kinerja_main.htm"> <font face="Arial Black" style="font-size: 7pt" color="#FFFFFF">KINERJA TRAFO</font></a></b></td> <td width="19%"> <p align="center"><b> <font face="Arial Black" style="font-size: 7pt" color="#FFFFFF"> <a href="kinerja_teknis.htm" style="text-decoration: none"> <font color="#FFFFFF">TEKNIS</font></a></font></b></td> <td width="18%"> <p align="center"><b> <font face="Arial Black" style="font-size: 7pt" color="#FFFFFF"> <a href="kinerja_penulis.htm" style="text-decoration: none"> <font color="#FFFFFF">PENULIS</font></a></font></b></td> <td width="16%"> <p align="center">&nbsp;</td> <td width="30%"> <p align="center">&nbsp;</td> </tr></table>

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 50

Page 51: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

<hr><p align="center"></p><table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber4" height="1"> <tr> <td width="8%" bgcolor="#DADADA" rowspan="2" height="1"> <br>&nbsp;<p>&nbsp;</p> <p>&nbsp;</td> <td width="35%" valign="top" bgcolor="#DADADA" height="1"> <p align="left">&nbsp;<p>&nbsp;</td> <td width="4%" bgcolor="#DADADA" rowspan="2" height="1"> <br>&nbsp;<p>&nbsp;</p> <p>&nbsp;</td> <td width="39%" valign="top" bgcolor="#DADADA" height="1"> <p align="left">&nbsp;<p>&nbsp;</td> <td width="4%" bgcolor="#DADADA" rowspan="2" height="1"> &nbsp;</td> <td width="4%" bgcolor="#DADADA" rowspan="2" height="1"> &nbsp;</td> <td width="44%" bgcolor="#DADADA" height="1"> <p align="left">&nbsp;<p align="left">&nbsp;</td> <td width="4%" bgcolor="#DADADA" rowspan="2" height="1"> &nbsp;</td> <td width="4%" bgcolor="#DADADA" rowspan="2" height="1"> &nbsp;</td> <td width="44%" bgcolor="#DADADA" height="1"> &nbsp;</td> <td width="88%" valign="top" bgcolor="#DADADA" rowspan="2" height="1"> &nbsp;</td> </tr> <tr> <td width="35%" valign="top" bgcolor="#DADADA" height="69"><FORM METHOD=get ACTION="http://172.16.7.191/isqlplus"><INPUT TYPE="hidden" NAME="script" VALUE="http://172.16.7.191/lihat_kinerja.sql"> <INPUT TYPE="hidden" NAME="userid" VALUE="kinerja/trafo"><INPUT TYPE="hidden" NAME="userid1" VALUE="kinerja/trafo"><INPUT TYPE="hidden" NAME="script1" VALUE="http://172.16.7.191/lihat_kinerja.sql"></FORM> <p align="justify"><span style="font-weight: 700"> <font face="Verdana" style="font-size: 10pt">Data Trafo IBT yang Terpasang</font></span></p> <FORM METHOD=get ACTION="http://172.16.7.191/isqlplus"><INPUT TYPE="hidden" NAME="userid" VALUE="kinerja/trafo"><INPUT TYPE="hidden" NAME="script" VALUE="http://172.16.7.191/lihat_validasi.sql"><p align="center" style="text-indent: 50"><INPUT TYPE="submit" VALUE="Lihat" style="float: justify"> </p></FORM></p> <p align="center"> <img border="0" src="kinerja/handbuch.jpg" width="138" height="136"></td> <td width="39%" valign="top" bgcolor="#DADADA" height="69"><H3><font face="Verdana" style="font-size: 10pt">Kinerja Operasi</font></H3>

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 51

Page 52: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

<FORM METHOD=get ACTION="http://172.16.7.191/isqlplus"><p align="left" style="text-indent: 50"><font face="Verdana" style="font-size: 8pt">GITET </font><font face="Verdana" size="1">&nbsp; :</font> <select size="1" name="Lokasi">

<option value="BDSL7">Bandung Selatan</option><option value="BEKS7">Bekasi</option><option value="CBAT7">Cibatu</option><option value="CBIN7">Cibinong</option><option value="CLGO7">Cilegon</option><option value="CRTA7">Cirata</option><option value="CWAN7">Cawang</option><option value="GNDU7">Gandul</option><option value="GRTI7">Grati</option><option value="GRSK7">Gresik</option><option value="KBGN7">Kembangan</option><option value="KDIR7">Kediri</option><option value="MDRC7">Mandirancan</option><option value="MRTW7">Muara Tawar</option><option value="PDAN7">Pedan</option><option value="PITO7">Paiton</option><option value="SBBR7">Surabaya Barat</option><option value="SGLN7">Saguling</option><option value="SRLY7">Suralaya</option><option value="UNGA7">Ungaran</option></select> </p> <p align="left" style="text-indent: 50"><font face="Verdana" style="font-size: 8pt">Bay </font><font face="Verdana" size="1">&nbsp;&nbsp;&nbsp;&nbsp; :</font> <select size="1" name="Peralatan">

<option selected value="5IBT7-1">Trafo IBT 1</option><option value="5IBT7-2">Trafo IBT 2</option>

</select></p>

<p align="left" style="text-indent: 50"><font face="Verdana" size="1">&nbsp;</font><font face="Verdana" style="font-size: 8pt">Tahun</font><font face="Verdana" size="1">&nbsp; :</font> <select size="1" name="Tahun">

<option selected>2005</option><option>2006</option>

</select> </p> <p align="center">&nbsp;<INPUT TYPE="submit" VALUE="Cari" style="float: justify"> </p><INPUT TYPE="hidden" NAME="script" VALUE="http://172.16.7.191/lihat_kinerja.sql"> <INPUT TYPE="hidden" NAME="userid" VALUE="kinerja/trafo"><INPUT TYPE="hidden" NAME="userid1" VALUE="kinerja/trafo"><INPUT TYPE="hidden" NAME="script1" VALUE="http://172.16.7.191/lihat_kinerja.sql">

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 52

Page 53: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

</FORM> <p>&nbsp;</p> <p>&nbsp;</td> <td width="44%" bgcolor="#DADADA" valign="top" height="69"> &nbsp;

</td> <td width="44%" bgcolor="#DADADA" valign="top" height="69"> &nbsp;</td> </tr> <tr> <td width="8%" bgcolor="#DADADA" height="1"> &nbsp;</td> <td width="35%" valign="top" bgcolor="#DADADA" height="30"> &nbsp;</td> <td width="4%" bgcolor="#DADADA" height="1"> &nbsp;</td> <td width="39%" valign="top" bgcolor="#DADADA" height="30"> &nbsp;</td> <td width="4%" bgcolor="#DADADA" height="1"> &nbsp;</td> <td width="4%" bgcolor="#DADADA" height="1"> &nbsp;</td> <td width="44%" bgcolor="#DADADA" valign="top" height="30"> &nbsp;</td> <td width="4%" bgcolor="#DADADA" height="1"> &nbsp;</td> <td width="4%" bgcolor="#DADADA" height="1"> &nbsp;</td> <td width="44%" bgcolor="#DADADA" valign="top" height="30"> &nbsp;</td> <td width="88%" valign="top" bgcolor="#DADADA" height="1"> &nbsp;</td> </tr> </table>

<hr>

</BODY></HTML>

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 53

Page 54: Materi Oracle sqlplus Revisi 15

Materi Diklat Prajabatan S1/D3 PT PLN UDIKLAT SEMARANG __________________________________________________________

47.2. Membuat File SQLBila kita perhatikan pada file html di atas, maka terdapat beberapa script yang bertujuan untuk memanggil sebuah file SQL bernama 'lihat_kinerja.sql’. File SQL dimaksud dapat dilihat berikut ini:

set verify offset pages 200set feedback offset heading onset markup html head <title>PT_PLN_P3B</title><h1>KINERJA'TRAFO</h1><h2>500kV</h2> body bgcolor="#DADADA" table border="1"bgcolor="#ffff00"bordercolor="#01aaaa"width="100%"

col "Lokasi" heading "GITET"col "Peralatan" heading "Trafo"col Lama format 000.99select id "No", station "Lokasi", bay "Peralatan", awal "Awal Padam", akhir "Akhir Padam", round((to_date(akhir,'dd/mm/yyyy hh24:mi:ss') - to_date(awal,'dd/mm/yyyy hh24:mi:ss'))*24,5)||' jam' "Lama" from kinerjawhere upper(station) like upper('%&Lokasi%')and upper(bay) like upper('%&Peralatan%')and (substr(to_char(awal),7,4) like &Tahun

or substr(akhir,7,4) like &Tahun)order by 2;

set markup html body bgcolor="#DADADA" table border="0"bgcolor="#ffff00"align="center"bordercolor="#01aaaa"width="50%"

set heading offprompt JUMLAH LAMA PADAM:select nvl(round((sum(24*(to_date(akhir,'dd/mm/yyyy hh24:mi:ss') - to_date(awal,'dd/mm/yyyy hh24:mi:ss')))),5),0) ||' jam' "Total" from kinerja where upper(station) like upper('%&Lokasi%')and upper(bay) like upper('%&Peralatan%')and (substr(to_char(awal),7,4) like &Tahun

or substr(akhir,7,4) like &Tahun)and akhir IS NOT NULL;

RDBMS Oracle –- Edisi 1 Revisi 15 – Oktober 2005 54