Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
41 views

Modul Pemrograman Database I

The document provides an introduction to Oracle 10g database and SQL statements. It discusses the basic SQL SELECT statement including selecting all or some columns, using arithmetic operators, column aliases, concatenation operators, literal character strings, avoiding duplicate rows, and describing a table structure. It also covers restricting and sorting data using the WHERE clause for comparisons, logical conditions, and precedence rules, and the ORDER BY clause for ascending and descending sorts. Finally, it introduces single-row functions for manipulating data types including general functions like NVL, NVL2, NULLIF, COALESCE, CASE, and DECODE as well as character functions for case manipulation.
Copyright
© © All Rights Reserved
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
41 views

Modul Pemrograman Database I

The document provides an introduction to Oracle 10g database and SQL statements. It discusses the basic SQL SELECT statement including selecting all or some columns, using arithmetic operators, column aliases, concatenation operators, literal character strings, avoiding duplicate rows, and describing a table structure. It also covers restricting and sorting data using the WHERE clause for comparisons, logical conditions, and precedence rules, and the ORDER BY clause for ascending and descending sorts. Finally, it introduces single-row functions for manipulating data types including general functions like NVL, NVL2, NULLIF, COALESCE, CASE, and DECODE as well as character functions for case manipulation.
Copyright
© © All Rights Reserved
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 62

Pemrograman Database I Universitas Dinamika Bangsa

1
PENDAHULUAN

Oracle 10g database merupakan sebuah DBMS yang berbentuk relational Object,
saat ini banyak perusahaan-perusahaan menggunakan Oracle ini karena Oracle memang
terbukti tangguh untuk pengolahan data yang sangat komplek.
SQL Statements :

SELECT DATA RETRIEVAL

INSERT
UPDATE DATA MANIPULATION LANGUAGE (DML)
DELETE
MERGE

CREATE
ALTER
DROP DATA DEFENITION LANGUAGE (DDL)
RENAME
TRUNCATE

COMMIT
ROLLBACK TRANSACTION CONTROL
SAVEPOINT

GRANT DATA CONTROL LANGUAGE (DCL)


REVOKE

1
Pemrograman Database I Universitas Dinamika Bangsa

2
Pemrograman Database I Universitas Dinamika Bangsa

2
WRITING BASIC
SQL SELECT STATEMENTS

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


FROM table
 SELECT Identifies what columns
 FROM identifies which table

1. Melihat seluruh isi tabel


Input :

SELECT * FROM employees

2. Melihat sebagian saja dari isi tabel :


Input :
SELECT last_name, job_id, salary from employees

3. Menggunakan Operator Arithmetik :

+ = Add - = Subtract * = Multiply / = Divide

Perioritas : * / + -

SELECT last_name, salary, salary + 300 FROM employees

SELECT last_name, salary, 12*(salary+100) FROM employees

3
Pemrograman Database I Universitas Dinamika Bangsa

4. Menggunakan Kolom Alias :


Input :

SELECT last_name AS name, commission_pct comm FROM employees

Input :

SELECT last_name “Name”, salary*12 “Annual Salary” FROM employees

5. Menggunakan Concatenation Operator :


Input :
SELECT last_name || departement_id AS “Employees” FROM employees

6. Menggunakan Literal Character Strings :


Input :
SELECT last_name || ‘ is a ‘ || departement_id AS “Employees Details”
FROM employees

7. Duplikasi Baris :
Input :

SELECT department_id FROM employees

8. Menghindari Duplikasi Baris :


Input :
SELECT DISTINCT department_id FROM employees

9. Menampilkan Struktur dari Tabel :


Syntax :
DESC[RIBE] tablename

4
Pemrograman Database I Universitas Dinamika Bangsa

Input :
DESC departments

5
Pemrograman Database I Universitas Dinamika Bangsa

3
RESTRICTING and SORTING DATA
1. Mengunakan WHERE Clause :

Syntax :

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


FROM table
[WHERE condition (s);

 The WHERE clause follows the FROM clause


 In the syntax :
Where resctrict the query to rows that meet a condition
Condition is composed of column names, expressions, constants, and
a comparison operator
 Comparison Conditions :
Operator Meaning
= Equal to
> Greater than
>= Greater than or equal to
< Less than
<= Less than or equal to
<> Not equal to

 Other Comparison Conditions :


Operator Meaning
BETWEEN Between two values (inclusive)
…… AND …….
IN (set) Match any of a list of values
LIKE Match a character pattern
IS NULL Is a null value

 Logical Conditions :
Operator Meaning
AND RETURN True if both component condition are true
OR Return True if either component condition is true

6
Pemrograman Database I Universitas Dinamika Bangsa

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, Department_id from employees
WHERE department_id= 41

b. Contoh Pengunaan = untuk Character


Input :
SELECT Last_name, Department_id from employees
WHERE last_name = ‘Whalen’

 
c. Contoh Pengunaan BETWEEN
Input :
SELECT Last_name, salary FROM employees
WHERE salary BETWEEN 1500 AND 3500

d. Contoh Pengunaan IN
Input :

7
Pemrograman Database I Universitas Dinamika Bangsa

SELECT last_name, salary, manager_id from employees


WHERE manager_id IN (100, 105)

e. Contoh Pengunaan LIKE


Input :
SELECT first_name FROM employees
WHERE first_name LIKE ‘A%’

f. Contoh Pengunaan IS NULL

Input :
SELECT last_name, Manager_id FROM employees
WHERE manager_id IS NULL

g. Contoh Pengunaan AND Operator


Input :
SELECT Last_name, Department_id, salary FROM employees
WHERE salary >=1400
AND Last_name LIKE ‘A%’

h. Contoh Pengunaan OR Operator


Input :
SELECT Last_name, Department_id, salary, userid FROM employees
WHERE salary >=1400
OR userid LIKE ‘e%’

i. Contoh Pengunaan NOT Operator


Input :
SELECT last_name, salary, manager_id FROM employees
WHERE manager_id NOT IN (1, 2, 6)

j. Contoh Pengunaan Rules of Precedence 1

8
Pemrograman Database I Universitas Dinamika Bangsa

Input :
SELECT Last_name, Department_id, salary, userid FROM employees
WHERE department_id= 41
OR department_id= 50
AND salary > 1400
k. Contoh Pengunaan Rules of Precedence 2
Input :
SELECT Last_name, Department_id, salary, userid FROM employess
WHERE ( department_id= 41
OR department_id= 50 )
AND salary > 1400

2. Mengunakan ORDER BY Clause :


 Sort rows with the ORDER BY Clause
- ASC : Ascending order, default
- DESC : Descending order
 The ORDER BY Clause comes last in the SELECT statement
a. Pengunaan ORDER BY dengan ASC
Input :
SELECT last_name, department_id, manager_id, salary FROM employees
ORDER BY department_id

b. Pengunaan ORDER BY dengan DESC

Input :

SELECT last_name, department_id, manager_id, salary FROM


employees
ORDER BY department_idDESC

9
Pemrograman Database I Universitas Dinamika Bangsa

4
SINGLE-ROW FUNCTIONS

10
Pemrograman Database I Universitas Dinamika Bangsa

Single row functions :

 Manipulate date item

 Accept arguments and return one value

 Act on each row returned

 Return one result per row

 May modify the data type

 Can be nested

 Accept Arguments which can be a column or an expression

Syntax :

Function_name [(arg1, arg2, …..)]

1. General Functions :

 NVL

 NVL2

 NULLIF

 COALSECE

 CASE

 DECODE

2. Character Functions terbagi 2 :

a. Case-manipulation functions

 LOWER converts alpha character values to lowercase

11
Pemrograman Database I Universitas Dinamika Bangsa

 UPPER converts alpha charater values to uppercase

 INITCAP converts alpha character values to uppercase for the first letter of
each word, all other letters in lowercase

Contoh 1:

Function Result

LOWER(‘SQL Course’) sql course

UPPER(‘SQL Course’) SQL COURSE

INITCAP(‘SQL Course’) Sql Course

Contoh 2 :

Input :

SELECT ‘The job id for’ || UPPER(last_name)|| ‘ is ‘ || LOWER(userid)

AS “EMPLOYEE DETAILS”

FROM employees

b. Character-manipulation functions

 CONCAT concatenates the first character value to the second character


value;equivalent to concatenation operator (||)

 SUBSTR returns specified characters from character value starting at


character position.

 LENGTH return the number of character in the expression

 INSTR return the numeric position of named string

 LPAD pads the character value right-justified to a total width of n character


positions

 RPAD pads the character value leftt-justified to a total width of n character


positions

 TRIM enable you to trim heading or trailing characters (or both) from a
character string

12
Pemrograman Database I Universitas Dinamika Bangsa

 REPLACE searches a text expression for a character string and, if found,


replace it with a spesified replacement string

Contoh 1 :

FUNCTION RESULT

CONCAT(‘Hello’, ‘World’) HelloWorld

SUBSTR(‘HelloWorld’,1,5) Hello

LENGTH(‘HelloWorld’) 10

INSTR(‘HelloWorld’, ‘W’) 6

LPAD(salary,10,’*’) *****24000

RPAD(salary, 10, ‘*’) 24000*****

TRIM(‘H’ FROM ‘HelloWorld’) elloWorld

Contoh 2 :

Input :

SELECT department_id, CONCAT(first_name, last_name) NAME,


manager_id,

LENGTH(last_name), INSTR(last_name, ‘a’) “contains ‘a’?”

FROM employees

3. Number Function

 ROUND : rounds value to specified decimal

ROUND (45.926, 2) = 45.93

 TRUNC : tuncate value to specified decimal

TRUNC (45.926,2) = 45.92

 MOD : returns remainder of division

MOD(1600,300) =100

13
Pemrograman Database I Universitas Dinamika Bangsa

Contoh 1 :

Input :

Select ROUND(45.926, 2), TRUNC(45.926,2), MOD(1600,300)

FROM dual

4. Working with Dates :

Century Year Month Day Hour Minute Second

19 94 06 07 5 10 43

a. SYSDATE is a function that returns :

 Date

 Time

Input :

SELECT SYSDATE FROM dual

b. Arithmetic with Dates

Operation Result Description

Date + number Date Adds a number of day to date

Date - number Date Subtracts a number of days from a date

Date-date Number of day Subtracts one date from another

Date + number/24 Date Adds a number of hours to a date

Input :

SELECT date_shipped - date_ordered AS hasil FROM s_ord

14
Pemrograman Database I Universitas Dinamika Bangsa

WHERE customer_id = 204

C. Date Functions

Function Description

MONTHS_BETWEEN Number of months between two dates

ADD_MONTHS Add calendar months to date

NEXT_DAY Next day of the date spesified

LAST_DAY Last day of the month

ROUND Round date

TRUNC Truncate date

Contoh :

* MONTHS_BETWEEN (’01-SEP-95’,’11-JAN-94’) = 19.6774194

* 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’

Mengunakan DATE Functions

Assume SYSDATE = ’25-JUL-95’ :

* ROUND (SYSDATE,’MONTH’) ------ 01-AUG-95

* ROUND (SYSDATE,’YEAR’) ------- 01-JAN-96

* TRUNC (SYSDATE,’MONTH’) ------- 01-JUL-95

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

Input :

Select department_id, Start_date, Round(Start_date,'MONTH'),

15
Pemrograman Database I Universitas Dinamika Bangsa

Trunc(Start_date,'MONTH') From employees

Where Start_date LIKE '%90'

Menggunakan TO_CHAR Function With Date

Input :

Select Last_name, To_char(Start_date,'FmDD Month YYYY')START_DATE

From employees

Menggunakan TO_CHAR Function With Number

9 = Represents a number

0 = Forces a zero to be displayed

$ = Places a floating dollar sign

L = Uses the floating local currency symbol

. = Prints a decimal point

, = Prints a thousand indicator

Input :

Select TO_CHAR(salary, '$99,999.00') SALARY

FROM employees

Where last_name ='Whalen'

Output :

Menggunakan TO_NUMBER DAN TO_DATE Function

Syntax :

16
Pemrograman Database I Universitas Dinamika Bangsa

TO_NUMBER(char[,’format_model’])

TO_DATE(char[,’format_model’])

Example :

RR Date Format

Current Year Specified Date RR Format YY Format

1995 27-oct-95 1995 1995

1995 27-oct-17 2017 1917

2001 27-oct-17 2017 2017

2001 27-0ct-95 1995 2095

Example :

Input :

Select Last_name, to_char(start_date, 'DD-Mon-YYYY')

from employees

where start_date > to_date('01-Jan-90','DD-Mon-RR')

 
GENERAL FUNCTION

Tehese functions work with any data type and pertain to using null value.

17
Pemrograman Database I Universitas Dinamika Bangsa

* NVL (expr1, expr2)


* NVL2 (expr1, expr2, expr3)
* NULLIF (expr1, expr2)
* COALESCE(expr1,expr2,…….,exprn)

NVL : Coverts a null value an actual value


NVL2 : If expr1 is not null, NVL2 returns expr2, if expr1 is null, NVL2 returns
expr3. The argument expr1 can have any data type
NULLIF : Compares two expressions and return null if they are equal, or the first
expressions if they are not equal
COALESCE : Returns the first non-null expression in the expression list

NVL Function :

NVL(commission_pct,0)
NVL(hire_date,’01-JAN-97’)
NVL(job_id,’No Job Yet)

Example :

Input :

select last_name, salary, NVL(commission_pct,0),(salary*12) +


(salary*12*NVL(commission_pct,0)) AN_SAL
from employess

Bandingkan dengan yang berikut :

Input :

select last_name, salary, commission_pct,(salary*12) + (salary*12*commission_pct)


AN_SAL
from employees

NVL2 Function :

Input :

18
Pemrograman Database I Universitas Dinamika Bangsa

select last_name, salary, commission_pct,NVL2(commission_pct,'SAL+COMM','SAL')


Income

from employees

where department_idin (31,42)

NULLIF Function :

Input :

Select first_name, LENGTH(first_name) "expr1",

last_name, LENGTH(last_name) "expr2",

NULLIF(LENGTH(First_name), LENGTH(last_name)) result

From employees

COALESCE Function :

Input :

Select last_name, COALESCE(commission_pct, salary, 10) comm

From employees

Order By commission_pct

Conditional Expressions :

 Give you the use of IF-THEN-ELSE logic within a SQL Statement

 Use two methods:

- CASE expression

- DECODE function

Syntax :

CASE expr WHEN comparison_expr1 then return_expr1

19
Pemrograman Database I Universitas Dinamika Bangsa

[WHEN comparison_expr2 then return_expr2

WHEN comparison_exprn then return_exprn

ELSE else_expr]

END

Example :

Input :

Select last_name, depart, Salary,

CASE department_id WHEN 40 THEN 1.10*salary

WHEN 41 THEN 1.15*salary

WHEN 42 THEN 1.20*salary

ELSE salary END "REVISED_SALARY"

FROM Employees

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, department_id, Salary,

20
Pemrograman Database I Universitas Dinamika Bangsa

DECODE (department_id, 40, 1.10*salary,


41, 1.15*salary,
42, 1.20*salary,
salary)
REVISED_SALARY
FROM Employees

21
Pemrograman Database I Universitas Dinamika Bangsa

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 employees, departmets

 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.

Join:Comparing SQL:1999 to Oracle Syntax

Oracle SQL:1999
Equijoin Natural or Inner Join
Outerjoin Left Outer Join
Selfjoin Join ON
Nonequijoin Join Using
Cartesian Product Cross Join

22
Pemrograman Database I Universitas Dinamika Bangsa

Disini bisa dilihat dengan menggunakan JOIN.

Joining Tables using Oracle Syntax

Use a join to query data from more than one table.

Select table1.column, table2.column


From table1, table2
Where table1.column1 = table2.column2

 Write the join condition in the WHERE clause


 Prefix the column name with the table name when the same column name
appears in more than one table.

Example :
Input :
Select employees.department_id, employees.last_name,departments, departments.name
From employees, Departments
Where Employees.Department_id=departments

Didalam pencarian datanya juga bisa menggunakan kondisi.


Example :
Input :
Select employees.department_id, employees.last_name,departments,departments.name
From employees, Departments
Where Employees.Department_id=departments and last_name='Fay'

Serta juga bisa menggunakan kolom alias.


Example :
Input :

23
Pemrograman Database I Universitas Dinamika Bangsa

Select e.department_id, e.last_name,d.id,d.name


From employees e, Departments d
Where e.Department_id=d.Department_id

(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

Retrieving Record with Natural Joins

Input :

Select last_name, name


From employees
Natural join departments

Natural Join juga bisa menggunakan Where Clause.

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 :

24
Pemrograman Database I Universitas Dinamika Bangsa

Input :
Select e.department_id, e.last_name,d.id,d.name
From employeese, Departments d
Where e.Department_id(+)=d.id
Hasil Bandingkan saja saat latihan

Joining a Table to Itself


Input :
Select worker.last_name || ' works for ' || manager.last_name
From employeesworker, Employeesmanager
Where worker.department_id= Manager.department_id

Creating Cross Joins :


 The CROSS JOIN clause produces the cross product of two table
 This is the same as Cartesian product between the two table

Input :
Select last_name, name
From employees
Cross join departments

6
AGGREGATING DATA

25
Pemrograman Database I Universitas Dinamika Bangsa

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 :

SELECT column, group_function(column)


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

 Kriteria HAVING adalah : kriteria pemilihan atau seleksi data dengan


menggunakan kata HAVING, Kata HAVING ini bisa berupa HAVING
Count(nama_field), having SUM(nama_field), dan lain-lain.

Type dari group Functions :
 AVG( )
 COUNT( )
 MAX( )
 MIN( )
 STDDEV( )
 SUM( )
 VARIANCE( )

26
Pemrograman Database I Universitas Dinamika Bangsa

A. Penggunaan AVG
Fungsi ini digunakan untuk mencari harga rata-rata dari sekumpulan data yang ada.

Tampilkan rata-rata dari gaji berdasarkan kode Departement :


Input :
Select Department_id, avg(salary) from employees
group by Department_id

B. Penggunaan COUNT( )
Fungsi ini digunakan untuk mencari cacah atau banyaknya data.
Input :

Select Count(distinct department_id)


From employees

C. Penggunaan MIN( ) dan MAX( ), SUM( )


Fungsi MIN( ) digunakan untuk mencari harga minimum dan MAX( ) mencari harga
maximum serta SUM( ) mencari total dari sekumpulan data yang ada.
Input :
Select min(salary), max(salary), sum(salary)
From employees

Contoh lain :
Input :
Select min(salary), max(salary), sum(salary)

27
Pemrograman Database I Universitas Dinamika Bangsa

From employees
where userid LIKE 'e%'

Bisa juga menggunakan where clause dan Group by caluse serta Having, seperti
contoh-contoh berikut :

Input :

Select avg(salary) from employees


where department_id=32

Input :
Select department_id, Max(salary)
From employees
Group By department_id

Bandingkan hasil jika menggunakan Having :


Input :
Select department_id, Max(salary)
From employees
Group By department_id
having max(salary) >1500

Bandingkan hasil jika menggunakan Order By Descending:


Input :
Select department_id, Max(salary)

28
Pemrograman Database I Universitas Dinamika Bangsa

From employees
Group By department_id
having max(salary) >1500
Order By department_idDesc

7
SUBQUERIES

29
Pemrograman Database I Universitas Dinamika Bangsa

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, department_id, manager_id
From employees
where salary =
(Select salary
From employees
Where department_id=10)

Contoh Menggunakan AND Single-ROW Subqueries:


Input :
Select Last_name, salary, department_id, Manager_id

30
Pemrograman Database I Universitas Dinamika Bangsa

From employees
where salary =
(Select salary
From employees
Where department_id=10)
AND manager_id =
(Select manager_id
From employees
Where department_id=10)

Keterangan dari soal diatas :


Menampilkan seseorang bergaji sama dan manager_id juga sama.
Contoh Menggunakan OR Single-ROW Subqueries:
Input :
Select Last_name, salary, department_id, Manager_id
From employees
where salary =
(Select salary
From employees
Where department_id=10)
OR manager_id =
(Select manager_id
From employees
Where department_id=10)

 
Contoh Menggunakan Function dalam Subqueries:
Input :
Select last_name, Department_id, salary

31
Pemrograman Database I Universitas Dinamika Bangsa

From employees
Where salary = (Select MIN(salary)
FROM employees)

Contoh Menggunakan HAVING dan Subqueries:


Input :
Select department_id, MIN(salary)
From employees
Group By Department_id
HAVING MIN(salary) >
(Select Min(salary)
FROM employees
Where Department_id=43)

Keterangan :
Menampilkan siapa yang mempunyai gaji yang paling kecil tiap department dengan
pembanding adalah diatas dari gaji orang di department_id=43.

32
Pemrograman Database I Universitas Dinamika Bangsa

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 Department_id, Last_name, salary
From Employees
Where department_id=&Department_Id

Output :
Substitution Variables

Enter values for substitution variables in the script to execute:

Variable Value
department_id 41

OK Cancel

Diisi dengan nilai 41 dan klik OK maka hasilnya sebagai berikut :

Character and Data Values With Substitution Variables :


Input :
Select last_name, department_id, salary*12
From employees
Where last_name='&Nama'
Substitution Variables

Enter values for substitution variables in the script to execute:

Variable Value

33
Pemrograman Database I Universitas Dinamika Bangsa

Nagayama
nama
OK Cancel

Specifying Column Names, Expressions, and Text :


Input :
Select Department_id, last_name,&column_name
From employees
Where &condition
Order BY &order_column
Output :
Substitution Variables

Enter values for substitution variables in the script to execute:

Variable Value
salary
column_name
salary > 1500
condition
order_column last_name

OK Cancel

9
Creating and Managing Tables

34
Pemrograman Database I Universitas Dinamika Bangsa

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.
Type-type data lainnya :
BLOB : Binary large Object
CLOB : Character Large Object
UCLOD : Unicode Character large object / BFILE

35
Pemrograman Database I Universitas Dinamika Bangsa

Kesemua diatas adalah tipe baru di Oracle yang mendukung penyimpanan


data untuk multimedia sperti gambar video, dokumen, International Character
set dan lain-lain.

CREATE TABLE :
Syntax :
CREATE TABLE nama_tabel (
Nama field ke-1 tipe data (lebar_field),
……….
……….
Nama field ke-n tipe_data (lebar_field),
);

didalam pembuatan tabel juga bisa menggunakan Constrains.


What are Constrains ?
 Constraints enforce rules at the table level
 Constraints prevent the deletion of a table if there are dependencies
 The following constraints types are valid :
- NOT NULL : Specifies that the column cannot contain a null value
- UNIQUE : Specifies a column or combination of columns whose values
must be unique for all rows in the table
- PRIMARY KEY :Uniquely identifies each row of the table
- FOREIGN KEY : Establishes and enforces a foreign key relationship
between the column and a column of the refenced table
- CHECK : Specifies a condition that must be true

Contoh penerapan constraints :


- Untuk membuat tabel acuan (reference) sebelum tanda ‘)’ tambahkan
sintax :

36
Pemrograman Database I Universitas Dinamika Bangsa

Constraint nama_constraint primary key


(nama_field_primarykey) not null);
- Untuk membuat tabel yang menngacu pada tabel lain (tabel relasi)
sebelum tanda ‘)’ tambahkan sintak :

Constraint nama_constraint primary key(


Nama_field_primarykey-1, ………
Nama_field_primarykey-n),

Constraint nama_constraint foreign key(


Nama_field_foreignkey-1)references
Nama_tabel_acuan-1(nama_field_primarykey-1),
….
….
Constraint nama_constraint foreign key(
Nama_field_foreignkey-n)references
Nama_tabel_acuan-n(nama_field_primarykey-n)
);

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

Input :
Create table barang (
kode_barang char(6) ,
nama_barang varchar2(25),

37
Pemrograman Database I Universitas Dinamika Bangsa

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),
telepon_customer varchar2(15) unique dan primary key (PK) adalah field
kode_customer.
Input :
Create table customer (

38
Pemrograman Database I Universitas Dinamika Bangsa

kode_customer char(6),
nama_customer varchar2(30),
alamat_customer varchar2(30),
kota_customer varchar2(15),
telepon_customer varchar2(15) unique,
constraint pk_customer primary key(kode_customer)
);
Output :
Table Created.

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)
references suplier(kode_suplier)
);
Output :
Table created

39
Pemrograman Database I Universitas Dinamika Bangsa

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 :

Create table pembelian (


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),
constraint fk_pembelian_customer foreign key(kode_customer)
references customer(kode_customer)
);

Output :
Table created.

Keterangan :
- fk_pasok_barang : foreign key tabel pasok yang mengacu pada tabel
barang

40
Pemrograman Database I Universitas Dinamika Bangsa

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

Name Null? Type


KODE_BARANG NOT NULL CHAR(6)
NAMA_BARANG   VARCHAR2(25)
SATUAN_BARANG   VARCHAR2(20)
STOK_BARANG   NUMBER(4)

2. Desc suplier;

Name Null? Type


KODE_SUPLIER NOT NULL CHAR(5)
NAMA_SUPLIER   VARCHAR2(30)
ALAMAT_SUPLIER   VARCHAR2(30)
KOTA_SUPLIER   VARCHAR2(15)
TELEPON_SUPLIER   VARCHAR2(15)

3. Desc customer;

Name Null? Type


KODE_CUSTOMER NOT NULL CHAR(6)

41
Pemrograman Database I Universitas Dinamika Bangsa

NAMA_CUSTOMER   VARCHAR2(30)
ALAMAT_CUSTOMER   VARCHAR2(30)
KOTA_CUSTOMER   VARCHAR2(15)
TELEPON_CUSTOMER   VARCHAR2(15)

4. Desc Pasok;

Name Null? Type


KODE_PASOK NOT NULL CHAR(10)
KODE_BARANG NOT NULL CHAR(6)
KODE_SUPLIER NOT NULL CHAR(5)
TANGGAL_PASOK   DATE
JUMLAH_PASOK   NUMBER(4)

5. Desc pembelian;

Name Null? Type


KODE_PEMBELIAN NOT NULL CHAR(10)
KODE_BARANG NOT NULL CHAR(6)
KODE_CUSTOMER NOT NULL CHAR(6)
TANGGAL_PEMBELIAN   DATE
JUMLAH_PEMBELIAN   NUMBER(4)

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

42
Pemrograman Database I Universitas Dinamika Bangsa

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.

ALTER TABLE (Mengubah Tabel)

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 :

ALTER TABLE nama_tabel


ADD | MODIFY nama field tipe_data(lebar_field);
DROP COLUMN nama field
Contoh 1:
Pada tabel barang terdapat field dan tipe data untuk masing-masing field sebagai berikut :

Input :

Desc barang

Output :

Name Null? Type

43
Pemrograman Database I Universitas Dinamika Bangsa

KODE_BARANG NOT NULL CHAR(6)


NAMA_BARANG   VARCHAR2(25)
SATUAN_BARANG   VARCHAR2(20)
STOK_BARANG   NUMBER(4)

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 :

Name Null? Type


KODE_BARANG NOT NULL CHAR(6)
NAMA_BARANG   VARCHAR2(25)
SATUAN_BARANG   CHAR(5)
STOK_BARANG   NUMBER(4)

Terlihat satuan_barang telah berubah menjadi char(5).

Contoh 2 :
Ubahlah tipe data untuk field stok barang dari number(4) menjadi number(2).
Input :
Alter table barang

44
Pemrograman Database I Universitas Dinamika Bangsa

Modify STOK_BARANG number(2)


Input :
Desc Barang

Output :

Name Null? Type


KODE_BARANG NOT NULL CHAR(6)
NAMA_BARANG   VARCHAR2(25)
SATUAN_BARANG   CHAR(5)
STOK_BARANG   NUMBER(2)

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 :

Name Null? Type


KODE_BARANG NOT NULL CHAR(6)
NAMA_BARANG   VARCHAR2(25)
SATUAN_BARANG   CHAR(5)
STOK_BARANG   NUMBER(2)
KETERANGAN   VARCHAR2(15)
Berikut contoh menghapus Field stok_barang pada tabel barang:
Input :
Alter Table barang
Drop column stok_barang

45
Pemrograman Database I Universitas Dinamika Bangsa

Output :
Table altered.

DROP TABLE (Menghapus Tabel)

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 :

DROP TABLE barang

Output :

DROP TABLE barang


*
ERROR at line 1:
ORA-02449: unique/primary keys in table referenced by foreign keys

Jelas tidak bisa karena adanya reference dengan table yang lain.
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

46
Pemrograman Database I Universitas Dinamika Bangsa

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

Output :
Table dropped

Sekarang Anda diminta untuk membuat kesemua tabel diatas kembali yaitu tabel barang,
suplier, customer, pembelian, pasok.

47
Pemrograman Database I Universitas Dinamika Bangsa

RENAME TABLE (Merubah Nama Table)

Contoh :
Input :
RENAME barang to brg

Output :
Table renamed.

TRUNCATE (Menghapus seluruh baris dalam tabel)


Syarat : - tidak ada tabel yang reference
- Tidak bisa Rollback
Input :
Truncate Table brg

Output :
Table truncated.

10
Manipulating Data
Pada Manipulating data ini akan dibahas beberapa hal yaitu :

48
Pemrograman Database I Universitas Dinamika Bangsa

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.

Contoh : isikan data berikut kedalam table barang.


Kode_barang : BRG-1
Nama_barang : Televisi
Satuan Barang : Unit
Stok_barang : 10

Input :
Insert Into barang(kode_barang,nama_barang,Satuan_barang,stok_barang)
Values(‘BRG-1’,’Televisi’,’Unit’,10)

Selanjutnya jalankan perintah select * from barang maka akan menghasilkan :

49
Pemrograman Database I Universitas Dinamika Bangsa

Output :

KODE_B NAMA_BARANG SATUAN_BARANG STOK_BARANG


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)
Output :
Substitution Variables

Enter values for substitution variables in the script to execute:

Variable Value

50
Pemrograman Database I Universitas Dinamika Bangsa

BRG-5
kode_barang
Komputer
nama_barang
satuan_barang Unit

10
stok_barang
OK Cancel

Hasilnya setelah dilakukan query, Select * from Barang

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

Copying Rows From Another Table

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 :

Insert Into Table Baru(B,C,D)


Select B,C,D From Table Lama

Dan disini juga bisa menggunakan Where Clause jika ada penyaringan terhadap record
yang akan dicopykan.

Ad.2 UPDATE (Memperbaharui Data)

Update adalah perubahan data lama menjadi data terkini.

Syntax :

UPDATE nama_table
SET nama_field = data_baru
WHERE nama_field_kunci = Kode_kunci

51
Pemrograman Database I Universitas Dinamika Bangsa

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 :

Select * from barang

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 Kipas Angin   10

Cara pengisian yang tertinggal adalah sebagai berikut :

Input :

Update Barang
Set Satuan_barang=’Unit’
Where Kode_barang=’BRG-6’

Ouput :

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

52
Pemrograman Database I Universitas Dinamika Bangsa

BRG-5 Komputer Unit 10


BRG-6 Kipas Angin Unit 10

6 rows selected.

Disini diasumsikan bahwa nama_barang untuk kode_barang BRG-6 terjadi kesalahan


input, dimana terinput adalah Kipas Angin tapi sebenarnya adalah AC National. Kasus
diatas bisa dilakukan perbaikan dengan Update, seperti contoh berikut :

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.

Ad. 3 DELETE (Menghapus Data)


Penghapusan data bisa dilakukan secara keseluruhan dan bisa juga dilakukan sebagian.
Syntax :

DELETE FROM nama_table


[WHERE Kondisi

53
Pemrograman Database I Universitas Dinamika Bangsa

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

Create table pembelian (


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,

54
Pemrograman Database I Universitas Dinamika Bangsa

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

Contoh cara menghapus isi data :

Input :
Delete from barang
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

Dengan menggunakan perintah Delete data masih bisa di Rollback.

Ad. 4 MERGE (Pengabungan)


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

55
Pemrograman Database I Universitas Dinamika Bangsa

ON (join condition)
WHEN MATCHED THEN
UPDATE SET
Col1 = col_vall,
Col2 = col2_val
WHEN NOT MATCHED THEN
Insert (column_list)
VALUES (column_values);

Terlebih dahulu create sebuah file dengan nama copy_emp (contoh)


Input :
Create table copy_emp (
First_name varchar2(25),
Last_name varchar2(25),
Department_id number(7)
);

Input :
Merge Into copy_emp c
Using employeese
ON (c.department_id=e.department_id)
WHEN MATCHED THEN
UPDATE SET
c.first_name = e.first_name,

56
Pemrograman Database I Universitas Dinamika Bangsa

c.last_name = e.Last_name
WHEN NOT MATCHED THEN
Insert Values(e.first_name,e.Last_name,e.department_id)

Output :

FIRST_NAME LAST_NAME DEPARTMENT_ID


Eddie Chang 44
Antoinette Catchpole 44
George Smith 41

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

Perintah Commit digunakan untuk menyimpan secara permanen transaksi yang


sudah dilakukan didalam database.

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

57
Pemrograman Database I Universitas Dinamika Bangsa

Berbeda dengan perintah commit yang digunakan untuk menyimpan transaksi,


perintah rollback justru digunakan untuk membatalkan transaksi yang terjadi
didalam database tetapi dengan syarat belum dilakukan commit.

Syntax:

ROLLBACK

3. SAVEPOINT

- Beguna untuk penandaan transaksi yang baru terjadi.

- Sehingga jika ada transaksi berikutnya dan sebelum di commit terjadi


rollback maka transaksi yang sudah di save point tidak ikut ter Rollback.

Lakukan perintah dibawah ini dan lihat hasilnya :

Update barang

set nama_barang='AC LG'

Where kode_barang='BRG-6';

Select * from barang; (lihat hasil update)

Savepoint barang ; (tandai hasil perbaikan)

Insert Into Barang (Kode_barang,Nama_barang,Satuan_barang,Stok_barang)

Values ('BRG-7','Kipas Angin','Unit',10); (nambah data baru)

Select * from barang; (lihat hasil insert)

58
Pemrograman Database I Universitas Dinamika Bangsa

Rollback to barang; (lakukan rollback)

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.

DATA CONTROL LANGUAGE (DCL)

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 :

- All Privileges : Pemberian semua hak

- Select : User hanya diperboleh melakukan select

- Insert : User hanya diperbolehkan melakukan

insert

- Delete : User Hanya boleh mendelete

- Update : User hanya dibolehkan mengupdate

- Nama_Tabel, yaitu nama tabel yang akan diberikan kepada seorang user
untuk hak akses tertentu.

59
Pemrograman Database I Universitas Dinamika Bangsa

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 :

CREATE USER user

IDENTIFIED BY password

Contoh :

CREATE USER akwan

IDENTIFIED BY sunoto

USER SYSTEM PRIVILEGES

Syntax :

GRANT privilege [,privilege….]

TO user [, user / role, PUBLIC….];

Privileges :

- CREATE SESSION : Connect to the database

- CREATE TABLE : Create tables in the user’s schema

- CREATE SEQUENCE : Create a sequence in the user’s schema

- CREATE VIEW : Create a view in the user’s schema

- CREATE PROCEDURE : Create a stored procedure, function, or package in

60
Pemrograman Database I Universitas Dinamika Bangsa

the user’s schema

- RESOURCE

- UNLIMITED TABLESPACE

- CONNECT

Contoh :

GRANT Create session, create table, create sequence, create view

TO akwan

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 :

Create Role role

Contoh :

Create Role manager

Beri grant ke Role :

GRANT create table, create view to manager

Beri Grant role pada user

GRANT manager to akwan1, akwan2

Changing your password

Syntax :

ALTER USER user

IDENTIFIED BY Password Baru

61
Pemrograman Database I Universitas Dinamika Bangsa

Contoh :

ALTER USER akwan

IDENTIFIED BY sunoto02

2. REVOKE

Berguna untuk menghapus hak akses dari seorang user.

Syntax :

REVOKE hak_akses

ON Objek

FROM nama_user, nama_role|Public

[CASCADE CONSTRAINTS]

Contoh :

REVOKE Select, insert

ON s_customer

FROM akwan

62

You might also like