Anda di halaman 1dari 40

PT PLN (Persero)

PUSAT PENDIDIKAN DAN PELATIHAN Database Oracle

Database Oracle

1.1. Relational Database dan RDBMS


Database adalah kumpulan informasi atau data yang tersimpan secara
terorganisir dan terstruktur didalam sebuah media penyimpanan komputer. Sebuah
database mempunyai sebuah skema yang menggambarkan obyek yang diwakili
suatu database dan hubungan diantara obyek tersebut. Ada banyak cara untuk
memodelkan skema, model yang umum digunakan sekarang adalah model
relasional. Dalam database relasional, data disimpan dalam bentuk tabel dua
dimensi, dan antara tabel yang satu dengan tabel yang lainnya terdapat hubungan
atau keterkaitan.

Untuk membuat struktur tabel, mengisi data ke tabel, mengubah data dan
menghapus data dari tabel diperlukan sebuah software. Software yang digunakan
untuk memanage database relational seperti diatas disebut Relational Database
Management System atau dikenal dengan singkatan RDBMS sedangkan
perintahnya disebut perintah SQL yang merupakan singkatan dari Structure Query
Language. Salah satu RDBMS yang akan dibahas sekarang adalah Oracle.

Gambar 11.1. Contoh tabel yang saling berhubungan

1.2. Oracle Database


Oracle Database adalah RDBMS yang terpopuler saat ini keluaran dari
Oracle Corporation. Oracle terdiri dari 2 komponen utama, yaitu Instance dan
Database. Kedua komponen ini sangat berbeda namun saling berhubungan dan
Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 1
PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

tidak dapat dipisahkan. Database merupakan kumpulan data yang disimpan ke


dalam sebuah physical storage, sedangkan instance merupakan kumpulan dari
proses oracle dan alokasi memory yang ada di Oracle. Pada pembahasan kali ini
akan lebih ditekankan kepada komponen database.

Untuk mengakses, memanipulasi, dan mengontrol database oracle digunakan


perintah SQL yang merupakan bahasa standar ANSI (American National Standards
Institute) untuk mengoperasikan relational database.

Gambar 11.6. Komunikasi dengan RDBMS menggunakan SQL

Perintah SQL dikelompokkan berdasarkan fungsinya sebagai berikut:

Perintah Fungsi
SELECT Perintah untuk menampilkan data (Data
retrieval)
INSERT
UPDATE Perintah untuk memanipulasi data (Data
DELETE manipulation language/DML)
MERGE
CREATE
ALTER
Perintah untuk pendefinisian/pembuatan
DROP
objek (Data definition language/DDL)
RENAME
TRUNCATE
COMMIT
Perintah untuk mengontrol transaksi
ROLLBACK
Transaction control
SAVEPOINT
GRANT Perintah untuk mengatur wewenang atau

Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 2


PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

REVOKE privilege (Data control language/DCL)


Tools yang sudah disediakan oleh Oracle untuk menginput perintah SQL ini
yaitu SQL*PLus, iSQL*Plus dan SQL Developer. Dalam pelajaran ini tools yang
digunakan adalah iSQL*Plus

1.2.1. Mengakses Database Oracle Menggunakan iSQL*Plus


Buka webbrowser (Internet Explorer, Mozilla, Opera, dll) kemudian masukkan
address dari server database Oracle yang akan kita akses:

http://localhost/isqlplus atau

http://<IP_address>/isqlplus

kemudian masukkan username dan passwordnya. Setelah itu kita akan melihat
tampilan sebagai berikut

Gambar 11.7. iSQL*Plus


Keterangan gambar :
1. Edit window : Area dimana perintah dan statement iSQL*Plus
dituliskan
2. Execute button : Tombol untuk mengeksekusi perintah atau statement
yang tercantum di menu edit window

Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 3


PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

3. Save script button : Tombol untuk menyimpan statement yang dituliskan


dalam edit window kedalam sebuah file
4. Clear Screen button : Tombol untuk menghapus statement yang tercantum
dalam edit window
5. Cancel button : Tombol untuk membatalkan perintah terakhir
6. Script locator : Mengidentifikasi nama dan lokasi dari file script yang
akan dieksekusi
7. 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

1.2.2. Perintah Dasar SQL : SELECT

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


FROM table;
- SELECT mengidentifikasikan kolom yang ingin ditampilkan
- FROM mengidentifikasikan table

Dengan menggunakan perintah SELECT dapat dilakukan hal-hal sebagai


berikut :

• 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

Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 4


PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

Joining

Dalam penulisan SQL dikenal istilah-istilah yang umum digunakan, antara lain :
▪ Keyword : Individual SQL statement, umumnya dituliskan dengan huruf
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;
- Memilih Semua Kolom
SELECT *
FROM departments;
- Memilih Kolom Tertentu
SELECT department_id, location_id
FROM departments;

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.2.3. Ekspresi Aritmatika


Operator Deskripsi
+ Tambah
- Kurang
* Kali
/ Bagi

SELECT last_name, salary, salary + 300


FROM employees;
Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 5
PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

hasil dari query diatas adalah sebagai berikut

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

Gambar 11.8. Tingkatan Operator Menggunakan Parantheses dan Tidak

1.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
Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 6
PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

SELECT last_name, job_id, salary, commission_pct


FROM employees;

Nilai Null pada Ekspresi Aritmatika

SELECT last_name, 12*salary*commission_pct


FROM employees;

1.2.5. Definisi Alias Kolom

Ketika menampilkan hasil dari query, iSQL*Plus normalnya menggunakan


nama kolom sebagai nama heading kolom. Heading kolom ini terkadang sulit untuk
dimengerti. Untuk mengubah heading kolom digunakan alias kolom.

Fungsi alias 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

Gambar 11.9. Penggunaan Alias Kolom

Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 7


PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

1.2.6. Operator Concatenation

Fungsi operator concatenation :


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

Gambar 11.10. Penggunaan Operator Concatenation

1.2.7. Literal Character String

- 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

Gambar 11.11. Penggunaan Literal Character String

Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 8


PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

1.2.8. Duplikasi Baris

Secara default, tampilan hasil query adalah semua baris, termasuk duplikasi
baris. Untuk menghilangkan duplikasi baris kita dapat menggunakan keyword
DISTINCT pada klausa SELECT. Contoh penggunaan :

SELECT DISTINCT department_id


FROM employees;

1.2.9. Membatasi Baris Yang Dipilih

Untuk membatasi jumlah baris yang akan dipilih/ditampilkan, gunakan where


clause. Penulisan where clause ditempatkan setelah from clause

SELECT *|{[DISTINCT] column/expression [alias],…}


FROM table
[WHERE condition(s];
Where clause berisi kondisi yang harus terpenuhi. Where clause dapat
membandingkan nilai pada kolom, nilai literal, dan ekspresi aritmatika.

Gambar 11.12. Penggunaan Where Clause

Operator Arti
= Sama dengan
> Lebih dari
>= Lebih dari atau sama dengan
< Kurang dari
<= Kurang dari atau sama dengan
<> Tidak sama dengan
BETWEEN ... AND ... Diantara nilai ... dan ...
Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 9
PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

IN (set) Memenuhi salah satu dari list nilai


LIKE Memenuhi pola character
IS NULL Nilainya adalah NULL
Kondisi pembanding digunakan dalam kondisi membandingkan suatu
ekspresi dengan ekspresi lainnya atau nilai lainnya. Syntax :

... WHERE expr operator value


contoh penggunaan :

SELECT * FROM employees WHERE hire_date = '01-Jan-95'


SELECT * FROM employees WHERE salary >= 6000
SELECT * FROM employees WHERE last_name = 'Smith'
SELECT * FROM employees WHERE salary BETWEEN 2500 AND 3500;
SELECT * FROM employees WHERE manager_id IN (100, 101, 201);
SELECT * FROM employees WHERE hire_date LIKE '%95';
SELECT * FROM employees WHERE manager_id IS NULL;

Value untuk string character dan tanggal terdapat aturan khusus yaitu :

- String karakter dan tanggal diapit dengan tanda kutip tunggal

- Karakter bersifat case sensitive, dan tanggal bersifat format sensitive

- Format tanggal default adalah DD-MON-YY

1.2.10. Menggunakan Kondisi Logika

Jika kita ingin menggunakan 2 atau lebih kondisi pembanding untuk


menghasilkan satu keluaran, digunakanlah kondisi logika. Hasil baris yang
ditampilkan adalah kondisi yang bernilai TRUE.

Operator Arti
AND Menghasilkan TRUE jka semua
kondisi komponen benar
OR Menghasilkan TRUE jika salah satu
kondisi komponen benar
NOT Menghasilkan TRUE jika kondisi
bernilai salah

Contoh penggunaan :

SELECT employee_id, last_name, job_id, salary

Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 10


PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

FROM employees
WHERE salary >=10000
AND job_id LIKE '%MAN%';
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >= 10000
OR job_id LIKE '%MAN%';
SELECT last_name, job_id
FROM employees
WHERE job_id
NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP');
Tabel kebenaran dari AND, OR, dan NOT

AND TRUE FALSE NULL


TRUE TRUE FALSE NULL
FALSE FALSE FALSE FALSE
NULL NULL FALSE NULL

OR TRUE FALSE NULL


TRUE TRUE TRUE TRUE
FALSE TRUE FALSE NULL
NULL TRUE NULL NULL

NOT TRUE FALSE NULL


FALSE TRUE NULL

Aturan prioritas

Tingkat Evaluasi Operator


1 Operator aritmatika
2 Operator concatenation
3 Kondisi pembanding
4 IS [NOT] NULL, LIKE, [NOT] IN
5 [NOT] BETWEEN
6 Kondisi logika NOT
7 Kondisi logika AND
8 Kondisi logika OR
Aturan prioritas menunjukkan urutan ekspresi yang akan dijalankan terlebih dahulu.
Parantheses dapat digunakan untuk membuat prioritas sendiri.

SELECT last_name, job_id, salary


FROM employees
WHERE job_id = ‘SA_REP’

Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 11


PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

OR job_id = ‘AD_PRES’
AND salary > 15000;

Kita dapat menentukan sendiri prioritas yang diinginkan dengan menambahkan


tanda dalam kurung seperti berikut:
SELECT last_name, job_id, salary
FROM employees
WHERE (job_id = ‘SA_REP’
OR job_id = ‘AD_PRES’)
AND salary > 15000;

1.2.11. Menggunakan Klausa ORDER BY

Kita dapat mengurutkan baris menggunakan klausa ORDER BY sebagai


berikut:
- ASC : order secara ascending (default order)
- DESC : order secara descending
Klausa ORDER BY berada pada urutan terakhir pada pernyataan SELECT.

SELECT expr
FROM table
[WHERE condition(s) ]
[ORDER BY {column, expr, numeric position} [ASC|DESC] ];
contoh penggunaan :
• mengurutkan baris secara ascending

SELECT last_name, job_id, department_id, hire_date


FROM employees
ORDER BY hire_date;
• mengurutkan baris secara descending

SELECT last_name, job_id, department_id, hire_date


FROM employees
ORDER BY hire_date DESC;
• mengurutkan baris berdasarkan alias kolom

SELECT employee_id, last_name, salary*12 tahunan


FROM employees
ORDER BY tahunan;
• mengurutkan baris berdasarkan multiple kolom
Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 12
PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

SELECT last_name, department_id, salary


FROM employees
ORDER BY department_id, salary DESC;

1.2.12. Fungsi Karakter

Fungsi case-manipulation Fungsi character-manipulation


LOWER CONCAT
UPPER SUBSTR
INITCAP LENGTH
INSTR
LPAD | RPAD
TRIM
REPLACE

• Fungsi Case Manipulation

Fungsi ini bertujuan untuk mengubah case pada string karakter, sebagai berikut:

Fungsi Hasil
LOWER(‘SQL Course’) sql course
UPPER(‘SQL Course’) SQL COURSE
INITCAP(‘SQL Course’) Sql Course

Menggunakan Fungsi Case Manipulation

SELECT employee_id, last_name, department_id


FROM employees
WHERE last_name = ‘higgins’;
No rows selected

SELECT employee_id, last_name, department_id


FROM employees
WHERE LOWER(last_name) = ‘higgins’;

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

• Fungsi Character-Manipulation

Fungsi Hasil
CONCAT(‘Selamat’, ‘Pagi’) SelamatPagi

Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 13


PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

SUBSTR(‘SelamatPagi’,1,5) Selam
LENGTH(‘SelamatPagi’) 11
INSTR(‘SelamatPagi’, ‘P’) 8
LPAD(salary,10,’*’) *****24000
RPAD(salary,10,’*’) 24000*****
TRIM(‘S’ FROM ‘SelamatPagi’) elamatPagi

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 employees
WHERE SUBSTR(job_id, 4) = ‘REP’;

SELECT employee_id, CONCAT(first_name, last_name) NAMA,


LENGTH (last_name), INSTR(last_name), ‘a’) “Mengandung
‘a’? “
FROM employees
WHERE SUBSTR(last_name, -1, 1) = ‘n’;

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

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

1.2.13. 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

Menggunakan Fungsi ROUND

SELECT ROUND(45.923,2), ROUND(45.923,0),


ROUND(45.923,-1)
FROM DUAL;
Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 14
PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

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

Menggunakan Fungsi TRUNC

SELECT TRUNC(45.923,2), TRUNC(45.923),


TRUNC(45.923,-2)
FROM DUAL;

Menggunakan Fungsi MOD

SELECT last_name, salary, MOD(salary, 5000)


FROM employees
WHERE job_id = ‘SA_REP’;

1.2.14. 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_date


FROM employees
WHERE last_name like ‘G%’;

SYSDATE adalah fungsi yang dapat menghasilkan waktu dan tanggal.


SELECT SYSDATE
FROM DUAL;

• 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

Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 15


PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

Operasi Hasil
Tanggal + angka Tanggal
Tanggal – angka Tanggal
Tanggal – tanggal Jumlah hari
Tanggal + angka/24 Tanggal

Menggunakan Operator Aritmatika dengan Tanggal

SELECT last_name, (SYSDATE-hire_date)/7 AS WEEKS


FROM employees
WHERE 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;

• Fungsi Tanggal

Fungsi Deskripsi
MONTHS_BETWEEN Jumlah bulan diantara dua tanggal
ADD_MONTHS Menambah jumlah bulan pada
tanggal
NEXT_DAY Tanggal berikutnya pada hari
yang ditentukan
LAST_DAY Tanggal terakhir pada bulan
tertentu
ROUND Round tanggal
TRUNC Truncate tanggal

Menggunakan Fungsi Tanggal

Fungsi Hasil
MONTHS_BETWEEN (’01-SEP-95’, ’11-JAN- 19.6774194
94’)
ADD_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’ maka

Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 16


PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

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

SELECT employee_id, hire_date,


ROUND(hire_date, ‘MONTH’), TRUNC(hire_date, ‘MONTH’)
FROM employees
WHERE hire_date LIKE ‘%97’;

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’) Bulan


FROM employees
WHERE last_name = ‘Higgins’;

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

Elemen Model Format Tanggal

Elemen Makna
YYYY Tahun secara lengkap dalam bentuk
angka
YEAR Tahun
MM Bulan dalam bentuk angka 2 digit
MONTH Bulan dalam bentuk nama lengkap
MON Bulan dalam bentuk singkatan 3 huruf
DY Hari dalam bentuk singkatan 3 huruf
DAY Hari dalam bentuk nama lengkap
Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 17
PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

DD 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

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 karakter
9 Menunjukkan angka
0 Memaksakan angka 0 untuk ditampilkan
$ Menempatkan tanda dolar
L Menggunakan simbl mata uang lokal
. Menampilkan penanda desimal
, Menampilkan penanda ribuan

SELECT TO_CHAR(salary, ‘$99,999.00’ ) GAJI


FROM employees
WHERE last_name = ‘Ernst’;

Menggunakan Fungsi TO_NUMBER dan TO_DATE


Untuk 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’])
Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 18
PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

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

SELECT last_name, hire_date


FROM employees
WHERE hire_date = TO_DATE(‘May 24, 1999’, ‘fxMonthDD, YYYY’);

1.2.15. Fungsi Umum

Beberapa 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
NVL Mengubah nilai null menjadi nilai aktual
NVL2 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

Menggunakan Fungsi NVL

SELECT last_name, salary, NVL(commission_pct, 0),


(salary*12) + (salary*12*NVL(commission_pct, 0)) AN_SAL

Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 19


PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

FROM employees;

SELECT last_name, salary, commission_pct,


(salary*12) + (salary*12*commission_pct) AN_SAL
FROM employees;

Menggunakan Fungsi NVL2

SELECT last_name, salary, commission_pct,


NVL2(commission_pct,
‘SAL+COMM’, ‘SAL’ ) income
FROM employees
WHERE department_id IN (50, 80);

Menggunakan Fungsi NULLIF

SELECT first_name, LENGTH(first_name) “expr1”,


last_name, LENGTH(last_name) “expr2”,
NULLIF(LENGTH(first_name), LENGTH(last_name)) result
FROM employees;

Menggunakan Fungsi COALESCE

SELECT last_name, commission_pct, salary,


COALESCE(commission_pct, salary, 10) comm
FROM employees
ORDER BY commission_pct;

1.2.16. Pernyataan Kondisional

Perintah SQL mengenal kondisi logika IF-THEN-ELSE dengan cara tertentu. Ada
dua metode yang dapat digunakan, yaitu:
- CASE
- DECODE

• Pernyataan CASE

CASE expr WHEN comparison_expr1 THEN return_expr1


[WHEN comparison_expr2 THEN return_expr2
WHEN comparison_exprn THEN return_exprn

Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 20


PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

ELSE else_expr]
END

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;

• Fungsi DECODE

DECODE(col/expression, search1, result1


[, search2, result2, …,]
[, default])

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_SALARY
FROM 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_RATE
FROM employees
WHERE department_id = 80;

Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 21


PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

1.2.17. Menggabungkan Tabel Menggunakan Sintaks Oracle

SELECT table1.column, table2.column


FROM table1, table2
WHERE table1.column1 = table2.column2;
• Mengambil Record Menggunakan Equijoin

SELECT employees.employee_id, employees.last_name,


employees.department_id, departments.department_id,
departments.location_id
FROM employees, departments
WHERE employees.department_id = departments.department_id;

• Menambahkan Kondisi Pencarian Menggunakan Operator AND

SELECT last_name, employees.department_id,


department_name
FROM employees, departments
WHERE employees.department_id = departments.department_id
AND last_name = ‘Matos’;

• Menggunakan Alias Tabel

SELECT e.employee_id, e.last_name, e.department_id,


d.department_id, d.location_id
FROM employees e, departments d
WHERE e.department_id = d.department_id;

• Menggabungkan Lebih Dari Dua Tabel

SELECT e.last_name, d.department_name, l.city


FROM employees e, departments d, locations l
WHERE e.department_id = d.department_id
AND d.location_id = l.location_id;

• Mengambil Record Menggunakan Non Equijoin

SELECT e.last_name, e.salary, j.min_salary, j.max_salary


FROM employees e, jobs j
WHERE e.salary
BETWEEN j.min_salary AND j.max_salary;

Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 22


PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

• Sintaks Outer Join

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

SELECT table1.column, table2.column


FROM table1, table2
WHERE table1.column(+) = table2.column;

SELECT table1.column, table2.column


FROM table1, table2
WHERE table1.column = table2.column(+);

Menggunakan Outer Join

SELECT e.last_name, e.department_id, d.department_name


FROM employees e, departments d
WHERE e.department_id(+) = d.department_id;
• Menggabungkan Tabel ke Tabel Itu Sendiri

SELECT worker.last_name || ‘ bekerja untuk ‘


|| manager.last_name
FROM employees worker, employees manager
WHERE worker.manager_id = manager.employee_id;

• Menggabungkan Tabel Menggunakan Cross Join

Klausa CROSS JOIN menghasilkan cross-product dari dua tabel. Hal ini sama
dengan Cartesian product antara dua tabel.

SELECT last_name, department_name


FROM employees
CROSS JOIN departments;

• Menggabungkan Tabel Menggunakan Natural Join

SELECT department_id, department_name,


location_id, city
FROM departments
NATURAL JOIN locations;

Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 23


PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

Natural join dapat pula dituliskan sebagaimana equijoin berikut ini:

SELECT department_id, department_name,


departmens.location_id, city
FROM departments, locations
WHERE departments.location_id = locations.location_id;
Natural join dapat pula ditambah dengan klausa WHERE sebagai berikut:

SELECT department_id, department_name,


location_id, city
FROM departments
NATURAL JOIN locations
WHERE department_id IN (20, 50);
• Menggabungkan Tabel Menggunakan Klausa USING

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


FROM employees e JOIN departments d
USING (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_id
FROM employees, departments
WHERE employees.department_id = departments.department_id;

• Menggabungkan Tabel Menggunakan Klausa ON

SELECT e.employee_id, e.last_name, e.department_id,


d.department_id, d.location_id
FROM employees e JOIN departments d
ON (e.department_id = d.department_id);

• LEFT OUTER JOIN

SELECT e.last_name, e.department_id, d.department_name


FROM employees e
LEFT OUTER JOIN departments d
ON (e.department_id = d.department_id);

• RIGHT OUTER JOIN

Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 24


PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

SELECT e.last_name, e.department_id, d.department_name


FROM employees e
RIGHT OUTER JOIN departments d
ON (e.department_id = d.department_id);

• FULL OUTER JOIN

SELECT e.last_name, e.department_id, d.department_name


FROM employees e
FULL OUTER JOIN departments d
ON (e.department_id = d.department_id);

• Menggabungkan Tabel dengan Kondisi Tambahan

SELECT e.employee_id, e.last_name, e.department_id,


d.department_id, d.location_id
FROM employees e JOIN departments d
ON (e.department_id = d.department_id)
AND e.manager_id = 149;

1.2.18. Menggunakan Fungsi AVG dan SUM

SELECT AVG(salary), MAX(salary),


MIN(salary), SUM(salary)
FROM employees
WHERE job_id LIKE ‘%REP%’;

1.2.19. Menggunakan Fungsi MIN dan MAX

SELECT MIN(hire_date), MAX(hire_date)


FROM employees;

SELECT MIN(last_name), MAX(last_name)


FROM employees;

1.2.20. Menggunakan Fungsi COUNT

SELECT COUNT(*)
FROM employees
WHERE department_id = 50;

SELECT COUNT(commission_pct)
Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 25
PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

FROM employees
WHERE department_id = 80;

1.2.21. Menggunakan Keyword DISTINCT

SELECT COUNT(DISTINCT department_id)


FROM employees;

1.2.22. Fungsi Grup dan Nilai Null

SELECT AVG(commission_pct)
FROM employees;

• Menggunakan Fungsi NVL dengan Fungsi Grup

SELECT AVG(NVL(commission_pct, 0))


FROM employees;

1.2.23. Membuat Grup Data: Menggunakan Klausa GROUP BY

SELECT column, group_function(column)


FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[ORDER BY column];

• Menggunakan Klausa GROUP BY

SELECT department_id, AVG(salary)


FROM employees
GROUP BY department_id;
SELECT AVG(salary)
FROM employees
GROUP BY department_id;

SELECT department_id, AVG(salary)


FROM employees

Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 26


PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

GROUP BY department_id;

• Menggunakan Klausa GROUP BY pada Banyak Kolom

SELECT department_id dept_id, job_id, SUM(salary)


FROM employees
GROUP BY department_id, job_id;

• Query Ilegal Menggunakan Fungsi Grup

SELECT department_id, COUNT(last_name)


FROM employees;

SELECT department_id, count(last_name)


FROM employees
GROUP 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 employees
WHERE AVG(salary) > 8000
GROUP BY department_id;

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

SELECT department_id, AVG(salary)


FROM employees
HAVING AVG(salary) > 8000
GROUP BY department_id;

• Menggunakan Klausa HAVING

SELECT column, group_function


FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[HAVING group_condition]
[ORDER BY column];
Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 27
PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

SELECT department_id, MAX(salary)


FROM employees
GROUP BY department_id
HAVING MAX(salary) > 10000;

SELECT job_id, SUM(salary) PAYROLL


FROM employees
WHERE job_id NOT LIKE ‘%REP%’
GROUP BY job_id
HAVING SUM(salary) > 13000
ORDER BY SUM(salary);
• Gabungan Fungsi Grup

SELECT MAX(AVG(salary))
FROM employees
GROUP BY department_id;

1.2.24. Menggunakan Subquery

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

• Subquery Satu Baris

Subquery 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_id


FROM employees
WHERE job_id =

Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 28


PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

(SELECT job_id
FROM employees
WHERE employee_id = 141);

Menggunakan Subquery Satu Baris

SELECT last_name, job_id, salary


FROM employees
WHERE job_id =
(SELECT job_id
FROM employees
WHERE employee_id = 141)
AND salary >
(SELECT salary
FROM employees
WHERE employee_id = 143);

• Menggunakan Fungsi Grup dalam Subquery

SELECT last_name, job_id, salary


FROM employees
WHERE salary =
(SELECT MIN(salary)
FROM employees);

• Klausa HAVING dalam Subquery

Oracle server akan mengeksekusi subquery terlebih dahulu. Contoh berikut


dapat menggambarkan situasi tersebut:

SELECT department_id, MIN(salary)


FROM employees
GROUP BY department_id
HAVING MIN(salary) >
(SELECT MIN(salary)
FROM employees
WHERE department_id = 50);

SELECT job_id, AVG(salary)


FROM employees
GROUP BY job_id
HAVING AVG(salary) = (SELECT MIN(AVG(salary))
Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 29
PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

FROM employees
GROUP BY job_id);

• Subquery Multi-Baris

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

Operator Arti
IN Sama dengan salah satu anggota dalam list
ANY Membandingkan nilai dengan tiap nilai hasil dari
subquery
ALL Membandingkan nilai dengan semua nilai hasil dari
subquery

SELECT last_name, salary, department_id


FROM employees
WHERE salary IN (select MIN(salary)
FROM employees
GROUP BY department_id);

• Menggunakan Operator ANY pada Subquery Multi-Baris

SELECT employee_id, last_name, job_id, salary


FROM employees
WHERE salary < ANY
(SELECT salary
FROM employees
WHERE job_id = ‘IT_PROG’)
AND job_id <> ‘IT_PROG’;

• Menggunakan Operator ALL pada Subquery Multi-Baris

SELECT employee_id, last_name, job_id, salary


FROM employees
WHERE salary < ALL
(SELECT salary
FROM employees
WHERE job_id = ‘IT_PROG’)
AND job_id <> ‘IT_PROG’;

Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 30


PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

• Nilai Null pada Subquery

SELECT emp.last_name
FROM employees emp
WHERE 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_name
FROM employees
WHERE employee_id NOT IN
(select manager_id
FROM employees
WHERE manager_id IS NOT NULL);

1.2.25. 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_id


FROM employees
WHERE employee_id = &employee_num;

• Nilai Karakter dan Waktu Menggunakan Variabel Pengganti

SELECT last_name, department_id, salary*12


FROM employees
WHERE job_id = ‘&job_title’;

• Mendefinisikan Nama Klom, Ekspresi, dan Teks

SELECT employee_id, last_name, job_id,


&column_name
FROM employees
WHERE &condition
ORDER BY &order_column;

Isikan dengan:
- Column_name = salary

Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 31


PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

- Condition = salary > 15000


- Order_column = last_name

• Perintah DEFINE dan UNDEFINE

Menggunakan Perintah DEFINE dan Variabel Pengganti &

DEFINE employee_num = 200

SELECT employee_id, last_name, salary, department_id


FROM employees
WHERE employee_id = &employee_num;

• Menggunakan Variabel Pengganti &&

SELECT employee_id, last_name, job_id, &&column_name


FROM employees
ORDER BY &column_name;

• Menggunakan Perintah VERIFY

SET VERIFY ON
SELECT employee_id, last_name, salary, department_id
FROM employees
WHERE employee_id = &employee_num;

• Menggunakan Perintah COLUMN

- Membuat heading kolom


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

- Menampilkan setting tertentu untuk kolom LAST_NAME


COLUMN last_name

- Menghilangkan setting untuk kolom LAST_NAME


COLUMN last_name CLEAR

• Model Format Kolom

Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 32


PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

Elemen Contoh Hasil


9 999999 1234
0 099999 001234
$ $9999 $1234
L L9999 L1234
. 9999.99 1234.00
, 9,999 1,234

1.2.26. 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

1.2.27. Mengubah Setting Bahasa pada Oracle

Oracle 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’)

1.2.28. Membuat Tabel


Penamaan 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 yg sama
- Tidak boleh berupa reserved word server Oracle
Perintah yang digunakan untuk membuat tabel adalah create. Contoh, kita akan
membuat tabel bagian dan tabel pegawai dengan rancangan tabel sebagai berikut :
Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 33
PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

Gambar 11.13. Rancangan Tabel Bagian dan Pegawai

CREATE TABLE PEGAWAI


(NIP NUMBER(4)
NAMA VARCHAR2(15),
JK CHAR(1),
EMAIL VARCHAR2(20),
GAJI NUMBER(10),
KODE_BAG NUMBER(2));

CREATE TABLE BAGIAN


(KODE NUMBER(2),
NAMA_BAGIAN VARCHAR2(20));

• Membuat Tabel Menggunakan Subquery

CREATE TABLE dept80


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

Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 34


PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

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_pct
FROM employees
WHERE 1=2;

1.2.29. Perintah ALTER TABLE

Perintah ALTER TABLE digunakan untuk:


- Menambah kolom baru
- Memodifikasi kolom yang ada
- Mendefinisikan nilai default untuk kolom baru
- Menghapus kolom
ALTER TABLE table
ADD (column datatype [DEFAULT expr]
[, column datatype] …);

ALTER TABLE table


MODIFY (column datatype [DEFAULT expr]
[, column datatype] …);

ALTER TABLE table


DROP (column);
contoh penggunaan :
Menambah kolom job_id :
ALTER TABLE pegawai
ADD (job_id VARCHAR2(9));
Memodifikasi ukuran kolom email menjadi 30 character :
ALTER TABLE pegawai
MODIFY (email VARCHAR2(30));

Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 35


PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

Menghapus kolom job_id :


ALTER TABLE pegawai
DROP COLUMN job_id;

1.2.30. Menghapus Table

Apabila kita melakukan penghapusan tabel, maka seluruh data dan struktur
tabel tersebut akan terhapus. Perintah yang digunakan adalah DROP TABLE.

DROP TABLE pegawai;

1.2.31. Mengubah Nama Objek

Nama objek seperti tabel, view, dan sequence dapat diubah menggunakan
perintah RENAME

RENAME dept TO detail_dept;

1.2.32. Perintah TRUNCATE TABEL

Perintah TRUNCATE TABLE bermakna sebagai berikut:

- Menghapus semua baris pada tabel


- Struktur tabel dimaksud masih tersisa
TRUNCATE TABLE detail_dept;

1.2.33. Memasukkan data

Kita dapat memasukkan data (menambah baris baru) dengan perintah


INSERT. Syntax:

INSERT INTO table [(column [, column, ...])]


VALUES (value [, value, ...]);
Contoh:
INSERT INTO department (department_id, department_name,
manager_id, location_id)
VALUES (70, 'Public Relations', 100, 1700);
• Menyalin Baris dari Tabel Lain

Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 36


PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

INSERT INTO sales_reps(id, name, salary, commission_pct)


SELECT employee_id, last_name, salary, commission_pct
FROM employees
WHERE job_id LIKE ‘%REP%’;

1.2.34. Update Baris dalam Tabel

Kita juga dapat mengubah data pada tabel dengan perintah UPDATE.

Syntax:
UPDATE employee_ojt
SET column = value[, column = value, ...]
[WHERE condition];
Contoh :
UPDATE table
SET department_id = 70
WHERE employee_id = 113;

1.2.35. Menghapus Baris pada Tabel

Baris yang terdapat pada tabel dapat kita hapus dengan perintah DELETE.

DELETE [FROM] table


[WHERE condition];

DELETE FROM department


WHERE department_name = 'Finance';
Jika kita tidak menuliskan klausa WHERE, maka seluruh baris pada tabel
akan terhapus.

DELETE FROM employee_ojt;

1.2.36. Database Transaction

Setelah melakukan perubahan data, kita dapat memilih apakah data tersebut
akan disimpan secara permanen atau tidak. Keuntungan dengan sistem ini adalah
kita dapat melihat perubahan data sebelum membuatnya permanen, kita juga dapat
mengembalikan ke data semula apabila hasil perubahannya tidak sesuai dengan
keinginan kita. Commit dieksekusi apabila kita ingin menyimpan perubahan data dan

Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 37


PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

membuatnya permanen. Sedangkan rollback digunakan untuk mengembalikan ke


data semula dan menghapus perubahan data yang dilakukan.

Commit perubahan data

DELETE FROM employee


WHERE employee_id = 99999;
1 row deleted

INSERT INTO department


VALUES (290, 'Corporate Tax', NULL, 1700);
1 row inserted
COMMIT;
Commit complete
Rollback perubahan data
DELETE FROM employee;
22 rows deleted.
ROLLBACK;
Rollback complete

1.2.37. Menyimpan Script Menggunakan Command Line

Selain 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;

1.2.38. Menggunakan Perintah dari File Script ke iSQL*Plus

Kita dapat menggunakan perintah sebelumnya yang telah disimpan menjadi file ke
dalam iSQL*Plus sebagai berikut:

Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 38


PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

- 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

1.2.39. Menjalankan Script di Command Line

Kita dapat menjalankan script yang telah disimpan menggunakan perintah di


command line, yaitu sebagai berikut:

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

1.3. Akses Oracle Pada Spectrum Power


Database Oracle pada Spectrum Power terdapat pada server ADM. Di dalam server
ADM terdapat dua database/instance oracle, yaitu database emp1 dan database
hfd1. Database emp1 berisi data-data statis untuk operasional, sedangkan hfd1
berisi data archiving. Untuk masuk ke database oracle di Spectrum Power tidak
dapat menggunakan iSQL*Plus, harus menggunakan console terminal.
Langkah-langkah :
1. Buka terminal console pada server database, kemudian ketikkan perintah :
sqlplus [user]/[password]@instance

[spsy]> sqlplus prime/primec@emp1

SQL*Plus: Release 8.1.7.0.0 - Production on Wed Feb 1 11:35:14 2012

(c) Copyright 2000 Oracle Corporation. All rights reserved.

Connected to:
Oracle8i Release 8.1.7.2.0 - Production
JServer Release 8.1.7.2.0 - Production

2. Untuk menyimpan output perintah dan hasil ketikkan perintah :

Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 39


PT PLN (Persero) Database Master Station
PUSAT PENDIDIKAN DAN PELATIHAN Sinaut Spectrum

SQL> spool <namafile>

SQL> spool /home/spsy/dataGI_RCC4.lst


SQL> select B1_NAME, B2_NAME, B3_NAME, ELEMENT_NAME from
ELEMENT where B1_NAME like '4%';
B1_NAME B2_NAME B3_NAME ELEMENT_
-------- -------- -------- --------
4WLNGI 70 TRFO4-1 BI1
4WLNGI 70 TRFO4-1 Bl Spec
4WLNGI 70 TRFO4-1 CB
4WLNGI 70 TRFO4-1 I
4WLNGI 70 TRFO4-1 LR
4WLNGI 70 TRFO4-1 P
4WLNGI 70 TRFO4-1 Q
4WLNGI 70 TRFO4-1 Topo 1
4WLNGI 70 TRFO4-1 Topo 2
4WLNGI 70 cTRFO2-2 Bl Spec
4WLNGI 70 cTRFO2-2 Topo Cmp

3. Untuk selesai menyimpan ketikkan perintah :

SQL> spool off

4. Untuk keluar dari sqlplus ketikkan perintah :

SQL> exit
atau
SQL> !

5. Hasil penyimpanan dapat dibuka dengan menggunakan texteditor (vi, gedit,


etc)

[spsy]> vi /home/spsy/dataGI_RCC4.lst

Belajar & Menyebarkan Ilmu Pengetahuan Serta Nilai – Nilai Perusahaan 40

Anda mungkin juga menyukai