Database Oracle
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.
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
http://localhost/isqlplus atau
http://<IP_address>/isqlplus
kemudian masukkan username dan passwordnya. Setelah itu kita akan melihat
tampilan sebagai berikut
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
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;
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
- 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
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 :
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
Value untuk string character dan tanggal terdapat aturan khusus yaitu :
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 :
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
Aturan prioritas
OR job_id = ‘AD_PRES’
AND salary > 15000;
SELECT expr
FROM table
[WHERE condition(s) ]
[ORDER BY {column, expr, numeric position} [ASC|DESC] ];
contoh penggunaan :
• mengurutkan baris secara ascending
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
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
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
SELECT REPLACE(‘JAKARTA’,’KARTA’,’CKMANIA’)
FROM dual;
SELECT SUBSTR(last_name,3,5)
FROM employees;
DUAL adalah tabel dummy yang dapat kita gunakan untuk melihat hasil sebuah
fungsi atau kalkulasi.
- 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 Hasil
Tanggal + angka Tanggal
Tanggal – angka Tanggal
Tanggal – tanggal Jumlah hari
Tanggal + angka/24 Tanggal
• 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
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’
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
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 last_name,
TO_CHAR(hire_date, ‘fmDD Month YYYY’ )
AS TANGGAL
FROM employees;
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
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
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’);
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
FROM employees;
Perintah SQL mengenal kondisi logika IF-THEN-ELSE dengan cara tertentu. Ada
dua metode yang dapat digunakan, yaitu:
- CASE
- DECODE
• Pernyataan CASE
ELSE else_expr]
END
• Fungsi DECODE
Kita dapat menggunakan outer join untuk melihat pula baris yang tidak sesuai
dengan kondisi join. Operator untuk outer join adalah tanda (+).
Klausa CROSS JOIN menghasilkan cross-product dari dua tabel. Hal ini sama
dengan Cartesian product antara dua tabel.
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;
SELECT AVG(commission_pct)
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.
Untuk itu kita harus menggunakan klausa HAVING sebagaimana ditunjukkan pada
contoh berikut:
SELECT MAX(AVG(salary))
FROM employees
GROUP BY department_id;
SELECT last_name
FROM employees
WHERE salary >
(SELECT salary
FROM employees
WHERE last_name = ‘Abel’);
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 job_id
FROM employees
WHERE employee_id = 141);
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 emp.last_name
FROM employees emp
WHERE emp.employee_id NOT IN
(SELECT mgr.manager_id
FROM employees mgr);
SELECT last_name
FROM employees
WHERE employee_id NOT IN
(select manager_id
FROM employees
WHERE manager_id IS NOT NULL);
Kita dapat menggunakan variabel yang dimulai dengan tanda & (ampersand) untuk
mengarahkan pengguna pada suatu nilai tertentu.
Isikan dengan:
- Column_name = salary
SET VERIFY ON
SELECT employee_id, last_name, salary, department_id
FROM employees
WHERE employee_id = &employee_num;
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:
DESCRIBE dept80
Apabila kita melakukan penghapusan tabel, maka seluruh data dan struktur
tabel tersebut akan terhapus. Perintah yang digunakan adalah DROP TABLE.
Nama objek seperti tabel, view, dan sequence dapat diubah menggunakan
perintah RENAME
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;
Baris yang terdapat pada tabel dapat kita hapus dengan perintah DELETE.
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
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;
Kita dapat menggunakan perintah sebelumnya yang telah disimpan menjadi file ke
dalam iSQL*Plus sebagai berikut:
- 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
sql> @<lokasi_file>
Contoh:
@C:\Training\Test1
Connected to:
Oracle8i Release 8.1.7.2.0 - Production
JServer Release 8.1.7.2.0 - Production
SQL> exit
atau
SQL> !
[spsy]> vi /home/spsy/dataGI_RCC4.lst