Panduan Instalasi Oracle9i dan SQL
Panduan Instalasi Oracle9i dan SQL
1
PENDAHULUAN
1
Introduction To Oracle9i: SQL UPI-YPTK Padang
3. Memulai :
Untuk Retrieval, Manipulation, Defenition, Transaction dan Control dapat Anda
gunakan 2 User Interface yaitu : SQL Plus dan iSQL *Plus berikut penjelasan masing-
masing :
Penjelasan :
Pada saat pertama kali login Anda diminta untuk mengisikan User Name, Password, Host
String lalu klik OK, pada saat pertama Anda login diminta untuk mengisikan User Name
dengan System dan default passwordnya adalah manager (untuk keamanan sebaiknya
password default ditukar pada saat install sehingga user yang tidak berhak tidak bisa
mengakses database Anda dan selanjutnya Anda siap untuk bekerja (Penjelasan lebih
lanjut ada pada bab-bab berikutnya.
b. Menggunakan iSQL *Plus :
Tampilannya dengan menggunakan Browser (bisa IE5 atau Netscape Navigator) saat ini
Dicontohkan dengan menggunakan IE5, lalu ketikan : [Link] maka
muncul tampilan seperti berikut :
2
Introduction To Oracle9i: SQL UPI-YPTK Padang
isikan User Name, Password, Connection Identifier klik sama dengan yang di SQL Plus
lalu klik Login maka akan muncul tampilan seperti berikut :
3
Introduction To Oracle9i: SQL UPI-YPTK Padang
• S_Dept
4
Introduction To Oracle9i: SQL UPI-YPTK Padang
• S_Emp
• S_Ord
5
Introduction To Oracle9i: SQL UPI-YPTK Padang
• S_Product
*) Catatan :
Field-Field pada tabel dihapal untuk memudahkan dalam Perkuliahan/Pelatihan
d. SQL Statements :
INSERT
UPDATE DATA MANIPULATION LANGUAGE (DML)
DELETE
MERGE
CREATE
ALTER
DROP DATA DEFENITION LANGUAGE (DDL)
RENAME
TRUNCATE
COMMIT
ROLLBACK TRANSACTION CONTROL
SAVEPOINT
6
Introduction To Oracle9i: SQL UPI-YPTK Padang
7
Introduction To Oracle9i: SQL UPI-YPTK Padang
2
WRITING BASIC
SQL SELECT STATEMENTS
Output :
ID NAME REGION_ID
10 Finance 1
31 Sales 1
32 Sales 2
33 Sales 3
34 Sales 4
35 Sales 5
41 Operations 1
42 Operations 2
43 Operations 3
44 Operations 4
45 Operations 5
50 Administration 1
12 rows selected.
8
Introduction To Oracle9i: SQL UPI-YPTK Padang
Output :
15 rows selected.
Perioritas : * / + -
Input :
SELECT last_name, salary, salary + 300 FROM S_emp
Output :
25 rows selected.
9
Introduction To Oracle9i: SQL UPI-YPTK Padang
Input :
SELECT last_name, salary, 12*(salary+100) FROM s_emp
Output :
25 rows selected.
Output :
NAME COMM
Velasquez
Magee 10
Giljum 12.5
Sedeghi 10
Nguyen 15
NAME COMM
Dumas 17.5
Dancs
Schwartz
25 rows selected.
10
Introduction To Oracle9i: SQL UPI-YPTK Padang
Input :
Output :
Nguyen 18300
Name Annual Salary
Dumas 17400
Dancs 10320
Schwartz 13200
25 rows selected.
Output :
Employees
Velasquez50
Ngao41
Nguyen34
Employees
Dumas35
Dancs45
Schwartz45
25 rows selected.
11
Introduction To Oracle9i: SQL UPI-YPTK Padang
Output :
Employees Details
Velasquez is a 50
Ngao is a 41
Sedeghi is a 33
Nguyen is a 34
Employees Details
Dumas is a 35
Schwartz is a 45
25 rows selected.
7. Duplikasi Baris :
Input :
DEPT_ID
50
DEPT_ID
35
41
41
25 rows selected.
12
Introduction To Oracle9i: SQL UPI-YPTK Padang
Output :
DEPT_ID
10
31
32
33
34
35
41
42
43
44
45
50
12 rows selected.
Input :
DESC S_dept
Output :
13
Introduction To Oracle9i: SQL UPI-YPTK Padang
3
RESTRICTING and SORTING DATA
1. Mengunakan WHERE Clause :
Syntax :
14
Introduction To Oracle9i: SQL UPI-YPTK Padang
• Logical Conditions :
Operator Meaning
AND RETURN True if both component condition are true
OR Return True if either component condition is true
NOT Return true if the following condition is false
• Rules of Precedence :
Order Evaluated Operator
1 Arithmetic operator ( * / + - )
2 Concatenation operator ( || )
3 Comparison Conditions ( = > < >= <= <> )
4 IS [NOT] NULL, LIKE, [NOT] IN
5 [NOT] BETWEEN
6 Not Logical condition
7 And Logical condition
8 Or Logical Condition
Example :
a. Contoh Pengunaan = untuk Numeric
Input :
SELECT Last_name, Dept_id from s_emp
WHERE dept_id = 41
Output :
LAST_NAME DEPT_ID
Ngao 41
Urguhart 41
Maduro 41
Smith 41
15
Introduction To Oracle9i: SQL UPI-YPTK Padang
LAST_NAME DEPT_ID
Nagayama 31
LAST_NAME SALARY
Velasquez 2500
Ropeburn 1550
Sedeghi 1515
Nguyen 1525
d. Contoh Pengunaan IN
Input :
SELECT last_name, salary, manager_id FROM s_emp
WHERE manager_id IN (1, 2, 6)
Output :
Urguhart 1200 2
Maduro 1400 6
Smith 940 6
11 rows selected.
16
Introduction To Oracle9i: SQL UPI-YPTK Padang
Output :
FIRST_NAME
Audry
Antoinette
Andre
Akira
Alexander
Input :
SELECT last_name, Manager_id FROM s_emp
WHERE manager_id IS NULL
Output :
LAST_NAME MANAGER_ID
Velasquez
17
Introduction To Oracle9i: SQL UPI-YPTK Padang
12 rows selected.
Output :
Dancs 860 10
Schwartz 1100 10
13 rows selected.
18
Introduction To Oracle9i: SQL UPI-YPTK Padang
6 rows selected.
19
Introduction To Oracle9i: SQL UPI-YPTK Padang
Velasquez 50 2500
Ropeburn 50 1 1550
25 rows selected.
Input :
20
Introduction To Oracle9i: SQL UPI-YPTK Padang
Output :
25 rows selected.
21
Introduction To Oracle9i: SQL UPI-YPTK Padang
4
SINGLE-ROW FUNCTIONS
• Can be nested
Syntax :
1. General Functions :
• NVL
• NVL2
• NULLIF
• COALSECE
• CASE
• DECODE
22
Introduction To Oracle9i: SQL UPI-YPTK Padang
a. Case-manipulation functions
• INITCAP converts alpha character values to uppercase for the first letter of
each word, all other letters in lowercase
Contoh 1:
Function Result
Contoh 2 :
Input :
AS “EMPLOYEE DETAILS”
FROM s_emp
Output :
EMPLOYEE DETAILS
The job id forVELASQUEZ is cvelasqu
25 rows selected.
23
Introduction To Oracle9i: SQL UPI-YPTK Padang
b. Character-manipulation functions
• TRIM enable you to trim heading or trailing characters (or both) from a
character string
Contoh 1 :
FUNCTION RESULT
SUBSTR(‘HelloWorld’,1,5) Hello
LENGTH(‘HelloWorld’) 10
INSTR(‘HelloWorld’, ‘W’) 6
LPAD(salary,10,’*’) *****24000
24
Introduction To Oracle9i: SQL UPI-YPTK Padang
Contoh 2 :
Input :
FROM s_emp
Output :
contains
DEPT_ID NAME MANAGER_ID LENGTH(LAST_NAME)
'a'?
50 CarmenVelasquez 9 4
41 LaDorisNgao 1 4 3
contains
DEPT_ID NAME MANAGER_ID LENGTH(LAST_NAME)
'a'?
35 AndreDumas 3 5 4
45 SylvieSchwartz 10 8 5
25 rows selected.
3. Number Function
MOD(1600,300) =100
25
Introduction To Oracle9i: SQL UPI-YPTK Padang
Contoh 1 :
Input :
FROM dual
Output :
19 94 06 07 5 10 43
• Date
• Time
Input :
Output :
SYSDATE
11-OCT-02
26
Introduction To Oracle9i: SQL UPI-YPTK Padang
Input :
Output :
HASIL
10
12
C. Date Functions
Function Description
27
Introduction To Oracle9i: SQL UPI-YPTK Padang
Contoh :
* LAST_DAY(’01-FEB-95’) = ’28-FEB-95’
Input :
Output :
10 rows selected.
28
Introduction To Oracle9i: SQL UPI-YPTK Padang
Input :
From s_emp
Output :
LAST_NAME START_DATE
Velasquez 3 March 1990
Ngao 8 March 1990
Nagayama 17 June 1991
25 rows selected.
9 = Represents a number
29
Introduction To Oracle9i: SQL UPI-YPTK Padang
Input :
FROM s_emp
Output :
SALARY
$1,400.00
Syntax :
TO_NUMBER(char[,’format_model’])
TO_DATE(char[,’format_model’])
Example :
RR Date Format
30
Introduction To Oracle9i: SQL UPI-YPTK Padang
Example :
Input :
from s_emp
Output :
LAST_NAME TO_CHAR(STA
Velasquez 03-Mar-1990
Ngao 08-Mar-1990
Nagayama 17-Jun-1991
Nguyen 22-Jan-1992
LAST_NAME TO_CHAR(STA
Dumas 09-Oct-1991
Maduro 07-Feb-1992
Schwartz 09-May-1991
25 rows selected.
GENERAL FUNCTION
Tehese functions work with any data type and pertain to using null value.
31
Introduction To Oracle9i: SQL UPI-YPTK Padang
NVL Function :
NVL(commission_pct,0)
NVL(hire_date,’01-JAN-97’)
NVL(job_id,’No Job Yet)
Example :
Input :
Output :
25 rows selected.
32
Introduction To Oracle9i: SQL UPI-YPTK Padang
Input :
Output :
25 rows selected.
NVL2 Function :
Input :
from s_emp
33
Introduction To Oracle9i: SQL UPI-YPTK Padang
Output :
NULLIF Function :
Input :
From s_emp
Output :
Colin 5 Magee 5
FIRST_NAME expr1 LAST_NAME expr2 RESULT
Andre 5 Dumas 5
Elena 5 Maduro 6 5
Alexander 9 Markarian 9
Eddie 5 Chang 5
Radha 5 Patel 5
Sylvie 6 Schwartz 8 6
25 rows selected.
34
Introduction To Oracle9i: SQL UPI-YPTK Padang
COALESCE Function :
Input :
From s_emp
Order By commission_pct
Output :
LAST_NAME COMM
Magee 10
Sedeghi 10
Giljum 12.5
Nguyen 15
Dumas 17.5
Chang 800
Markarian 850
LAST_NAME COMM
Newman 750
Patel 795
Nozaki 1200
Smith 940
Havel 1307
25 rows selected.
Conditional Expressions :
- CASE expression
- DECODE function
35
Introduction To Oracle9i: SQL UPI-YPTK Padang
Syntax :
ELSE else_expr]
END
Example :
Input :
FROM S_emp
Output :
25 rows selected.
36
Introduction To Oracle9i: SQL UPI-YPTK Padang
DECODE Function :
Facilitates conditional inquiries by doing the work of a CASE or IF-YHEN-ELSE
Statement :
Syntax :
DECODE (col / expression, search1, result1
[,search2, result2, …..]
[, default])
Input :
Select last_name, dept_id, Salary,
DECODE (dept_id, 40, 1.10*salary,
41, 1.15*salary,
42, 1.20*salary,
salary)
REVISED_SALARY
FROM S_emp
Output :
25 rows selected.
37
Introduction To Oracle9i: SQL UPI-YPTK Padang
5
DISPLAYING DATA
FROM MULTIPLE TABLE
Memahami Join
Salah satu fitur SQL yang paling berguna adalah kemampuan untuk mengabungkan tabel
on-the-fly dengan query-query yang mendapatkan kembali data, anda perlu memahami
dengan baik join dan syntax join, tetapi sebelum mempelajari ini anda harus terlebih
dahulu memahami tabel relasional dan rancangan database relasional.
Berikut sebuah contoh pengabungan tabel-tabel tanpa where caluse yang menyebabkan
terjadinya Cartesian Product.
Cartesian Product adalah : Hasil yang dikembalikan oleh sebuah tabel relasional tanpa
kondisi JOIN. Jumlah baris yang didapatkan kembali akan menjadi jumlah baris dalam
tabel pertama dikalikan dengan jumlah baris pada tabel kedua.
Input :
Select last_name, name
From s_emp, s_dept
Ouput :
LAST_NAME NAME
Velasquez Finance
Ngao Finance
Nagayama Finance
Chang Administration
Patel Administration
Dancs Administration
38
Introduction To Oracle9i: SQL UPI-YPTK Padang
Schwartz Administration
Jika dilihat dari hasil diatas terdapat 300 rows padahal didalam contoh diatas datanya
hanya sebanyak 25 rows, hal diatas terjadi karena tidak adanya Filter sehingga dalam
prosesnya komputer mengkombinasikan kedua tabel diatas.
Oracle SQL:1999
Equijoin Natural or Inner Join
Outerjoin Left Outer Join
Selfjoin Join ON
Nonequijoin Join Using
Cartesian Product Cross Join
Example :
Input :
Select s_emp.dept_id, s_emp.last_name,s_dept.id,s_dept.name
From s_emp, S_dept
Where S_emp.Dept_id=s_dept.id
Output :
39
Introduction To Oracle9i: SQL UPI-YPTK Padang
50 Velasquez 50 Administration
41 Ngao 41 Operations
31 Nagayama 31 Sales
10 Quick-To-See 10 Finance
50 Ropeburn 50 Administration
41 Urguhart 41 Operations
42 Menchu 42 Operations
43 Biri 43 Operations
44 Catchpole 44 Operations
45 Havel 45 Operations
31 Magee 31 Sales
32 Giljum 32 Sales
33 Sedeghi 33 Sales
34 Nguyen 34 Sales
DEPT_ID LAST_NAME ID NAME
35 Dumas 35 Sales
41 Maduro 41 Operations
41 Smith 41 Operations
42 Nozaki 42 Operations
42 Patel 42 Operations
43 Newman 43 Operations
43 Markarian 43 Operations
44 Chang 44 Operations
34 Patel 34 Sales
45 Dancs 45 Operations
45 Schwartz 45 Operations
25 rows selected.
40
Introduction To Oracle9i: SQL UPI-YPTK Padang
Output :
Output :
41
Introduction To Oracle9i: SQL UPI-YPTK Padang
42 Nozaki 42 Operations
42 Patel 42 Operations
43 Newman 43 Operations
43 Markarian 43 Operations
44 Chang 44 Operations
34 Patel 34 Sales
45 Dancs 45 Operations
45 Schwartz 45 Operations
25 rows selected.
(Jelas bagi kita ternyata hasilnya sama dengan yang tidak menggunakan kolom alias)
Natural Join : Kapanpun tabel digabungkan, sedikitnya ada satu kolom yang akan
muncul pada lebih dari satu tabel (kolom akan digabungkan). Penggabungan standar
mengembalikan semua data, bahkan banyak kejadian pada kolom yang sama. Natural
Join hanya mengurangi kejadian tersebut sehingga hanya satu pada setiap kolom yang
dikembalikan.
Creating Natural Joins
• The NATURAL JOIN clause based on all columns in the two table that have the
same name
• It select rows from the two tables that have equal values in all matched colums
• If the columns having the same names have different data types, then an error is
returned
Input :
Output :
LAST_NAME NAME
Havel Finance
42
Introduction To Oracle9i: SQL UPI-YPTK Padang
Outer Join : Kebanyakan join menghubungkan baris-baris dalam satu tabel dengan
baris-baris tabel lainnya. Tetapi kadang-kadang Anda perlu memasukkan baris yang
tidak mempunyai baris-baris yang berhubungan.
Example :
Input :
Select e.dept_id, e.last_name,[Link],[Link]
From s_emp e, S_dept d
Where e.Dept_id(+)=[Link]
Hasil Bandingkan saja saat latihan
Output :
WORKER.LAST_NAME||'WORKSFOR'||MANAGER.LAST_NAME
Quick-To-See works for Quick-To-See
Nagayama works for Nagayama
Nguyen works for Nguyen
Dumas works for Dumas
Ngao works for Ngao
Maduro works for Ngao
WORKER.LAST_NAME||'WORKSFOR'||MANAGER.LAST_NAME
Smith works for Ngao
Smith works for Urguhart
Urguhart works for Urguhart
43
Introduction To Oracle9i: SQL UPI-YPTK Padang
WORKER.LAST_NAME||'WORKSFOR'||MANAGER.LAST_NAME
63 rows selected.
Input :
Select last_name, name
From s_emp
Cross join s_dept
Output :
LAST_NAME NAME
Velasquez Finance
Ngao Finance
Catchpole Finance
Havel Finance
Dancs Administration
Schwartz Administration
44
Introduction To Oracle9i: SQL UPI-YPTK Padang
6
AGGREGATING DATA
USING GROUP FUNCTIONS
Pada kasus seleksi data seringkali diminta untuk menampilkan atau memilih sekumpulan
data berdasarkan kelompok data tertentu. Untuk menyelesaikan masalah tersebut, SQL
menyediakan perintah atau sintax Group By. Pada pengelompokan data biasanya
disertakan bersama Aggregate Function. Dalam hal ini implementasinya, Aggregate
Function harus diikuti group by bila terdapat field lain yang dijadikan sebagai kriteria
pengelompokkan.
General Syntax :
45
Introduction To Oracle9i: SQL UPI-YPTK Padang
• STDDEV( )
• SUM( )
• VARIANCE( )
A. Penggunaan AVG
Fungsi ini digunakan untuk mencari harga rata-rata dari sekumpulan data yang ada.
Output :
DEPT_ID AVG(SALARY)
10 1450
31 1400
32 1490
42 1081.66667
43 900
44 1050
45 1089
50 2025
12 rows selected.
B. Penggunaan COUNT( )
Fungsi ini digunakan untuk mencari cacah atau banyaknya data.
Input :
46
Introduction To Oracle9i: SQL UPI-YPTK Padang
Output :
COUNT(DISTINCTDEPT_ID)
12
Contoh lain :
Input :
Select min(salary), max(salary), sum(salary)
From s_emp
where userid LIKE 'e%'
Output :
Bisa juga menggunakan where clause dan Group by caluse serta Having, seperti
contoh-contoh berikut :
Input :
47
Introduction To Oracle9i: SQL UPI-YPTK Padang
Output :
AVG(SALARY)
1490
Input :
Select dept_id, Max(salary)
From s_emp
Group By dept_id
Output :
DEPT_ID MAX(SALARY)
10 1450
45 1307
50 2500
12 rows selected.
DEPT_ID MAX(SALARY)
33 1515
34 1525
50 2500
48
Introduction To Oracle9i: SQL UPI-YPTK Padang
Input :
Select dept_id, Max(salary)
From s_emp
Group By dept_id
having max(salary) >1500
Order By dept_id Desc
Output :
DEPT_ID MAX(SALARY)
50 2500
34 1525
33 1515
49
Introduction To Oracle9i: SQL UPI-YPTK Padang
7
SUBQUERIES
Subquery adalah Query didalam query. Artinya seleksi data berdasarkan hasil seleksi data
yang telah ada. Sintax SQL nya sama syntax SQL pada umumnya, tetapi kondisi setelah
where diikuti dengan query baru atau subquery. Syntaxnya :
SELECT nama_field-1,…..,nama_field-n
FROM nama_tabel
WHERE kriteria (SELECT nama_field-1, ……., nama_field-n
FROM nama_tabel
WHERE kriteria)
Contoh :
Input :
Select Last_name, salary, dept_id, manager_id
From s_emp
where salary =
(Select salary
From s_emp
Where dept_id=10)
Output :
50
Introduction To Oracle9i: SQL UPI-YPTK Padang
51
Introduction To Oracle9i: SQL UPI-YPTK Padang
Output :
Output :
52
Introduction To Oracle9i: SQL UPI-YPTK Padang
Output :
DEPT_ID MIN(SALARY)
10 1450
31 1400
32 1490
33 1515
34 795
35 1450
41 940
42 795
44 800
45 860
50 1550
Keterangan :
Menampilkan siapa yang mempunyai gaji yang paling kecil tiap department dengan
pembanding adalah diatas dari gaji orang di dept_id=43.
53
Introduction To Oracle9i: SQL UPI-YPTK Padang
8
Producing Readable Output
With iSQL*Plus
Jika kita menggunakan iSQL*Plus, maka disini mempunyai suatu kelebihan yakni
kita bisa membuat tampilan input di iSQL*Plus tersebut (Substitution Variable).
Contoh :
Input :
Select Dept_id, Last_name, salary
From S_emp
Where dept_id=&Department_Id
Output :
Substitution Variables
Variable Value
department_id 41
OK Cancel
54
Introduction To Oracle9i: SQL UPI-YPTK Padang
Variable Value
nama Nagayama
OK Cancel
Variable Value
column_name salary
55
Introduction To Oracle9i: SQL UPI-YPTK Padang
order_column last_name
OK Cancel
Maka hasilnya :
56
Introduction To Oracle9i: SQL UPI-YPTK Padang
9
Creating and Managing Tables
Sebelum membahas cara membuat tabel Anda harus mengenal terlebih dahulu tipe
data yang ada dalam Oracle. Type-type data dalam Oracle sebagai berikut :
1. CHAR(n)
Mendefenisikan string sepanjang n karakter, Bila N tidak disertakan,
panjang karakter adalah 1.
2. VARCHAR(n)
Mendefenisikan string yang panjangnya bisa berubah-ubah sesuai dengan
kebutuhan, namun string tersebut dibatasi sebanyak n karakter. Oracle
merekomendasikan varchar2.
3. VARCHAR2(n)
Mendefenisikan string yang panjangnya bisa berubah-ubah sesuai dengan
kebutuhan, namun string tersebut dibatasi sebanyak n karakter. Maksimum
karakter pada varchar2 adalah 2000 karakter.
4. LONG
Mendefenisikan tipe data binary, maksimum 2 Gygabyte, disimpan dalam
format internal Oracle.
5. LONG RAW
Sama dengan long yaitu mendefenisikan tipe data binary, maksimum 2
Gigabyte, tidak dikonversi oleh Oracle (data mentah apa adanya
6. DATE
Mendefenisikan tanggal, menyimpan tahun, bulan, hari, jam, menit dan
detik.
7. NUMBER(n,p)
Mendefenisikan angka pecahan, fixed decimal atau floating point, Nilai n
adalah jumlah bytes total dan p adalah presisi angka di belakang koma.
57
Introduction To Oracle9i: SQL UPI-YPTK Padang
CREATE TABLE :
Syntax :
CREATE TABLE nama_tabel (
Nama field ke-1 tipe data (lebar_field),
……….
……….
Nama field ke-n tipe_data (lebar_field),
);
58
Introduction To Oracle9i: SQL UPI-YPTK Padang
Soal :
Buatlah tabel barang dengan field Kode_barang char(6), nama_barang
varchar2(25), satuan_barang varchar(20) dan stok_barang number(4), primary
key adalah kode_barang
59
Introduction To Oracle9i: SQL UPI-YPTK Padang
Input :
Create table barang (
kode_barang char(6) ,
nama_barang varchar2(25),
satuan_barang varchar2(20),
stok_barang number(4),
constraint pk_barang primary key(kode_barang)
);
Output :
Table created.
Soal :
Buatlah table suplier dengan filed kode_suplier char(5), nama_suplier varchar2(30),
alamat_suplier varchar2(30), kota_suplier varchar(15), telepon_suplier varchar2(15)
dimana nomor telepon unique, primary key (PK) adalah field kode_suplier.
Input :
Create table suplier (
kode_suplier char(5),
nama_suplier varchar2(30),
alamat_suplier varchar2(30),
kota_suplier varchar2(15),
telepon_suplier varchar2(15) unique,
constraint pk_suplier primary key(kode_suplier)
);
Output :
Table Created.
Soal :
Buatlah table customer dengan field kode_customer char(6), nama_customer
varchar2(30), alamat_customer varchar2(30), kota_customer varchar2(15),
60
Introduction To Oracle9i: SQL UPI-YPTK Padang
Soal :
Buatlah table pasok dengan field kode_pasok char(10), kode_barang char(6),
kode_suplier char(5), tanggal_pasok date, jumlah_pasok number(4). Primary Key
(PK) adalah field kode_pasok, kode_barang dan kode_suplier. Foreign Key (FK)
adalah field kode_barang dan kode_suplier.
Input :
Create table pasok (
kode_pasok char(10),
kode_barang char(6),
kode_suplier char(5),
tanggal_pasok date,
jumlah_pasok number(4),
constraint pk_pasok primary key(kode_pasok,
kode_barang, kode_suplier),
constraint fk_pasok_barang foreign key(kode_barang)
references barang(kode_barang),
constraint fk_pasok_suplier foreign key(kode_suplier)
61
Introduction To Oracle9i: SQL UPI-YPTK Padang
references suplier(kode_suplier)
);
Output :
Table created
Soal :
Buatlah table pembelian dengan field kode_pembelian char(10), kode_barang
char(6), kode customer char(6), tanggal_pembelian date, jumlah_pembelian
number(4). Primay Key adalah field kode_pembelian, kode_barang dan
kode_customer. Foreign key (FK) adalah field kode_barang dan kode_customer.
Input :
Output :
Table created.
62
Introduction To Oracle9i: SQL UPI-YPTK Padang
Keterangan :
- fk_pasok_barang : foreign key tabel pasok yang mengacu pada tabel
barang
- Fk_pasok_suplier : foreign key table pasok yang mengacu pada tabel
suplier
- Fk_pembelian_barang : foreign key tabel pembelian yang mengacu pada
tabel barang
- Fk_pembelian_customer : foreign key tabel pembelian yang mengacu
pada tabel customer.
Untuk menampilkan struktur tabel gunakan perintah describe/desc [nama tabel], seperti
berikut ini :
1. Desc barang;
2. Desc suplier;
63
Introduction To Oracle9i: SQL UPI-YPTK Padang
3. Desc customer;
4. Desc Pasok;
5. Desc pembelian;
Keterangan :
- Ada 5 tabel masing-masing adalah tabel barang, tabel suplier, tabel
customer, tabel pasok, dan tabel pembelian. Tabel barang dan tabel
suplier dijadikan tabel acuan oleh tabel pasok. Artinya didalam tabel
pasok ada field yang berasal dari tabel barang (yaitu kode_barang) dan
ada field yang berasal dari tabel suplier (yaitu kode_suplier). Field
kode_barang (PK tabel barang) dan kode_suplier (pk tabel suplier)
64
Introduction To Oracle9i: SQL UPI-YPTK Padang
menjadi foreign key/FK pada tabel pasok yang diberi nama masing-
masing fk_pasok_barang dan fk_pasok_suplier.
- Relasi yang lain adalah antara tabel barang dan tabel customer yang
dihubungkan oleh tabel relasi pembelian. Jadi tabel pembelian di sini
mengacu pada tabel barang dan tabel customer. Oleh karena itu maka
kode_barang (PK Tabel barang) dan kode_customer (PK tabel customer)
menjadi foreign key/FK pada tabel pembelian yang masing-masing
diberi nama fk_pembelian_barang dan fk_pembelian_customer.
Untuk tabel pasok memiliki 3 PK, yaitu kode_pasok, kode_barang, dan
kode_suplier. Sedangkan tabel pembelian memiliki 3 PK yaitu :
kode_pembelian, kode_barang dan kode_customer.
Mengubah tabel berarti mengubah struktur dari tabel tersebut. Ada beberapa
kemungkinan dalam melakukan perubahan yaitu mengubah dalam arti menghapus salah
satu atau beberapa field pada tabel tersebut atau dalam arti menambah satu atau beberapa
field pada tabel tersebut.
Syntax adalah :
Input :
Desc barang
65
Introduction To Oracle9i: SQL UPI-YPTK Padang
Output :
Sekarang Anda diminta untuk merubah field satuan_baang dari varchar2(20) menjadi
char(5).
Caranya :
Input :
Alter table barang
Modify SATUAN_BARANG char(5)
Input :
Desc Barang
Output :
66
Introduction To Oracle9i: SQL UPI-YPTK Padang
Contoh 2 :
Ubahlah tipe data untuk field stok barang dari number(4) menjadi number(2).
Input :
Alter table barang
Modify STOK_BARANG number(2)
Input :
Desc Barang
Output :
Contoh 3 :
Tambahkan satu field pada tabel barang dengan ketentuan :
- nama field : keterangan
- tipe data : varchar2
- lebar data : 15
Input :
Alter table barang
Add keterangan varchar(15)
Input :
Desc Barang
Output :
67
Introduction To Oracle9i: SQL UPI-YPTK Padang
Output :
Table altered.
Syntax :
DROP TABLE nama_table
Drop table akan berhasil jika tabel yang dihapus adalah tabel yang tidak ada relasinya
(tabel yang berdiri sendiri). Jika anda menghapus table yang punya relasi maka perintah
Drop ini tidak akan berhasil.
Sebagai contoh :
Input :
Output :
Jelas tidak bisa karena adanya reference dengan table yang lain.
68
Introduction To Oracle9i: SQL UPI-YPTK Padang
Jika Anda ingin menghapus tabel tersebut maka relasinya hapus dulu, contoh disini
hapuslah table pasok dan pembelian baru setelah itu anda bisa menghapus tabel barang,
customer dan suplier yang merupakan tabel acuan atau reference.
Input :
Drop Table Pasok
Output :
Table dropped.
Input :
Drop Table Pembelian
Output :
Table dropped
Sehingga jika lihat tabel dengan perintah Select * from tab maka yang tinggal adalah :
Tabel barang, customer, suplier. Sekarang anda diminta untuk mencoba menghapus table
barang, customer, suplier.
Input :
Drop Table Barang
Output :
Table dropped
Input :
Drop Table customer
Output :
Table dropped
Input:
Drop table suplier
69
Introduction To Oracle9i: SQL UPI-YPTK Padang
Output :
Table dropped
Sekarang Anda diminta untuk membuat kesemua tabel diatas kembali yaitu tabel barang,
suplier, customer, pembelian, pasok.
Contoh :
Input :
RENAME barang to brg
Output :
Table renamed.
Output :
Table truncated.
70
Introduction To Oracle9i: SQL UPI-YPTK Padang
10
Manipulating Data
Pada Manipulating data ini akan dibahas beberapa hal yaitu :
1. INSERT
2. UPDATE
3. DELETE
4. MERGE
Ad. 1 INSERT (Memasukkan Data)
Pada prinsipnya insert bertujuan untuk mengisikan data/record ke dalam suatu tabel.
Pengisian data ini bisa satu record penuh atau hanya sebagian saja.
Syntax :
INSERT INTO nama_tabel (nama field ke-1, ………,nama field ke-n)
VALUES (nilai_field ke-1, ……..,nilai_field ke-n)
Keterangan :
- (nama field ke-1, ………, nama field ke-n) adalah nama field yang ada
pada tabel dan sifatnya opsional.
- (nilai_field ke-1, ……..,nilai_field ke-n) adalah isi dari field pada tabel
dan harus diisi.
71
Introduction To Oracle9i: SQL UPI-YPTK Padang
Input :
Insert Into barang(kode_barang,nama_barang,Satuan_barang,stok_barang)
Values(‘BRG-1’,’Televisi’,’Unit’,10)
Selanjutnya Anda diminta untuk mengisi / menambahkan data sebagai berikut dan diisi
sekaligus.
Kode_barang : BRG-2 BRG-3 BRG-4
Nama_barang : Kulkas Tape Recorder VCD
Satuan Barang : Unit Unit Unit
Stok_barang : 10 20 20
Input :
Insert Into Barang (Kode_barang,Nama_barang,Satuan_barang,Stok_barang)
Values (‘BRG-2’,’Kulkas’,’Unit’,10);
Insert Into Barang (Kode_barang,Nama_barang,Satuan_barang,Stok_barang)
Values (‘BRG-3’,’Tape Recorder’,’Unit’,20);
Insert Into Barang (Kode_barang,Nama_barang,Satuan_barang,Stok_barang)
Values (‘BRG-4’,’VCD’,’Unit’,20);
Creating a SCRIPTS :
Anda juga bisa membuat Script sehingga bisa membuat semacam form nya, seperti
contoh berikut :
Input :
Insert Into barang
(Kode_barang,Nama_barang,Satuan_barang,Stok_barang)
Values('&Kode_barang','&Nama_barang','&Satuan_barang',&Stok_barang)
72
Introduction To Oracle9i: SQL UPI-YPTK Padang
Output :
Substitution Variables
Variable Value
kode_barang BRG-5
nama_barang Komputer
satuan_barang Unit
stok_barang 10
OK Cancel
Mengcopy isi table lain ke table yang baru dibuat dengan mengambil sebagian isinya.
Misal : Sebuah tabel memiliki struktur Field A,B,C,D sedangkan Table yang baru
memiliki Struktur Field B,C,D, disini diasumsikan bahwa table yang baru isinya sama
dengan table sebelumnya maka bisa dicopy saja dengan cara sebagai berikut :
Input :
Dan disini juga bisa menggunakan Where Clause jika ada penyaringan terhadap record
yang akan dicopykan.
73
Introduction To Oracle9i: SQL UPI-YPTK Padang
Syntax :
UPDATE nama_table
SET nama_field = data_baru
WHERE nama_field_kunci = Kode_kunci
Contoh :
Disini kita input dulu sebuah data kedalam tabel barang tetapi disengajakan untuk
ditinggalkan dan kemudian diisi ulang dengan cara UPDATE.
(Diasumsikan data sudah di input) dengan hasil sebagai berikut :
Input :
Output :
Input :
Update Barang
Set Satuan_barang=’Unit’
Where Kode_barang=’BRG-6’
Ouput :
74
Introduction To Oracle9i: SQL UPI-YPTK Padang
6 rows selected.
Input :
Update barang
set nama_barang='AC National'
Where kode_barang='BRG-6'
Output :
KODE_B NAMA_BARANG SATUAN_BARANG STOK_BARANG
BRG-1 Televisi Unit 10
BRG-2 Kulkas Unit 10
BRG-3 Tape Recorder Unit 20
BRG-4 VCD Unit 20
BRG-5 Komputer Unit 10
BRG-6 AC National Unit 10
6 rows selected.
75
Introduction To Oracle9i: SQL UPI-YPTK Padang
Penghapusan data bisa dilakukan secara keseluruhan dan bisa juga dilakukan sebagian.
Syntax :
Anda tidak bisa langsung begitu saja menghapus isi sebuah tabel reference sebelum Anda
menghapus isi dari tabel yang mengacu pada tabel tersebut. Jika Anda ingin disetiap
menghapus isi tabel tidak terganggu dengan adanya reference maka bisa menambahkan
On Delete Cascade pada saat create tabel seperti contoh berikut ini : (Tabel Pasok dan
Tabel Pembelian)
Create table pasok (
kode_pasok char(10),
kode_barang char(6),
kode_suplier char(5),
tanggal_pasok date,
jumlah_pasok number(4),
constraint pk_pasok primary key(kode_pasok,
kode_barang, kode_suplier),
constraint fk_pasok_barang foreign key(kode_barang)
references barang(kode_barang) on delete cascade,
constraint fk_pasok_suplier foreign key(kode_suplier)
references suplier(kode_suplier) on delete cascade
);
76
Introduction To Oracle9i: SQL UPI-YPTK Padang
kode_pembelian char(10),
kode_barang char(6),
kode_customer char(6),
tanggal_pembelian date,
jumlah_pembelian number(4),
constraint pk_pembelian primary key(kode_pembelian,
kode_barang, kode_customer),
constraint fk_pembelian_barang foreign key(kode_barang)
references barang(kode_barang) on delete cascade,
constraint fk_pembelian_customer foreign key(kode_customer)
references customer(kode_customer) on delete cascade
);
Input :
Delete from barang
Where kode_barang='BRG-6'
Output :
77
Introduction To Oracle9i: SQL UPI-YPTK Padang
Jika Anda ingin membuat sebuah tabel baru tetapi sama dengan salah satu tabel yang
lainnya, asal nama dibedakan.
Syntax :
Merge Into table_name AS table_alias
Using (table/view/sub_query) AS alias
ON (join condition)
WHEN MATCHED THEN
UPDATE SET
Col1 = col_vall,
Col2 = col2_val
WHEN NOT MATCHED THEN
Insert (column_list)
VALUES (column_values);
Input :
78
Introduction To Oracle9i: SQL UPI-YPTK Padang
Output :
Alexander Markarian 43
Chad Newman 43
Ben Biri 43
Radha Patel 34
Mai Nguyen 34
Andre Dumas 35
25 rows selected.
TRANSACTION CONTROL
1. COMMIT
79
Introduction To Oracle9i: SQL UPI-YPTK Padang
Syntax :
COMMIT
Jika Anda melakukan Insert atau Update tetapi tidak di Commit maka
penambahan data dan perubahan data yang telah dilakukan tidak akan disimpan.
2. ROLLBACK
Syntax:
ROLLBACK
3. SAVEPOINT
Update barang
Where kode_barang='BRG-6';
80
Introduction To Oracle9i: SQL UPI-YPTK Padang
Select * from barang ( lihat hasilnya , yang dirollback hanya transaksi terakhir sedangkan
yang sudah di savepoint tidak ter rollback)
Selanjuntya jika anda ingin pembuktian, ulangi perintah diatas dan jangan lakukan
savepoint dan selanjutnya lakukan rollback dan lihat hasilnya, maka anda akan melihat
bahwa yang diupdate pun di rollback.
1. GRANT
Perintah Grant digunakan untuk membuat otoritas atau hak akses terhadap
seorang user. Dalam hal ini berarti seorang user hanya diperbolehkan melakukan
transaksi selama transaksi tersebut merupakan hak dia.
Syntax
GRANT hak_akses
ON nama _tabel
TO nama_user
Keterangan :
- Hak Akses , Yaitu hak-hak yang dapat diberikan kepada seorang user,
yang meliputi :
81
Introduction To Oracle9i: SQL UPI-YPTK Padang
insert
- Nama_Tabel, yaitu nama tabel yang akan diberikan kepada seorang user
untuk hak akses tertentu.
Penjelasan diatas adalah diperuntukkan untuk table yang ada, berikut dijelaskan hak-hak
yang bisa dilakukan seorang user tetapi sebelumnya dibahas dulu cara Create User.
Create User :
Syntax :
IDENTIFIED BY password
Contoh :
IDENTIFIED BY habib
Syntax :
82
Introduction To Oracle9i: SQL UPI-YPTK Padang
Privileges :
- RESOURCE
- UNLIMITED TABLESPACE
- CONNECT
Contoh :
TO yuyu
What is a Role ?
A role is a named group of related privileges that can be granted to the user. This
methods makes it easier to revoke an maintain privileges.
Syntax :
Contoh :
83
Introduction To Oracle9i: SQL UPI-YPTK Padang
Syntax :
Contoh :
IDENTIFIED BY habib001
2. REVOKE
Syntax :
REVOKE hak_akses
ON Objek
[CASCADE CONSTRAINTS]
Contoh :
ON s_customer
FROM yuyu
Keterangan :
Jadi hak select dan insert user yuyu terhadap tabel s_customer sudah dihapus.
84
Introduction To Oracle9i: SQL UPI-YPTK Padang
85