You are on page 1of 55

Laboratorium Database Page 1 of 55

Panduan Praktikum

Basis Data
&
Sistem Basis Data

( ORACLE SQL*Plus 3.3 )

By David 1
Laboratorium Database Page 2 of 55

Daftar isi……………………………..

Daftar isi ………………………………………………………….. 2

Konsep Dasar Basis Data


Pengertian SQL, perintah – perintah umum SQL…………..3

ORACLE SQL*Plus 3.3


• SELECT …………………………………………… 4
• Operasi select berdasar kondisi tertentu…………… 11
• Nesting function…………………………………… 14
• Query dengan multi table ( join ) ……………………19
• Group function……………………………………… 22
• Subquery…………………………………………… 25
• Menspesifikasikan variabel pada saat Runtime …… 28
• CREATE TABLE………………………………… 33
• Oracle data dictionary……………………………… 41
• Memanipulasi data dengan DML ……………………43
• Alter table dan Constraint…………………………… 48

By David 2
Laboratorium Database Page 3 of 55

Panduan Praktikum
Basis Data & Sistem Basis Data

Konsep Dasar Basis Data

Basis Data / Database :


Adalah kumpulan dari data/table yang terelasi atau saling berhubungan, dimana
database tersebut dapat terdiri dari satu table atau lebih.
• Table / entity
Sekelompok record data, terdiri dari data/informasi yang sejenis
• Baris / Record / Tuple / row
Kumpulan dari beberapa item/field yang memberikan informasi yang
bermanfaat.
• Kolom / Field / atribut / column
Sebuah item data yang menyusun record / baris / tuple
• Primary key
Adalah suatu atribut atau satu set minimal atribut yang
mengidentifikasikan secara unique antra record satu dengan record yang
lainnya dan juga merupakan suatu atribut yang mewakili setiap kejadian
dari entity
• Foreign key
Adalah suatu atribut atau satu set atribut yang melengkapi suatu
relationship dimana atribut tersebut mengacu ke sebuah primary key pada
base table ( Induk )
• Constraint
Adalah suatu aturan – aturan (batasan) yang berlaku terhadap suatu atribut
atau entity

DBMS (Database Manajemen System) :


Adalah sistem software yang multiguna, yang menyediakan fasilitas untuk
mendefinisikan, membangun, dan memanipulasi basis data untuk aplikasi yang beraneka
ragam.

Pengertian SQL
Adalah bahasa standar yang digunakan untuk memanipulasi database relational

Perintah – Perintah SQL secara umum


DDL ( Data Definitiom Language )
Digunakan untuk menspesifikasikan skema konseptual
Contoh :
• Create
• Drop

By David 3
Laboratorium Database Page 4 of 55

• Alter

DML ( Data Manipulation Language )


Digunakan untuk melakukan manipulasi data ( setelah dilakukan proses kompilasi
skema konseptual), contoh :
• Insert
• Update
• Delete

ORACLE / SQL *Plus 3.3


Adalah tool yang dimiliki oleh Oracle yang digunakan untuk melakukan /
mengeksekusi statement SQL dan PL / SQL

PERINTAH SELECT

• Penggunaan perintah SELECT sederhana

Syntax

SELECT [ DISTINCT ] { *, Column [ Alias ], … }


FROM [ Table ];

Contoh

1. Menampilkan semua baris dan column (semua data)

Dapatkan semua data yang terdapat dalam table s_dept

SQL>SELECT *
1 FROM s_dept ;

Hasilnya

ID NAME REGION_ID

10 Finance 1
31 Sales 1
32 Sales 2
41 Operations 1
50 Administration 1

By David 4
Laboratorium Database Page 5 of 55

Untuk menampilkan “Struktur table” digunakan perintah sebagai berikut :

SQL>DESCRIBE Table_name ;

Atau

SQL>DESC Table_name ;

Contoh

Tampilkan struktur table dari Table s_dept ;

SQL>DESCRIBE s_dept;
Atau
SQL>DESC s_dept ;

Hasilnya

Name Null? Type .

ID NOT NULL NUMBER(7)


NAME NOT NULL VARCHAR2(25)
REGION_ID NUMBER(7)

2. Menampilkan semua baris dengan memilih kolom yang spesifik / khusus

Contoh

Dapatkan semua nomor departemen (dept_id), nama pegawai


(last_name), dan kode manager (manager_id) dari table s_dept !

SQL>SELECT dept_id , last_name , manager_id


1 FROM s_emp ;

DEPT_ID LAST_NAME MANAGER_ID

50 Velasquez
41 Ngao 1
31 Nagayama 1
10 Quick-To-See 1
50 Ropeburn 1
41 Urguhart 2

By David 5
Laboratorium Database Page 6 of 55

3. Melakukan operasi aritmatika pada column

Operasi aritmatika dapat dilakukan untuk colum yang memiliki


type data numerik. Operator yang dapat digunakan untuk melakukan operasi
tersebut adalah “ +, -, *, / “

Contoh

SQL>SELECT last_name, salary, 12*salary+100


1 FROM s_emp ;

Hasil dari query tersebut akan menampilkan nama pegawai, gaji,


dan colum gaji yang telah dikenai operasi aritmatika dimana data yang
ditampilkan adalah gaji pegawai dikalikan 12 lalu ditambahkan dengan 100,
sehingga hasil dari query tersebut dapat dilihat sebagai berikut :

LAST_NAME SALARY 12 * SALARY + 100

Velasquez 2500 30100


Ngao 1450 17500
Nagayama 1400 16900

4. Menggunakan Alias untuk mengganti nama column pada saat query


dijalankan

Secara default, nama column yang ditampilkan pada saat kita


melakukan operasi SELECT akan sama dengan apa yang kita tuliskan dalam
query, jika diinginkan untuk merubah tampilan nama column agar lebih mudah
dipahami, maka column dapat ditampilkan dengan menggunakan nama lain (alias)
begitu juga pada table.

Contoh

SQL>SELECT Em.last_name,Em. salary,


2 12*Em.salary+100 AS Annual_Salary
3 FROM s_emp Em ;

atau

SQL>SELECT Em.last_name, Em.salary, 12*Em.salary+100 Annual_Salary


2 FROM s_emp Em;

By David 6
Laboratorium Database Page 7 of 55

LAST_NAME SALARY Annual_Salary

Velasquez 2500 30100


Ngao 1450 17500
Nagayama 1400 16900

Perhatikan bahwa pada column yang menampilkan


12*salary+100 akan ditampilkan dengan nama alias Annual_Salary seprti
pada hasil query di atas, sedangkan untuk nama table memiliki nama alias Em.
coba bandingkan dengan contoh yang sama sebelumnya.
Jika nama alias yang akan ditampilkan terdiri dari beberapa kata,
maka harus ditulis dengan diapit oleh tanda “”

Contoh
SQL>SELECT last_name, salary, 12*salary+100 AS “Annual Salary”
2 FROM s_emp ;

5. Operator penggabungan ( | | )

Operator penggabungan digunakan untuk menggabungkan


beberapa column menjadi sebuah column. Penggabungan ini menggunakan
operator | |

Contoh

SQL>SELECT first_name | | ‘ ‘ | | last_name | | ‘, ‘ | | title Pegawai,


2 salary Gaji
3 FROM s_emp ;

PEGAWAI GAJI

Carmen Velasquez, President 2500


LaDoris Ngao, VP, Operations 1450
Midori Nagayama, VP, Sales 1400
Mark Quick-To-See, VP, Finance 1450

6. Menangani column yang memiliki nilai NULL

Jika suatu column tidak memilik nilai, maka column tersebut


disebut sebagai NULL, atau column yang mengandung NULL. NULL tidak sama

By David 7
Laboratorium Database Page 8 of 55

dengan 0, dan juga tidak sama dengan spasi karena 0 adalah angka dan spasi
adalah karakter.
Column NULL tersebut juga dapat dikenai operasi aritmatika
seperti layaknya column yang memiliki nilai numerik

SQL>SELECT last_name, title, salary, salary* commission_pct / 100 Comm


2 FROM s_emp ;

LAST_NAME TITLE COMM


Havel Warehouse Manager
Magee Sales Representative 140
Giljum Sales Representative 186.25
Sedeghi Sales Representative 151.5
Nguyen Sales Representative 228.75
Dumas Sales Representative 253.75
Madoro Stock Clerk

Fungsi NVL()
Fungsi NVL() digunakan untuk merubah column yang
mengandung nilai NULL sesuai dengan argumen yang dikehendaki. Perubahan ini
hanya bersifat sementaradan tidak permanen, dengan kata lain perubahan ini
hanya tampak pada saat query dijalankan.

Contoh

SQL>SELECT last_name, salary, salary* NVL(commission_pct,0) / 100


2 COMM
3 FROM s_emp ;

LAST_NAME TITLE COMM


Havel Warehouse Manager 0
Magee Sales Representative 140
Giljum Sales Representative 186.25
Sedeghi Sales Representative 151.5
Nguyen Sales Representative 228.75
Dumas Sales Representative 253.75
Madoro Stock Clerk 0

Numerik NVL(number,9)

By David 8
Laboratorium Database Page 9 of 55

Date NVL(date_column,’01-JAN-98’)
Char / Varchar2 NVL(character_column,’Unavailable’)

7. Penggunanan keyword DISTINCT ( Data ditampilkan secara Unique )

SQL>SELECT salary
2 FROM s_emp ;

SALARY

2500
1450
1400
1450

Secara default jika kita menjalankan query di atas, maka data dari
gaji (salary) akan ditampilkan semuanya ( ditampilkan dengan tidak unique ).
Tetapi jika diinginkan untuk ditampilkan secara unique, maka dapat dilakukan
dengan menggunakan perintah DISTINCT seperti pada contoh di bawah ini

SQL>SELECT DISTINC salary

2 FROM s_emp ;

SALARY

750
795
800
850

Perintah DISTINCT juga otomatis akan mengurutkan data yang


ditampilkan secara Ascending

DISTINCT dengan multi column

By David 9
Laboratorium Database Page 10 of 55

Untuk penggunaan DISTINCT yang melibatkan banyak column,


maka data yang ditampilkan adalah data unique dari kombinasi column – column
yang terdapat dalam query

Contoh:
SQL>SELECT DISTINC dept_id, title
2 FROM s_emp ;

DEPT_ID TITLE


41 Stock Clerk
41 VP, Operations
41 Warehouse Manager
42 Stock Clerk
42 Warehouse Manager
43 Stock Clerk

8. SQL *Plus Editing Commands

• A[PPEND] : Menambahkan text di akhir baris dari suatu query (SQL Buffer)
• L[IST] : Menampilkan semua query yang aktif di SQL Buffer
• R[UN] : Menjalankan query yang aktif di SQL Buffer

9. SQL * Plus File Command

• SAVE : Digunakan untuk menyimpan query ke dalam Disk ( Media


Penyimpanan)
• GET : Mengambil query yang ada di media penyimpanan dan
mengaktifkannya kedalam SQL Buffer
• START : Menjalankan query yang ada di media penyimpanan
• @file_name : Sama dengan perintah START
• EDIT : Mengoperasikan text editor SQL Buffer
• EXIT : Keluar dari SQL

10. Mengatur format tampilan dengan COLUMN


Sintax

COL[UMN] [{column_name|alias} {option …}]

Option – option yang tersedia


• CLE[AR] : Menghilangkan efek dari Column Format
• FOR[MAT] : Merubah fornat tampilan suatu column
• HEA[DING] text : Mengatur column heading
• JUS[TIFY] : Mengatur justify dari column heading

By David 10
Laboratorium Database Page 11 of 55

• NOPRI[NT] : Menghide column


• NUL[L] text : Mengganti dengan text pada column yang NULL
• PRI[N] : Menampilkan column

Contoh

COLUMN last_name HEADING ‘Emloyee | Name’ FORMAT A15


COLUMN salary JUSTIFY LEFT FORMAT $99,999.99
COLUMN start_date FORMAT A9 NULL ‘Not hired’

• Operasi SELECT dengan menggunakan batasan / kondisi tertentu

1. Operasi SELECT dengan menggunakan ORDER BY


Penggunaan ORDER BY pada operasi SELECT akan mengakibatkan data
yang ditampilkan akan berurut sesuai dengan column yang ditentukan. Berbeda
dengan perintah DISTINCT dimana dalam penggunaan ORDER BY semua data
akan ditampilkan walaupun data tersebut sudah pernah ditampilkan sebelumnya

Syntax
SELECT column_name
FROM table_name
[ORDER BY {column,expr} [ASC|DESC]];

Contoh

SELECT last_name, dept_id, start_date


FROM s_emp
ORDER BY last_name;

Hasilnya

LAST_NAME DEPT_ID START_DATE


Biri 43 07-APR-90
Catchpole 44 09-FEB-92
Chang 44 30-NOV-90
Dancs 45 17-MAR-91
Dumas 35 09-OCT-91
Giljum 32 18-JAN-92
Havel 45 27-FEB-91

Secara default data yang ditampilkan dengan ORDER BY akan terurut


secara ASCENDING, jika diinginkan untuk menampilkan data yang terurut secara

By David 11
Laboratorium Database Page 12 of 55

DESCENDING maka dapat digunakan perintah DESC mengikuti perintah


ORDER BY seperti yang dapat dilihat pada syntax di atas
Seperti juga pada DISTINCT, ORDER BY juga dapat menampilkan data
secara terurut berdasarkan lebih dari satu column seperti yang dapat dilihat pada
contoh di bawah ini

SELECT last_name, dept_id, salary


FROM s_emp
ORDER BY dept_id, salary;

Hasil

LAST_NAME DEPT_ID SALARY


Quick-To-See 10 1450
Nagayama 31 1400
Magee 31 1400
Giljum 32 1490
Sedeghi 33 1515
Nguyen 34 1525
Patel 34 795

2. Operasi SELECT dengan menggunakan WHERE


Penggunaan WHERE dalam operasi SELECT akan mengakibatkan
data yang ditampilkan adalah hanya data – data tertentu yang memenuhi kondisi yang
disyaratkan dalam WHERE.

Contoh

SELECT first_name, last_name, title


FROM s_emp
WHERE last_name = ‘Magee’;

Hasil

FIRST_NAME LAST_NAME TITLE


Colin Magee Sales Representative

Operator – operator yang digunakan


• = : WHERE dept_id = 41;
• < : WHERE dept_id < 41;
• > : WHERE dept_id > 41;
• <= / >=

By David 12
Laboratorium Database Page 13 of 55

SQL operator
• BETWEEN … AND …
Digunakan untuk menampilkan data yang memiliki kondisi column yang
nilainya berada diantara range yang ditentukan
Contoh
SELECT * FROM s_emp
WHERE dept_id BETWEEN 34 AND 41;

• IN
Digunakan untuk menapilkan data yang nilai columnnya berada dalam
daftar / list yang ditentukan
Contoh
SELECT * FROM s_emp
WHERE region_id IN (1,3);
• LIKE
Digunakan untuk menampilkan data yang nilai columnya memiliki
karakter/kata/bagian yang menyerupai kondisi yang ditetapkan.
Contoh
SELECT last_name FROM s_emp
WHERE last_name LIKE ‘M%’;
Maksud dari query di atas adalah ingin ditampilkan data Employee yang
memiliki nama depan yamg huruf depannya adalah ‘M’ dengan huruf lainnya
sembarang ( tanda % mewakili sederetan karakter sedangkan tanda _ mewakili
sebuah karakter )
• IS NULL
Digunakan untuk menampilkan data – data yang memiliki column yang
nilainya adalah NULL
Contoh
SELECT * FROM s_emp
WHERE commission_pct IS NULL;

Logical Operator
• AND
Jika kedua kondisi terpenuhi, maka data tersebut akan ditampilkan
Contoh
SELECT last_name, salary, dept_id, title
FROM s_emp
WHERE dept_id = 41
AND title = ‘Stock Clerk’;
• OR
Jika salah satu kondisi dipenuhi, maka data tersebut akan ditampilkan
Contoh
SELECT last_name, salary, dept_id, title
FROM s_emp

By David 13
Laboratorium Database Page 14 of 55

WHERE dept_id = 41
OR title = ‘Stock Clerk’;
• NOT
Akan menampilkan data yang nilainya tidak sama dengan kondisi yang
diinginkan
Contoh
SELECT last_name, salary, dept_id, title
FROM s_emp
WHERE NOT dept_id = 41

• Operasi SELECT yang menggunakan Manipulation Function

1. Character Function
• LOWER
Fungsi ini digunakan untuk merubah nilai dari column menjadi huruf
kecil (lowercase)
• UPPER
Fungsi ini digunakan untuk merubah nilai dari column menjadi huruf
kapital (Uppercase)
• INITCAP
Fungsi ini digunakan untuk merubah huruf hanya awal dari nilai
column menjadi huruf kapital

Contoh

SELECT LOWER(first_name | | ‘ ‘ | | last_name) VP,


INITCAP(userid) USERID,
UPPER(title) TITLE
FROM s_emp
WHERE UPPER(title) LIKE ‘VP%’;

Hasil

VP USERID TITLE

ladoris ngao Lngao VP, OPERATIONS


midori nagayama Mnagayam VP, SALES
mark quick-to-see Mquickto VP, FINANCE
audry ropeburn Aropebur VP, ADMINISTRATOR

• CONCAT
Digunakan untuk menggabungkan nilai dari dua buah column
• SUBSTR
Digunakan untuk mengambil beberapa karakter tertentu dari suatu
colum value

By David 14
Laboratorium Database Page 15 of 55

• LENGTH
Digunakan untuk menghitung panjang dari suatu karakter

Contoh
SELECT CONCAT(name, country) Customer,
LENGTH(name) Length_Name,
SUBSTR(name,1,3) Kode
FROM s_customer
WHERE credit_rating = ‘GOOD’;

CUSTOMER LENGTH_NAME KODE


Delhi SportsIndia 12 Del
Sweet RockNigeria 10 Swe

2. Numeric Function
• ROUND
Digunakan untuk membulatkan suatu nilai pecahan, dimana aturan
pembulatannya adalah jika nilai kurang dari lima maka akan dibulatkan ke
bawah, jika nilai lebih atau sama dengan lima maka akan dibulatkan ke atas
• TRUNC
Digunakan untuk membulatan suatu nilai pecahan, dimana aturan
pembulatannya adalah selalu dilakukan pembulatan ke bawah.
• MOD
Digunakan untuk menampilkan sisa dari suatu proses pembagian

Contoh
SELECT ROUND(45.923,2), ROUND(45.293,0), ROUND(45.293,-1),
TRUNC(45.293,2), TRUNC(45.293), TRUNC(45.293,-1),
MOD(1600,300)
FROM SYS.DUAL;
Hasil

ROUND(45.293,2) ROUND(45.293,0) ROUND(45.293,-1)


45.92 46 50

TRUNC(45.293,2) TRUNC(45.293) TRUNC(45.293,-1) MOD(1600,300)


45.92 45 40 100

SYS.DUAL adalah sebuah table dummy, yaitu sebuah table yang dimiliki oleh
SYS yang hanya terdiri dari satu column dengan nilai ‘X’. Dual ini berguna pada
saat kita menginginkan pengembalian suatu nilai yang tidak terdapat dalam data
user.

3. Date format
• Menampilkan tanggal system

By David 15
Laboratorium Database Page 16 of 55

Contoh
SELECT SYSDATE FROM SYS.DUAL;

SYSDATE adalah sebuah fungsi yang digunakan untuk mengambil tanggal


dan jam (waktu) sistem
• Melakukan operasi matematika terhadap tanggal
Operasi – operasi matematika dapat juga ,dilakukan terhadap data
yang bertype tanggal

Contoh
SELECT last_name, (sysdate – start_date) / 7 Weeks
FROM s_emp
WHERE dept_id = 43;

Hasil

LAST_NAME WEEKS
Biri 297.226498
Markarian 238.083641
Newman 230.083641

4. Date Function
• MONTHS_BETWEEN(date1, date2)
Menampilkan jumlah bulan yang berada dalam selang waktu yang
ditentukan.
• ADD_MONTHS(date, n)
Menjumlahkan tanggal dengan sebuah angka n, dimana n dapat
bernilai positif dan atau n dapat bernilai negatif

Contoh
SELECT id, start_date,
MONTHS_BETWEEN(sysdate, start_date) Tenure,
ADD_MONTHS(start_date, 6) Review
FROM s_emp
WHERE MONTHS_BETWEEN(sysdate, start_date) < 48;

• NEXT_DAY(date,’char’)
Mendapatkan tanggal dari hari yang dinginkan dimana tanggal yang
ditampilkan adalah berdasarkan hari spesifik yang pertama kali ditemukan
setelah hari ini
• LAST_DAY(date)
Digunakan untuk mendapatkan tanggal dari hari terakhir pada bulan
yang diinginkan berdasarkan inputan tanggal (date)

By David 16
Laboratorium Database Page 17 of 55

Contoh

SELECT product_id,
NEXT_DAY(restock_date,’FRIDAY’),
LAST_DAY(restock_date)
FROM s_inventory
WHERE restock_date IS NOT NULL
ORDER BY restock_date;

Hasil

PRODUCT_ID NEXT_DAY( LASTDAY(


30433 11-SEP-92 30-SEP-92
40422 12-FEB-93 28-FEB-93
50532 16-APR-93 30-APR-93

• ROUND(date,’fmt’)
Digunakan untuk membulatkan tanggal berdasarkan format BULAN
atau TAHUN, aturan pembulatannya sama dengan aturan pembulatan pada
Numerik value
• TRUNC(date,’fmt’)
Digunakan untuk membulatkan tanggal berdasarkan format BULAN
atau ANGKA, aturan pembulatan selalu dilakukan dengan membulatkan ke
bawah.

Contoh
SELECT ROUND(‘25-MAY-95’,’MONTH’),
ROUND(‘25-MAY-95’,’MONTH’),
TRUNC(‘25-MAY-95’,’MONTH’),
TRUNC(‘25-MAY-95’,’MONTH’)
FROM sys.dual;

Hasil
ROUND(’2 ROUND(‘2 TRUNC(‘25 TRUNC(‘2
01-JUN-95 01-JAN-95 01-MAY-95 01-JAN-95

5. Convesion Function
• TO_CHAR(number/date, [‘fmt’])
Mengkonversi data numerik atau date menjadi data karakter
(VARCHAR2) dengan format model ‘fmt’.

Contoh
SELECT id, TO_CHAR(date_ordered,’MM/YY’)

By David 17
Laboratorium Database Page 18 of 55

FROM s_ord
WHERE sales_rep_id = 11;

Untuk format penulisan tanggal selain format seperti pada contoh di


atas juga terdapat format – format sebagai berikut :

• SCC atau CC : Menampilkan abad dari tanggal yang diinputkan


• YYYY : Menampilkan tahun dari tanggal yang diinputkan
sebanyak 4 digit
• YY : Sama dengan YYYY tetapi ditampilkan dengan 2 digit
• YEAR : Menampilkan ejaan tahun dari tanggal yang
diinputkan
• Q : Menyatakan qurtal dari tanggal yang diinputkan
• MM : Menampilkan bulan dari tanggal yang diinputkan
• MONTH : Menampilkan ejaan dari nama bulan
• MON : Sama dengan MONTH tetapi hanya ditampilkan 3
huruf
• RM : Menampilkan bulan dalam bentuk Romawi
• WW : Menampilkan minggu yang ke sekian dari total bulan
dalam satu tahun
• W : Menampilkan minggu ke sekian dari total minggu dalam
satu bulan
• DDD : Menampilkan hari yang ke sekian dari total hari
dalam
satu tahun
• DD : Menampilkan hari yang ke sekian dari total hari dalam
satu bulan
• D : Menampilkan hari yang ke sekian dari total hari dalam
satu minggu
• DAY : Menampilkan nama hari dari tanggal yang diinputkan
• DY : Sama dengan DAY bedanya adalah nama hari
ditampilkan dalam 3 huruf
• HH24:MI:SS AM : Menampilkan waktu sistem
• DDSPTH : Menampilkan ejaan dari tanggal yang diinputkan

• $99999 : Untuk menampilkan numerik dengan format $99999


• L99999 : Sama dengan $99999

• TO_NUMBER
Mengkonversikan data yang bertype string menjadi data yang bertype
number ( numerik )

Contoh
SELECT TO_NUMBER(‘000101’)

By David 18
Laboratorium Database Page 19 of 55

FROM SYS.DUAL;

• TO_DATE
Mengkonversikan data yang bertype string menjadi data yang bertype date

Contoh
SELECT id, total, date_ordered
FROM s_ord
WHERE date_ordered =
TO_DATE(‘September 7, 1992’,’Month dd, YYYY’);

6. Nesting Single Row Function

Contoh :
SELECT CONCAT( UPPER(last_name) , SUBSTR(title,3) ) “Vice President”

FROM s_emp
WHERE title LIKE ‘VP%’;

• Operasi SELECT dengan melibatkan banyak table

Apakan JOIN itu


Join digunakan dalam operasi query untuk mendapatkan data yang berasal dari
banyak table

1. Cartesian Product
Ketika operasi join antara dua table atau lebih tidak dikenakan suatu kondisi
tertentu yang merefrensikan kedua table tersebut, maka hasil dari operasi join
tesebut dinamakan Cartesian Product, dimana data yang akan ditampilkan adalah
kombinasi dari data kedua table atau lebih

Contoh
SELECT s_dept.name, s_emp.last_name
FROM s_dept, s_emp;

2. Equijoin
Untuk mendapatkan nama dari departemen dimana employee bekerja, dapat
dilakukan operasi penggabungan pada table s_emp dan table s_dept dimana untuk
operasi JOIN dilakukan dengan cara menyamakan nilai dari column dept_id pada
table s_emp dengan column id pada table s_dept.
Hubungan yang terjadi antara table s_emp dengan s_dept pada contoh di atas
disebut dengan equijoin.

By David 19
Laboratorium Database Page 20 of 55

Contoh
SELECT s_dept.id “Kode Departemen”, s_dept.name Departemen,
S_region.id “Kode Wilayah”, s_region.name AS Wilayah
FROM s_dept, s_region
WHERE s_dept.regionid = s_region.id
ORDER BY s_dept.id;

Hasil
KODE DEPARTEMEN DEPARTEMEN KODE WILAYAH WILAYAH
10 Finance 1 North America

31 Sales 1 North America



12 rows selected

Contoh
Dapatkan nama employee, kode departemen dan nama departemen dari
employee yang bernama ‘Menchu’

SELECT Em.last_name, Em.dept_id, De.name


FROM s_emp Em, s_dept De
WHERE Em.dept_id = De.id
AND INITCAP(Em.last_name) = ‘Menchu’;

Hasil
LAST_NAME DEPT_ID NAME
Menchu 42 Operations

3. Non Equijoin
Jika penggabungan antara 2 buah table (table s_emp dan salgrade) dimana
tidak terdapat column pada table pertama (table s_emp) yang berkoresponden
secara langsung terhadap column pada table kedua (table salgrade), maka
hubungan tersebut dapat disebut dengan Non Equijoin

Contoh
Dapatkan nama employee, gaji dan grade dari masing – masing employee
dimana data yang ditampilkan adalah terurut berdasarkan nama employee.

SELECT e.last_name, e.salary, s.grade


FROM s_emp e, salgrade s
WHERE e.salary BETWEEN losal AND hisal
ORDER BY e.last_name;

Hasil

By David 20
Laboratorium Database Page 21 of 55

LAST_NAME SALARY GRADE


Biri 1100 1
Catchpole 1300 2
Chang 800 1
Dancs 860 1
Dumas 1450 3

25 rows selected
4. Outer Join
Dalam penggabungan antara 2 tabel, dimana salah satu atau lebih columnya
terhubung satu sama lain, tetapi pada salah satu column table yang terelasi
tersebut terdapat nilai yang tidak terefrensikan ke column table lainnya ( column
bernilai NULL ), maka kejadian tersebut dalam operasi penggabungan disebut
Outer Join

Contoh
Dapatkan nama employee, id, nama customer dimana data yang ditampilkan
terurut berdasarkan id

SELECT e.last_name, e.id, c.name


FROM s_emp e, s_customer c
WHERE e.id ( + ) = c.sales_rept_id
ORDER BY e.id;

Hasil

LAST_NAME ID NAME

Dumas 15 Kam's Sporting Goods
Dumas 15 Sportique
Dumas 15 Muench Sports
Dumas 15 Sporta Russia
Dumas 15 Kuhn's Sports
Sweet Rock Sports

15 rows selected

Penggunaan tanda (+) akan menyebabkan baris yang tidak memiliki nilai yang
terefrensi akan ditampilkan apa adanya ( kosong ) walaupun pada kenyataannya
yang ditampilkan adalah baris yang pada salah satu column tidak memiliki nilai.
Jika tanda tersebut tidak digunakan maka baris tersebut tidak ditampilkan.

5. Self Join

By David 21
Laboratorium Database Page 22 of 55

Operasi penggabungan juga dapat dilakukan dengan cara menggabungkan


sebuah table dengan table itu sendiri. Dalam hal ini diasumsikan bahwa table
yang di gabungkan terdiri atas 2 table yang berbeda (tetapi pada kenyataannya
adalah sama). Hal ini dimungkinkan dengan cara memberikan nama alis yang
berbeda terhadap kedua table tersebut.

Contoh
Dapatkan id employee, nama employee, id manager serta nama manager dari
table employee

SELECT Em.id, Em.last_name, Em.manager_id, Mgr.last_name


FROM s_emp Em, s_emp Mgr
WHERE Em.manager_id = Mgr.id;

Hasil
ID LAST_NAME MANAGER_ID LAST_NAME
2 Ngao 1 Velasquez
3 Nagayama 1 Velasquez
4 Quick-To-See 1 Velasquez
5 Ropeburn 1 Velasquez
6 Urguhart 2 Ngao
10 Havel 2 Ngao

24 rows selected

• Operasi SELECT dengan melibatkan banyak table dengan mengunakan Group


Function serta penggunaan ORDER BY & HAVING

Dalam melakukan suatu query dapat dilakukan terhadap sekelompok data


yang memiliki minimal sebuah kondisi yang sama dengan cara menggunakan Group
Function.
Group Function yang terdapat dalam SQL*Plus 3.3 adalah

• AVG() : Menghitung rata – rata nilai dari sekelompok data


• MAX() : Menampilkan nilai terbesar dari sekelompok data
• MIN() : Menampilkan nilai terkecil dari sekelompok data

• SUM() : Menghitung total nilai column tertentu dari sekelompok data

Contoh
Dapatkan rata – rata gaji, gaji terkecil, gaji terbesar dan total gaji dari data gaji
employee

SELECT AVG(salary), MAX(salary), MIN(salary), SUM(salary)

By David 22
Laboratorium Database Page 23 of 55

FROM s_emp
WHERE UPPER(title) LIKE ‘SALES%’;

Hasil

AVG(SALARY) MAX(SALARY) MIN(SALARY) SUM(SALARY)


1476 1525 1400 7380

Contoh
Dapatkan nama employee dengan urutan abjad terdepan ( terkecil ) dan nama
employee dengan urutan abjad terbelakang ( terbesar ) dari data employee

SELECT MIN(last_name), MAX(last_name)


FROM s_emp;

Hasil

MIN(LAST_NAME) MAX(LAST_NAME)
Biri Velasquez

• COUNT() : Mendapatkan jumlah baris / data yang dihasilkan oleh query


• STDDEV() : Menghitung standard deviasi dari sekelompuk data dengan
mengabaikan nilai NULL
• VARIANCE() : Mendapatkan varian dari sekelompok data

Contoh
Dapatkan total employee yang bekerja pada departemen 31

SELECT COUNT(*)
FROM s_emp
WHERE dept_id = 31;

Hasil

COUNT(*)
2

Contoh
Dapatkan kode departemen, nama departemen dan jumlah employee yang
bekerja pada departemen tersebut

SELECT dept_id Departemen, d.name Nama, COUNT(e.id) Jumlah


FROM s_emp e, s_dept d
WHERE e.dept_id = d.id
GROUP BY e.dept_id, d.name;

By David 23
Laboratorium Database Page 24 of 55

Hasil
DEPARTEMEN NAME JUMLAH
10 Finance 1
31 Sales 2
32 Sales 1
33 Sales 1
34 Sales 2
35 Sales 1
41 Operations 4
42 Operations 3
43 Operations 3
44 Operations 2
45 Operations 3
50 Administration 2

12 rows selected.

Contoh
Dapatkan kode departemen, nama departemen dan total gaji, varian dan
standard deviasi dari employee yang bekerja pada masing – masing departemen
tersebut

SELECT e.dept_id, d.name, SUM(e.salary),


VARIANCE(e.salary), STDDEV(e.salary)
FROM s_emp e, s_dept d
WHERE e.dept_id = d.id
GROUP BY e.dept_id, d.name ;

Hasil
KODE NAMA TOTAL VARIAN DEVIASI
10 Finance 1450 0 0
31 Sales 2800 0 0
32 Sales 1490 0 0
33 Sales 1515 0 0
34 Sales 2320 266450 516.18795
35 Sales 1450 0 0
41 Operations 4990 53691.667 231.71462
42 Operations 3245 62258.333 249.5162
43 Operations 2700 32500 180.27756
44 Operations 2100 125000 353.55339
45 Operations 3267 50043 223.70293
50 Administration 4050 451250 671.75144

By David 24
Laboratorium Database Page 25 of 55

12 rows selected.

Contoh
Dapatkan data dari departemen (id, dan rata – rata gaji ) dari employee yang
rata – rata gaji employe yang bekerja di departemen tersebut > 2000

SELECT dept_id, AVG(salary)


FROM s_emp
GROUP BY dept_id
HAVING AVG(salary) > 2000;

Hasil
DEPT_ID AVG(SALARY)
50 2025

1 row selected.

Sintak operasi SELECT secara lengkap adalah

SELECT column, group_function


FROM tables [alias]
[WHERE conditions]
[GROUP BYgroup_by_expression]
[HAVING group_condition]
[ORDER BYcolumn];

• Subqueries

Yang dimaksud dengan subquery adalah sebuah query (operasi SELECT)


yang mengandung query lain di dalamnya.
Subquery sangat berguna untuk menghasilkan query yang nilai dari kondisinya
merupakan nilai yang belum diketahui

Contoh
Dapatkan data id, last_name dan title dari employee yang bekerja didalam
departemen dimana employee ‘BIRI’ bekerja

SELECT id, last_name, title


FROM s_emp
WHERE dept_id =
( SELECT dept_id
FROM s_emp
WHERE UPPER(last_name) = ‘BIRI’);

Hasil

By David 25
Laboratorium Database Page 26 of 55

ID LAST_NAME TITLE
8 Biri Warehouse Manager
20 Newman Stock Clerk
21 Markarian Stock Clerk

Contoh
Dapatkan data id, last_name, title, salary dari employee yang memiliki salary
berada di bawah gaji rata – rata

SELECT id, last_name, title, salary


FROM s_emp
WHERE salary <
( SELECT AVG(salary)
FROM s_emp);

Hasil

ID LAST_NAME TITLE SALARY


6 Urguhart Warehouse Manager 1200
7 Menchu Warehouse Manager 1250
8 Biri Warehouse Manager 1100
17 Smith Stock Clerk 940
18 Nozaki Stock Clerk 1200
19 Patel Stock Clerk 795
20 Newman Stock Clerk 750
21 Markarian Stock Clerk 850
22 Chang Stock Clerk 800
23 Patel Stock Clerk 795
24 Dancs Stock Clerk 860
25 Schwartz Stock Clerk 1100

12 rows selected.

Contoh
Dapatkan data employee yang bekerja pada departemen yang bernama
‘Finance’ atau departemen yang memiliki region_id = 2

SELECT last_name, first_name, title


FROM s_emp
WHERE dept_id IN
( SELECT id
FROM s_dept
WHERE name = ‘Finance’
OR region_id = 2);

By David 26
Laboratorium Database Page 27 of 55

Hasil
LAST_NAME FIRST_NAME TITLE
Quick-To-See Mark VP, Finance
Menchu Roberta Warehouse Manager
Giljum Henry Sales Representativ
Nozaki Akira Stock Clerk
Patel Vikram Stock Clerk

5 rows selected.

Contoh
Dapatkan data dept_id dan rata – rata salary dari masing masing departemen
yang lebih besar dari rata – rata salary employee yang bekerja pada departemen yang
memiliki dept_id = 32

SELECT dept_id, AVG(salary)


FROM s_emp
GROUP BY dept_id
HAVING AVG(salary) >
( SELECT AVG(salary)
FROM s_emp
WHERE dept_id = 32);

Hasil
DEPT_ID AVG(SALARY)
33 1515
50 2025

2 rows selected.

Contoh
Dapatkan data pekerjaan (title dan rata – rata gaji) yang memiliki rata – rata
gaji terendah dari semua title yang ada.

SELECT title, AVG(salary)


FROM s_emp
GROUP BY title
HAVING AVG(salary) <
( SELECT MIN(AVG(salary))
FROM s_emp

By David 27
Laboratorium Database Page 28 of 55

GROUP BY tite );

TITLE AVG(SALARY)
Stock Clerk 949

1 row selected.

• Menspesifikasikan variabel pada saat eksekusi

Dalam menjalankan sebuah query, kita dapat memasukkan kondisi –


kondisi yang kita inginkan pada saat query di jalankan ( dieksekusi ), dengan kata lain
kita dapat melakukan interaksi secara langsung terhadap data – data yang kita
inginkan walaupun query sudah dibuat terlebih dahulu.
Hal tersebut di atas dimungkinkan karena dalam pembuatan query kita dapat
menspesifikasikan beberapa variabel sehingga pada saat query dijalankan kita tinggal
memberikan ( mengisikan ) data – data yang kita butuhkan kedalam variabel tersebut
sehingga query yang dihasilkan bersifat dinamis

1. Dengan menggunakan single Ampersand (karakter &)


Dengan menggunakan variabel yang diawali dengan karakter &, user
dapat menampilkan data tertentu secara dinamis.
Pada saat query dijalankan user akan mengisikan data yang dibutuhkan pada
prompt yang disediakan,

Contoh
Buatlah sebuah query yang akan menampilkan id, last_name dan salary
dari employee yang bekerja pada departemen tertentu. Kode departemen tersebut
dapat diisi langsung oleh user pada saat query dijalankan

SELECT id, last_name, salary


FROM s_emp
WHERE dept_id = &Nomor_Departemen;

Hasil

Enter value for Nomor_Departemen : 31

ID LAST_NAME SALARY
3 Nagayama 1400
11 Magee 1400

By David 28
Laboratorium Database Page 29 of 55

Perhatikan query tersebut, dalam query tersebut digunakan sebuah variabel


Nomor_Departemen dimana pada saat query dieksekusi sql akan menampilkan
suatu perintah agar user menginputkan data yang dibutuhkan untuk mengisi nilai
dari variabel Nomor_Departemen.
Dan perhatikan hasil dari query setelah user menginputkan sebuah nilai
untuk variabel Nomor_Departemen ( yaitu 31 ), maka data yang ditampilkan
adalah data employee yang berada dalam departemen yang bernomor sama
dengan nilai dari variabel Nomor_departemen yaitu 31.

Penggunaan Ampersand (karakter &) untuk data bertype string atau Date
Dalam query di sebelumnya, data yang diinputkan untuk variabel
Nomor_departemen adalah bertype numerik. Jika data yang akan diinputkan
bertype selain numerik ( string atau date ) maka penggunana variabel selain
diawali dengan karakter & juga harus diapit oleh tanda petik tunggal
(‘&nama_variabel’)

Contoh
Dapatkan data – data untuk id, last_name, salary dari employeeyang
memiliki title tertentu dimana untuk title dapat diinputkan melalui keyboard

SELECT id, last_name, salary


FROM s_emp
WHERE title = ‘&Jabatan’;

Hasil

Enter value for jabatan: President


old 3: WHERE title = '&Jabatan'
new 3: WHERE title = 'President'

ID LAST_NAME SALARY
1 Velasquez 2500

Jika pada query di atas variabel Jabatan tidak diapit oleh tanda petik
tunggal, maka yang harus diingat pada saat menginputkan data adalah , data harus
diapit oleh tanda petik tunggal

Contoh
Sama dengan sool di atas

SELECT id, last_name, salary


FROM s_emp
WHERE title = &Jabatan;

By David 29
Laboratorium Database Page 30 of 55

Hasil

Enter value for jabatan: ‘President’


old 3: WHERE title = &Jabatan
new 3: WHERE title = 'President'

ID LAST_NAME SALARY
1 Velasquez 2500

Menspesifikasikan column name, expresi dan text pada saat eksekusi

Contoh
Tampilkan struktur dari table s_ord, setelah itu tampilkan kode (id) dan
sembarang column lain dari table s_order dimana data yang ditampilkan
kondisinya berdasarkan keinginan user ( user dapat memilih kondisi sesuai
dengan keinginan user )

SELECT id, &culomn_name


FROM s_ord
WHERE &condition;

Hasil

Enter value for culomn_name: total AS Jumlah_Barang


old 1: SELECT id, &culomn_name
new 1: SELECT id, total AS Jumlah_Barang
Enter value for condition: UPPER(payment_type) = 'CASH'
old 3: WHERE &condition
new 3: WHERE UPPER(payment_type) = 'CASH'

ID JUMLAH_BARANG
103 377
110 1539.13
111 2770
98 595

2. Menggunakan command DEFINE / UNDEFINE


Selain dengan menggunakan ampersand dapat juga meenggunakan cara
lain dengan cara mendefinisikan sebuah variabel beserta typenya serta
inisialisasinya dan kemudian variabel yang didefinisikan tersebut digunakan
dalam operasi query

Contoh

By David 30
Laboratorium Database Page 31 of 55

SQL>DEFINE dname = sales

Jika diinginkan untuk melihat hasil dari variabel yang telah didefinisikan
di dalam memori maka dapat digunakan perintah di bawah ini

SQL>DEFINE dname

Hasil
DEFINE dname = “sales” (CHAR)

Penggunaan variabel yang telah didefinisikan dalam operasi query dapat


dilihat pada query di bawah ini

SELECT name
FROM s_dept
WHERE lower(name) = ‘&dname’

Hasil
old 3: WHERE lower(name) = '&dname'
new 3: WHERE lower(name) = 'sales'

NAME
Sales
Sales
Sales
Sales
Sales

Untuk menghilangkan variabel yang sudah didefinisikan dari memori


maka dapat digunakan perintah UNDEFINE

SQL>UNDEFINE dname

3. Menggunakan command ACCEPT (script)

Penggunaan ACCEPT hampir sama dengan penggunaan karakter


ampersand perbedaan yang mendasar adalah bahwa dalam penggunaan ACCEPT
variabel yang didefinisikan dapat diikuti oleh format tertentu. ACCEPT banyak
digunakan dalam pembuatan SCRIPT (query yang disimpan dalam file)

Contoh
Sebelum query di bawah ini dijalankan, simpan dengan nama script1
Dan setelah itu jalankan query dengan cara

SQL>START SCRIPT1

By David 31
Laboratorium Database Page 32 of 55

ACCEPT vcolumn PROMPT ‘Inputkan Column yang diinginkan : ’


ACCEPT vkondisi PROMPT ‘Inputkan type pembayaran : ‘
SELECT &vcolumn
FROM s_ord
WHERE &vkondisi;

Hasil

SQL>START SCRIPT1
SQL> ACCEPT vcolumn PROMPT 'Inputkan Column yang diinginkan : '
Inputkan Column yang diinginkan : id, total
SQL> ACCEPT vkondisi PROMPT 'Inputkan type pembayaran : '
Inputkan type pembayaran : payment_type = 'CASH'
SQL> SELECT &vcolumn
2 FROM s_ord
3 WHERE &vkondisi
4 /
old 1: SELECT &vcolumn
new 1: SELECT id, total
old 3: WHERE &vkondisi
new 3: WHERE payment_type = 'CASH'

ID TOTAL
103 377
110 1539.13
111 2770
98 595

4. Mempassing nilai / parameter ke dalam script


Sebuah atau beberapa nilai dapat di passing ke dalam sebuah script pada
saat sebuah script dijalankan. Nilai – nilai tersebut merupakan parameter –
parameter yang akan dioperasikan bersama sama dengan query yang terkandung
dalam script tersebut.
Penggunaan script dengan menggunakan passing parameter hampir sama
dengan pembuatan file – file .BAT yang kita kenal dalam DOS, yaitu dengan
menggunakan notasi & diikuti dengan nomor

Contoh
Simpanlah script ini dengan nama script2

SET ECHO OFF


SELECT id, last_name, salary
FROM s_emp

By David 32
Laboratorium Database Page 33 of 55

WHERE title = ‘&1’


/
SET ECHO ON

Hasil
SQL> start script2 President
old 3: WHERE title = '&1'
new 3: WHERE title = 'President'

ID LAST_NAME SALARY
1 Velasquez 2500

Dalam script di atas (President) adalah parameter yang dipassingkan ke


dalam script pada saat script tersebut dijalankan

PEMBUATAN TABLE

Dalam pembuatan table yang harus diingat adalah perlunya untuk mendesain
database sebaik mungkin, karena baik tidaknya sistem yang dibuat tergantung dari
database yang didesain ( pelajari kembali tentang database yang pernah anda dapatkan
pada matakuliah Basis Data )
Hal – hal yang perlu diperhatikan dalam pembuatan table adalah bentuk relation
type –nya. Dari bentuk ini dapat kita tentukan hubungan antara table dan setelah melalui
proses normalisasi ( jika dianggap perlu ), barulah dapat ditentukan integrity constraint
dari masing – masing table tersebut
Integrity constraint mencakup :
• Entity integrity constraint
Yaitu tidak adanya nilai dari primary key yang NULL dan nilai yang dikandung
haruslah UNIQUE
• Referential integrity constraint
Nilai dari foreign key ( kunci tamu pada table child ) harus sama dengan nilai dari
primary key pada base table yang menjadi acuan, atau diset menjadi NULL ( tidak
mengacu ke sebuah nilai )
• Column integrity constraint
Nilai dari column harus sama dengan type data pada saat column tersebut
didefinisikan
• User-defined integrity constraint
Merupakan nilai yang disesuaikan dengan kebutuhan / aturan yang berlaku,
contoh dalam sebuah kasus dimana untuk data employee yang baru diterima dan
belum memiliki departemen tempat bekerja, maka defaultnya adalah untuk dept_id
diisi nilai = 1

By David 33
Laboratorium Database Page 34 of 55

Penjelasan tentang Primary key dan Foreign key dapat anda lihat pada halaman 1
dari buku panduan praktikum ini

Pembuatan Table

Secara umum syntax dari pembuatan table adalah sebagai berikut

CREATE TABLE [schema.]table_name


(
column_name data_type [DEFAULT expr]
[column _constraint] ,

[table_constraint]
);

penjelasan

schema : sama dengan nama dari pemilik (owner’s name)


table_name : Nama dari table
DEFAULT expr : Nilai default dari column yang harus dipenuhi saat
operasi insert dilakukan
column_name : Adalah nama dari column
column_constraint : Adalah integrity constraint yang merupakan
bagian dari pendefinisian sebuah column
table_constraint : Adalah integrity constraint yang merupakan bagian
dari pendefinisian sebuah table ( constraint table )

Aturan penamaan
• Harus diawali dengan huruf
• Panjangnya max 30 karakter
• Karakter – karakter yang dapat digunakan A-Z, a-z, 0-9, _, $, dan #
• Nama dari table / column haruslah belum pernah didefinisikan sebelumnya
• Bukan merupakan reserved word dari ORACLE 7.3

Type – type data dalam ORACLE 7

By David 34
Laboratorium Database Page 35 of 55

• VARCHAR2(size) : Variable yang menampung string dimana panjangnya


berkisar 1 – 2000 karaktaer
• CHAR(size) : Variabel yang menampung string yang panjangnya
berkisar 1 – 255

Perbedaan utama dari VARCHAR2 dan CHAR adalah


1. Panjang VARCHAR2 adalah max 2000 karakter, CHAR adalah 255
Karakter
2. Jika sebuah column didefinisikan terhadap masing – masing type data
(VARCHAR2 dan CHAR) dengan panjang 20 karakter, jika diinputkan
data yang panjangnya 10, maka untuk column yang type datanya
VARCHAR2, data isimpan denganpanjang 10 karakter, sedangkan
untuk type data CHAR, data disimpan sepanjang 20 karakter dengan
10 karakter sisanya adalah blank.

• NUMBER : Variabel yang menampung data numerik tanpa


desimal
• NUMBER(p,s) : Variabel yang menampung data numerik yang
panjangnya p dengan s digit desimal
• DATE : Variabel yang menampung data date dan jam
• LONG : Variabel yang digunakan untuk menampung data
yang memiliki nilai panjang karakter diatas 2
gigabyte. Hanya satu column setiap tablenya yang
diperbolehkan menggunakan type data ini
• RAW and LONGROW : Hampir sama dengan VARCHAR2 dan LONG, tetapi
digunakan untuk disimpan dalam dengan berorientasi
byte atau data biner dimana tidak diinterpretasikan
oleh Oracle 7 Server

Data Integrity Constraint


• NOT NULL : Menyatakan bahwa column tersebut tidak boleh
bernilai NULL
• UNIQUE : Menyatakan bahwa nilai yang terkandung dalam
column tersebut harus unique (berbeda) terhadap
column yang sama pada baris di lain dalam sebuah
table yang sama
• PRIMARY KEY : Menyatakan bahwa column tersebut merupakan
primary key dimana nilai yang dikandungnya tidak
boleh NULL dan harus unique
• FOREIGN KEY : Menyatakan bahwa column tersebut mengacu
terhadap column yang merupakan primary key pada
table yang lain
• CHECK : Memberikan ketentuan nilai pada column diman nilai
yang boleh diinputkan adalah sesuai dengan yang
dikehendaki

By David 35
Laboratorium Database Page 36 of 55

Secara umum jika kita mendefinisikan sebuah constraint, dan kita tidak
memberikan nama terhadap constraint tersebut maka secara otomatis Oracle akan
memberikan nama terhadap constraint yang kita definisikan
Dalam pendefinisian constraint ada dua cara yang dapat dilakukan, yaitu dengan
langsung didefinisikan pada saat pembuatan sebuah table atau setelah table di buat, selain
constraint dapat dikenakan column, pemberian constraint dapat juga dilakukan terhadap
table

Contoh NOT NULL constraint

CREATE TABLE friend


(
last_name VARCHAR2(25)
CONSTRAINT friend_last_name_NN NOT NULL,
phone VARCHAR2(7) NOT NULL
);

Perhatikan kedua column yang dideklarasikan dalam table friend tersebut, untuk
column last_name dideklarasikan dengan cara memberikan nama constraint yaitu
friend_last_name_nn pada column last_name sedangkan untuk column phone langsung
ditetapkan bahwa column tersebut memiliki constraint NOT NULL, dan untuk nama
secara otomatis diberikan oleh Oracle

SYNTAX CONSTRAINT

Column_name [CONSTRAINT constraint_name] constraint_type

Atau

Column_name column_type
[CONSTRAINT constraint_name] constraint_type
(column, …) ,

Contoh UNIQUE constraint

CREATE TABLE friend


(
last_name VARCHAR2(25)
CONSTRAINT friend_last_name_UK UNIQUE,

By David 36
Laboratorium Database Page 37 of 55

phone VARCHAR2(7) UNIQUE


)

Contoh PRIMARY KEY constraint

CREATE TABLE karyawan


(
id NUMBER(4)
CONSTRAINT karyawan_id_PK PRIMARY KEY,
last_name VARCHAR2(25)
CONSTRAINT friend_last_name_NN NOT NULL,
phone VARCHAR2(7)
)

Untuk lebih jelasnya perhatikan cara pengimplementasian struktur table di bawah


ini menjadi sebuah table lengkap dengan constraint – constraint yang telah disebutkan
terlebih dahulu

Nama Table : WILAYAH

Nama column : KODE NAMA


Key type : PK
NN / UK : NN,UK NN
FK table :
FK column :
Type data : Number Char
Length : 7 25

Cara pengimplemantasian

CREATE TABLE wilayah


(
Kode NUMBER(7)
CONSTRAINT wilayah_Kode_PK PRIMARY KEY,
Nama CHAR(25)
CONSTRAINT wilayah_Nama_NN NOT NULL
);

Nama Table : DEPARTEMEN

By David 37
Laboratorium Database Page 38 of 55

Nama column : ID NAMA KDWIL


Key type : PK
NN / UK : NN,UK1 NN,UK2 UK2
FK table : WILAYAH
FK column : KODE
Type data : Number Char Number
Length : 7 25 7

Cara pengimplemantasian

CREATE TABLE departemen


(
Id NUMBER(7)
CONSTRAINT departemen_Id_PK PRIMARY KEY,
Nama CHAR(25)
CONSTRAINT departemen_Nama_NN NOT NULL,
KdWil NUMBER(7)
CONSTRAINT departemen_KdWil_FK REFERENCESS
Wilayah (Kode),
CONSTRAINT departemen_Nama_KdWil_UK UNIQUE
(Nama, KdWil)
);

Keterangan :

Perhatikan contoh di atas ! Pada contoh di atas telah melibatkan hubunga antara 2
table yaitu table wilayah dan table departemen itu sendiri. Hubungan antara kedua table
tersebut diwakili oleh column KdWil (yang merupakan FOREIGN KEY) pada table
departemen yang direferensikan dengan column Kode (yang merupakan PRIMARY
KEY) pada table wilayah. Perhatikan cara mereferensikannya.
Selain itu pada contoh di atas juga telah ditentukan sebuah constraint untuk table
departemen ( constraint table ), dimana constraint tersebut menyatakan bahwa kombinasi
untuk column Nama dan KdWil pada table tersebut haruslah UNIQUE

Nama Table : KARYAWAN

Nama column : NIP Nama TglMasuk Gaji NoDep Komisi


Key type : PK
Default : sysdate
NN / UK : NN,UK
FK table : Departemen
FK column : Id

By David 38
Laboratorium Database Page 39 of 55

Type data : Number Char Number Number Number Number


Length : 7 25 7 11,2 7 4,2

Nama column : UserId


Key type :
Default :
NN / UK : NN, UK
FK table :
FK column :
Type data : Varchar2
Length : 8

CREATE TABLE karyawan


(
NIP NUMBER(7)
CONSTRAINT karyawan_NIP_PK PRIMARY KEY ,
Nama CHAR(25) ,
UserId VARCHAR(2)
CONSTRAINT karyawan_UserId_NN NOT NULL
CONSTRAINT karyawan_UserId_UK UNIQUE ,
TglMasuk DATE DEFAULT SYSDATE,
Gaji NUMBER(11,2) ,
NoDep NUMBER(7)
CONSTRAINT karyawan_NoDep_FK REFERENCES
Departemen (Id) ,
Komisi NUMBER(4,2)
CONSTRAINT karyawan_Komisi_CK CHECK
( Komisi IN(10, 12.5, 15, 17.5, 20))
);

Keterangan :

Contoh di atas merupakan sebuah contoh yang cukup lengkap, Perhatikan contoh
di atas
Column NIP memiliki constraint PRIMARY KEY, sedangkan column Nama tidak
memiliki constraint. Untuk column UserId memiliki dua buah constraint yaitu NOT
NULL dan UNIQUE
Column TglMasuk memiliki default SYSDATE ( tanggal sistem pada saat data
karyawan dimasukkan ) yang maksudnya adalah jika dalam menginputkan data karyawan

By David 39
Laboratorium Database Page 40 of 55

dimana untuk column TglMasuk tidak ikut diinputkan, maka secara default TglMasuk
akan diisi dengan tanggal sistem
Column NoDep bereferensi dengan column Id pada table DEPARTEMEN,
sedangkan untuk column Komisi data yang diinputkan untuk column ini hanya boleh diisi
dengan ketentuan nilai harus diantara salah satu nilai berikut yaitu 10, 12.5, 15, 17.5 dan
20. Dengan kata lain jika pada saat data diinputkan dan pada column Komisi nilai yang
diinputkan diluar dari ketentuan maka secara otomatis proses penginputan data karyawan
akan ditolak

Penggunaan ON DELETE CASCADE pada Constraint FOREIGN KEY

Dalam pendeklaraian sebuah column yang memiliki constraint FOREIGN KEY


dapat ditambahkan command ON DELETE CASCADE yang maksudnya adalah jika
data yang menjadi acuan (column pada base table yang menjadi acuan) dihapus , maka
secara otomatis data pada table yang mengacu base table tersebut akan dihapus

Contoh
Pada soal di atas untuk column NoDep akan ditambahkan command ON
DELETE CASCADE


NoDep NUMBER(7)
CONSTRAINT karyawan_NoDep_FK REFERENCES
Departemen (Id) ON DELETE CASCADE ,

Membuat table dengan menggunakan subquery


Dalam pembuatan table, selain dengan cara di atas, dapat juga dilakukan dengan
cara melakukan subquery. Maksudnya adalah kita membuat table berdasarkan table yang
sudah pernah ada.

Syntax

CREATE TABLE table_name


AS
SELECT column_name
FROM table_name
WHERE condition;

By David 40
Laboratorium Database Page 41 of 55

Contoh
Buatlah sebuah table pegawai yang merupakan subquery dari table karyawan

CREATE TABLE pegawai


AS
SELECT * FROM karyawan;

Hasil yang didapatkan dari Create table di atas adalah sebuah table pegawai
dengan struktur yang sama dengan table karyawan dan data data yang ada di dalam table
pegawai sama persis dengan data pada table karyawan

Contoh
Buatlah sebuah table dengan nama s_emp41 yang merupakan subquery dari table
s_emp dimana hanya column id, last_name, userid, dan start_date saja yang diambil dari
column table s_emp dan data pegawai yang diambil hanya yang ber dept_id = 41

CREATE TABLE s_emp41


AS
SELECT id, last_name, user_id, start_date
FROM s_emp
WHERE dept_id = 41;

Hasil dari create table di atas adalah sebuah table s_emp41 dengan struktur table
id, last_name, userid dan start_date sedangkan datanya adalah employee yang memiliki
dept_id = 41 ( sesuai dengan kondisi yang ditentukan )

• ORACLE DATA DICTIONARY

Oracle data dictionary adalah salah satu komponen yang penting dari Oracle 7
Server, dimana dalam komponen ini terdapat sekumpulan table dan view yang
menampilkan referensi secara read-only terhadap database yang berupa
• User tables
- Merupakan sekumpulan table yang telah terbentuk dan di maintenance
oleh user
- Mengandung informasi tentang user
Data dictionary
- Sekumpulan dari table yang telah dibentuk dan di maintenance oleh
Oracle 7 Server
- Mengandung informasi tenteng database

By David 41
Laboratorium Database Page 42 of 55

Gambaran tentang data dictionary

Dibuat pada saat database dibuat


Di update dan di meintenance oleh Oracle 7 Server
Mengandung data dictionary views
Informasi yang terkandung dalam dictionary
• Nama – nama dari Oracle 7 Server user
• Database object names
• Table constraint
• Auditing information

Contoh 1
Menampilkan semua views data dictionary yang dapat diakses oleh user

SELECT *
FROM DICTIONARY;

Contoh 2
Menampilkan struktur dari User_Objecs View

DESCRIBE user_objects

Contoh 3
Menampilkan semua object_name dan object_type dari user_object (owner)

SELECT object_name, object_type


FROM user_objects
Contoh 4
Menampilkan constraint dari sebuah table

SELECT constraint_name, constraint_type, search_condition


r_constraint_name
FROM user_constraints
WHERE table_name =’S_EMP’;

Contoh 5
Menampilkan column constraint pada sebuah table

By David 42
Laboratorium Database Page 43 of 55

SELECT constraint_name, column_name


FROM user_cons_columns
WHERE table_name = ‘S_EMP’;

MEMANIPULASI DATA ( DML )

Dalam pembahasan kali ini adalah tentang memanipulasi data data dari table yang
pernah dibuat.Perintah perintah yang akan dibahas untuk memanipulasi data (DML)
dalam SQL diantaranya adalah

• Melakukan Insert data (baris) ke dalam table ( Operasi Insert )

Untuk menambah atau menyisipkan sebuah baris ke dalam sabuah table


digunakan perintah INSERT. Dengan menggunakan syntax ini, hanya sebuah baris
yang dapat disisipkan kedalam table.

Syantax

INSERT INTO table_name [ (column [ , column … ] ) ]


VALUES ( value [ , value … ] );

Dalam melakukan insert ke dalam sebuah table, sebelumnya kita harus


mengetahui struktur tablenya terlebih dahulu. Selain itu kita juga harus mengetahui
constraint – constraint yang berlaku baik constraint pada table maupun constraint
pada column
Khusus untuk data yang bertype string ( Char & Varchar2 ) dan tanggal
(Date), dalam melakukan proses insert harys diapit oleh tanda ‘ ’ (petik tunggal)

Contoh 1
Menyisipkan data dengan semua column - columnnya ( lengkap )

INSERT INTO s_dept


VALUES ( 11, ‘Finance’, 2);

Contoh 2
Menyisipkan baris yang mengandung NULL

By David 43
Laboratorium Database Page 44 of 55

INSERT INTO s_dept


VALUES ( 12, ‘MIS’, NULL)

Atau

INSERT INTO s_dept (id, name)


VALUES (12, ‘MIS’)

Contoh 3
Menyisipkan dengan hanya beberapa column saja

INSERT INTO s_emp (id, last_name, userid)


VALUES (26, ‘Donna’, ‘SFCL26’)

Pada contoh 3 di atas dapat juga dilakukan operasi penyisipan dimana nilai
yang disisipkan adalah nilai dari beberapa column dari table

Contoh 4
Menyisipkan dengan menggunakan nilai khusus ( special values )

INSERT INTO s_emp (id, last_name, first_name, userid, salary, start_date)


VALUES (26, ‘Donna’, ‘Smith’, USER, NULL, SYSDATE);

Perhatikan contoh 4 untuk nilai dari column userid, salary dan start_date
dimana nilai yang dimasukkan adalah masing – masing nama user, NULL dan tanggal
system

Contoh 5
Menyisipkan spesific Date dan Time

INSERT INTO s_emp (id, last_name, first_name, userid, salary, start_date)


VALUES (26, ‘Donna’, ‘Smith’, USER, NULL,
TO_DATE(‘01-JAN-96 08:00’ , ‘DD-MM-YY HH:MI’ );

Contoh 6
Menyisipkan nilai dengan cara langsung diinputkan oleh user pada saat dieksekusi
( menggunakan variabel )

INSERT INTO s_dept


VALUES (&Kode_Departemen, ‘&Nama_departemen’, &Kode_Wilayah);

Contoh 7
Menyisipkan baris dengan menggunakan script

By David 44
Laboratorium Database Page 45 of 55

ACCEPT No_Dep PROMPT ‘Inputkan Kode Departemen : ’


ACCEPT Nama_Dep PROMPT ‘Inputkan Nama Departemen : ’
ACCEPT Wil_Dep PROMPT ‘Inputkan Kode Wilayah Departemen : ’
INSERT INTO s_dept(id, name, region_id)
VALUES (&No_Dep, ‘&Nama_Dep’, &Wil_Dep);

Contoh 8
Menyisipkan baris dengan cara mengambil nilai dari table lain (dengan menggunakan
subquery)

INSERT INTO history(id, last_name, salary, title, start_date)


SELECT id, last_name, salary, title, start_date)
FROM s_emp
WHERE start_date < ‘01-JAN-94’;
• Mengupdate data pada sebuah table

Memodifikasi data yang ada di dalam table dapat menggunakan perintah


UPDATE, yang memiliki syntax

UPDATE table_name
SET column = value [ , column = value]
[ WHERE condition ];

Dalam melakukan operasi update juga harus diperhatikan constraint –


constraint baik constraint yang menyertai table maupun constraint yang menyertai
column

Contoh 1
Mengupdate sebuah column pada baris tertentu

UPDATE s_emp
SET dept_id = 10
WHERE id = 2;

Contoh 2
Mengupdate beberapa column pada baris tertentu

UPDATE s_emp

By David 45
Laboratorium Database Page 46 of 55

SET dept_id = 32, salary = 2250


WHERE id = 1;

Contoh 3
Mengupdate semua baris pada table

UPDATE s_emp
SET commission_pct = 10;

• Menghapus data

Penghapusan baris pada sebuah table dapat dilakukan dengan menggunakan


perintah DELETE, Syntax

DELETE table-name
[ WHERE condition ];

Contoh 1
Menghapus data tertentu

DELETE s_emp
WHERE id = 13;

Contoh 2
Menghapus semua baris pada table

DELETE s_emp;
dalam melakukan penghapusan data tersebut, yang harus diperhatikan adalah
untuk column yang diacu oleh table lain (base table). Maksudnya adalah jika data
pada baris tersebut direlasikan ke table lain, dan data pada base table tersebut
dihapus, maka otomatis akan disalahkan oleh Oracle karena data pada Base Table
tetrsebut masih diacu oleh table lain
Misal data pada departen untuk column id dengan nilai 41 dihapus, maka
otomatis akan disalahkan. Mengapa ? karena baris data tersebut diacu oleh table
karyawan dimana ada data employee yang memiliki NoDep = 41, Kecuali pada saat

By David 46
Laboratorium Database Page 47 of 55

pembuatan table dimana untuk column yang mengacu ke table lain menggunakan
perintah ON DELETE CASCADE maka jika data pada base table dihapus, maka
secara otomatis data yang mengacu juga akan dihapus

Contoh

DELETE s_dept
WHERE id = 41;

Penggunaan COMMIT, ROLLBACK dan SAVEPOINT

COMMIT

INSERT
SAVEPOINT
Maker A

UPDATE
SAVEPOINT
Maker B

INSERT

DELETE

ROLLBACK ROLLBACK ROLLBACK to A ROLLBACK to B

By David 47
Laboratorium Database Page 48 of 55

Dalam Oracle 7 Server kita diberikan keleluasaan yang lebih fleksibel dalam hal
melakukan manipulasi terhadap data

• COMMIT
Dalam melakukan query, perubahan data – data yang terjadi akibat dari
operasi query sebenarnya tidak langsung disimpan ke dalam media penyimpanan,
tetapi ditampung di dalam buffer.
Jika diketikkan perintah COMMIT, maka semua hasil dari perubahan yang terjadi
dalam operasi query yang pernah dilakukan akan disimpan kedalam media
penyimpanan.
Khusus untuk perintah – perintah DDL seperti CREATE TABLE, DROP
TABLE, ALTER TABLE dimana hasil dari operasi tersebut akan langsung disimpan
kedalam media penyimpanan ( otomatis commit dijalankan )

• SAVEPOINT
Digunakan untuk memberikan suatu batasan ( tanda ) terhadap query – query
yang kita lakukan ( untuk lebih jelasnya perhatikan gambar di atas ) jika kita telah
menandai sebuah area, dan setelah itu kita melanjutkan melakukan query, dan setelah
itu kita tidak menginginkan perubahan yang telah kita pada query yang letaknya di
bawah query yang kita lakukan di simpan kedalam media penyimpanan maka kita
dapat kembali kepada area ( titik ) yang telah ditandai sebelumnya dan melakukan
commit sehingga perubahan perubahan yang tidak kita ingini dapat dibatalkan

• ROLLBACK TO …
Sudah dijelaskan di atas bahwa kita dapat kembali pada area yang kita tandai,
maka untuk kembali ke area tersebut digunakan ROLLBACK TO area_name, jika
hanya dituliskan ROLLBACK saja, secara default akan kembali ke awal ( pada saat
login ) atau pada COMMIT terakhir yang pernah dilakukan.

Merubah Struktur Tabel dan Constraint (Altering Table And Constraints)

Setelah membuat tabel – tabel, mungkin Anda perlu mengubah struktur dari tabel,
yang mungkin diakibatkan karena kebutuhan user yang berubahsehingga diperlukan
penambahan sebuah kolom atau lebih, definisi kolom perlu diubah atau Anda ingin
mengaktifkan / menon-aktifkan Constraint. Pada bab ini akan menjelaskan bagaimana
Anda dapat merubah struktur tabel, juga menambah dan menghapus Constraint dengan
perintah ALTER TABLE.

Di akhir bab ini Anda akan mampu untuk :

• Menambah dan memodifikasi kolom


• Menambah, mengaktifkan, atau menghapus constraint
• Menghapus Sebuah Tabel
• Menghapus semua baris dari tabel / menghapus semua isi tabel ?
• Mengubah nama dari obyek (tabel,…) ?

By David 48
Laboratorium Database Page 49 of 55

• Menambah komentar ke obyek dan menampilkan komentar dari kamus data

• Perintah ALTER TABEL dapat dipakai untuk :


- Menambah dan memodifikasi kolom
- Menambah dan menghapus Constraint
- Mengaktifkan / menon-aktifkan Constraint
• Perintah DROP TABEL menghapus semua tabel dan struktur tabel
• Perintah lain yang digunakan untuk mengubah sebuah tabel antara lain RENAME,
TRUNCATE, COMMENT
• Sebuah commit otomatis akan terjadi ketika Anda menjalankan perintah DDL.

Jika Anda ingin menghapus sebuah tabel, dalam artian menghapus semua isi tabel
dan strukturnya, dapat digunakan perintah DROP TABEL. Perintah – perintah lain yang
dapat dipakai untuk memanipulasi sebuah tabel yang dibahas dalam bab ini :
• RENAME, perintah untuk mengubah nama tabel
• TRUNCATE, perintah untuk menghapus semua isi dari tabel
• COMMENT, perintah untuk menambah sebuah komentar tentang sebuah tabel pada
kamus data

Semua perintah di atas adalah perintah Data Definition Language (DDL). Ketika
Anda menjalankan salah satu perintah di atas maka sebuah commit otomatis terjadi,
Anda tidak dapat mellakukan ROLL BACK terhadap perintah tersebut. Maka Anda
harus berhati-hati dalam menggunakan perintah – perintah di atas.

Menambah Sebuah Kolom

• Menambah sebuah kolom baru


• Mendefinisikan default value untuk kolom baru tersebut
• Menkondisikan kolom harus berisi sebuah nilai atau tidak boleh kosong
Sintak :
ALTER TABEL tabel_name
ADD ( column type [DEFAULT expr] [NOT NULL]
[ , column type] …);
keterangan :
- Tabel_name adalah nama dari tabel
- column adalah nama dari kolom yang baru
- type adalah tipe data dan panjang dari kolom yang baru
- DEFAULT expr adalah default value yang spesifik untuk kolom baru
- NOT NULL adalah menambah sebuah constraint NOT NULL untuk kolom
baru
• Column tidak dapat dihapus

Contoh :
- Menambah sebuah kolom komentar untuk tabel S_REGION

By David 49
Laboratorium Database Page 50 of 55

SQL> ALTER TABEL s_region


2 ADD comments VARCHAR2 (255)
CONSTRAINT s_region_comments_nn NOT NULL;

Memodifikasi Sebuah Kolom

• Mengubah tipe data, ukuran, default value, dan constraint NOT NULL dari sebuah
kolom

Syntax :

ALTER TABEL tabel_name


MODIFY ( column type[DEFAULT expr] [NOT NULL]
[, column type]…);

keterangan :

- Tabel_name adalah nama dari tabel


- column adalah nama dari kolom yang baru
- type adalah tipe data dan panjang dari kolom yang baru
- DEFAULT expr adalah default value yang spesifik untuk kolom baru
NOT NULL adalah menambah sebuah constraint NOT NULL untuk kolom baru

Kegunaan :
- Menambah lebar atau presisi dari sebuah kolom numerik
- Mengurangi lebar dari sebuah kolom jika kolom kosong atau jika tabelnya kosong
- Mengubah tipe data jika kolom kosong
- Mengkonversi sebuah kolom bertipe CHAR ke tipe VARCHAR2 atau meng-
konversi dari kolom bertipe VARCHAR2 ke tipe data CHAR jika kolom kosong
atau Anda tidak mengubah ukurannya
- Sebuah perubahan pada default value dari sebuah kolom hanya berpengaruh pada
subsequent insertions ke tabel
- Penambahan sebuah constraint NOT NULL hanya dapat dilakukan jika tidak ada
baris dalam kolom tersebut yang kosong

Contoh :
- Menambah panjang maximum dari kolom TITLE dalam tabel S_EMP menjadi 50
karakter

By David 50
Laboratorium Database Page 51 of 55

SQL> ALTER TABEL s_emp


2 MODIFY title VARCHAR2 (50) ;

Anda dapat mengubah definisi dari sebuah kolom dengan menggunakan perintah
ALTER TABEL digabung dengan klausa MODIFY. Modifikasi terhadap kolom dapat
dilakukan meliputi tipe data dari kolom, ukuran, default value, and constraint NOT
NULL dari kolom.

Menambah Constraint

• Menambah atau menghapus, tapi bukan untuk memodifikasi sebuah constraint


• Mengaktifkan atau menon-aktifkan constraint
• Menambah sebuah constraint NOT NULL dengan menggunakan klausa MODIFY

Syntax :

ALTER TABLE tabel_name


ADD [CONSTRAINT constraint_name] type ( column );

keterangan :

- tabel_name adalah nama tabel


- constraint_name adalah nama dari constraint
- type adalah tipe dari constraint
- column adalah adalah nama dari kolom yang akan menggunakan constraint yang dibuat

Menambah sebuah constraint foreign key ke dalam tabel yang mengindikasikan


bahwa seorang manajer harus sudah ada seperti validasi employee dalam tabel S_EMP.

Contoh :

SQL> ALTER TABLE s_emp


2 ADD CONSTRAINT s_emp_manager_id_fk
3 FOREIGN KEY (manager_id)
4 REFERENCES s_emp(id);

Menghapus Constraint

Contoh :
• Menghapus constraint dari manager dari tabel S_EMP

By David 51
Laboratorium Database Page 52 of 55

SQL> ALTER TABLE s_emp


2 DROP CONSTRAINT s_emp_manager_id_fk;

• Menghapus constraint PRIMARY KEY pada tabel S_DEPT dan menghapus


hubungan constraint PRIMARY KEY pada kolom S_EMP>DEPT_ID

SQL> ALTER TABLE s_dept


2 DROP PRIMARY KEY CASCADE;

Untuk menghapus sebuah constraint Anda dapat mengidentifikasi nama constraint


dari USER_CONSTRAINTS data dictionary view dan USER_CONS_COLUMNS.
Kemudian menggunakan perintah ALTER TABEL dengan klausa DROP. Option
CASCADE dari klausa DROP menyebabkan constraint yang berhubungan ( tergantung
pada ) constraint yang dihapus juga ikut dihapus.

SQL> ALTER TABLE tabel_name


2 DROP PRIMARY KEY | UNIQUE (column) |
3 CONSTRAINT constraint [ CASCADE ] ;

keterangan :

- tabel_name adalah nama tabel


- constraint adalah nama dari constraint
- column adalah adalah nama dari kolom yang akan menggunakan constraint yang dibuat

Menon-aktifkan dan Mengaktifkan Constraint

Syntax :

SQL> ALTER TABLE s_emp


2 DISABLE | ENABLE CONSTRAINT constraint_name [CASCADE] ;

Menon-aktifkan Constraint
• Meneksekusi klausa DISABLE dari perintah ALTER TABLE untuk mendeaktifkan
sebuah integrity constraint
• Memakai CASCADE option untuk menon-aktifkan dependent integrity constraints

SQL> ALTER TABLE s_emp


2 DISABLE CONSTRAINT s_emp_id_pk CASCADE ;

By David 52
Laboratorium Database Page 53 of 55

Mengaktifkan Constraint

• Mengaktifkan sebuah constraint yang sedang didisable dalam sebuah definisi tabel
dengan menggunakan klausa ENABLE

SQL> ALTER TABLE s_emp


2 ENABLE CONSTRAINT s_emp_id_pk ;

Menghapus Table

Ketika diinginkan untuk mengapus table yang telah dibuat, maka kita dapat
menggunakan perintah DROP TABLE, syntax-nya adalah

DROP TABLE table_name [CASCADE CONSTRAINT]

Contoh
Menghapus table karyawan

DELETE TABLE karyawan;

Mengganti nama Object ( Table )

Jika diinginkan untuk merubah nama dari table ( object ), digunakan perintah
RENAME, syntaxnyaadalah

RENAME old_name TO new_name;

Contoh
Merubah s_ord menjadi s_order

RENAME s_ord TO s_order;

Perintah TRUNCATE

Perintsh TRUNCATE digunakan untuk menghapus semua data ( baris ) di dalam


sebuah table

By David 53
Laboratorium Database Page 54 of 55

Contoh

TRUNCATE TABLE s_item;

Memberikan Comments pada table dan column

Comment dapat diberikan terhadap sebuah table maupun column. Comment ini
digunakan untuk memberikan keterangan terhadap object tertentu ( table atau column )
Pemberian suatu comment pada sebuah table dapat dilakukan dengan
menggunakan perintah :

COMMENT ON TABLE table_name IS comments_name;

Contoh

COMMENT ON TABLE s_emp


IS ‘Employee Information’;

Pemberian comment pada sebuah column dapat menggunakan perintah :

COMMENT ON COLUMN s_emp.last_name


IS ‘Employee name’;

Menampilkan Comments

Comments yang bisa ditampilkan meliputi


• ALL_COL_COMMENTS
Digunakan untuk menampilkan semua column comments yang ada pada table
tertentu

Contoh

SELECT * FROM ALL_COL_COMMENTS


WHERE table_name = ‘S_EMP’;

• USER_COL_COMMETS
Digunakan untuk menampilkan user column comments yang ada table tertentu

Contoh

By David 54
Laboratorium Database Page 55 of 55

SELECT * FROM USER_COL_COLUMN


WHERE table_name = ‘S_EMP’;

• ALL_TAB_COMMENTS
Digunakan untuk menampilkan semua table comments yang ada

Contoh

SELECT * FROM ALL_TAB_COMMENTS


WHERE table_name = ‘S_EMP’;

• USER_TAB_COMMETS
Digunakan untuk menampilkan user table comments yang ada

Contoh

SELECT * FROM USER_TAB_COMMENTS


WHERE table_name = ‘S_EMP’;

*********** (Aha) ***********

By David 55

You might also like