Professional Documents
Culture Documents
Panduan Praktikum
Basis Data
&
Sistem Basis Data
By David 1
Laboratorium Database Page 2 of 55
Daftar isi……………………………..
By David 2
Laboratorium Database Page 3 of 55
Panduan Praktikum
Basis Data & Sistem Basis Data
Pengertian SQL
Adalah bahasa standar yang digunakan untuk memanipulasi database relational
By David 3
Laboratorium Database Page 4 of 55
• Alter
PERINTAH SELECT
Syntax
Contoh
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
SQL>DESCRIBE Table_name ;
Atau
SQL>DESC Table_name ;
Contoh
SQL>DESCRIBE s_dept;
Atau
SQL>DESC s_dept ;
Hasilnya
Contoh
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
Contoh
Contoh
atau
By David 6
Laboratorium Database Page 7 of 55
Contoh
SQL>SELECT last_name, salary, 12*salary+100 AS “Annual Salary”
2 FROM s_emp ;
5. Operator penggabungan ( | | )
Contoh
PEGAWAI GAJI
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
…
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
…
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’)
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
2 FROM s_emp ;
SALARY
750
795
800
850
…
By David 9
Laboratorium Database Page 10 of 55
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
…
• 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
By David 10
Laboratorium Database Page 11 of 55
Contoh
Syntax
SELECT column_name
FROM table_name
[ORDER BY {column,expr} [ASC|DESC]];
Contoh
Hasilnya
By David 11
Laboratorium Database Page 12 of 55
Hasil
Contoh
Hasil
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
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
Hasil
VP USERID TITLE
• 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’;
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
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;
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
• 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;
• 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’);
Contoh :
SELECT CONCAT( UPPER(last_name) , SUBSTR(title,3) ) “Vice President”
FROM s_emp
WHERE title LIKE ‘VP%’;
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
Contoh
Dapatkan nama employee, kode departemen dan nama departemen dari
employee yang bernama ‘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.
Hasil
By David 20
Laboratorium Database Page 21 of 55
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
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
Contoh
Dapatkan id employee, nama employee, id manager serta nama manager dari
table employee
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
Contoh
Dapatkan rata – rata gaji, gaji terkecil, gaji terbesar dan total gaji dari data gaji
employee
By David 22
Laboratorium Database Page 23 of 55
FROM s_emp
WHERE UPPER(title) LIKE ‘SALES%’;
Hasil
Contoh
Dapatkan nama employee dengan urutan abjad terdepan ( terkecil ) dan nama
employee dengan urutan abjad terbelakang ( terbesar ) dari data employee
Hasil
MIN(LAST_NAME) MAX(LAST_NAME)
Biri Velasquez
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
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
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
Hasil
DEPT_ID AVG(SALARY)
50 2025
1 row selected.
• Subqueries
Contoh
Dapatkan data id, last_name dan title dari employee yang bekerja didalam
departemen dimana employee ‘BIRI’ bekerja
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
Hasil
12 rows selected.
Contoh
Dapatkan data employee yang bekerja pada departemen yang bernama
‘Finance’ atau departemen yang memiliki 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
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.
By David 27
Laboratorium Database Page 28 of 55
GROUP BY tite );
TITLE AVG(SALARY)
Stock Clerk 949
1 row selected.
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
Hasil
ID LAST_NAME SALARY
3 Nagayama 1400
11 Magee 1400
By David 28
Laboratorium Database Page 29 of 55
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
Hasil
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
By David 29
Laboratorium Database Page 30 of 55
Hasil
ID LAST_NAME SALARY
1 Velasquez 2500
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 )
Hasil
ID JUMLAH_BARANG
103 377
110 1539.13
111 2770
98 595
Contoh
By David 30
Laboratorium Database Page 31 of 55
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)
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
SQL>UNDEFINE dname
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
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
Contoh
Simpanlah script ini dengan nama script2
By David 32
Laboratorium Database Page 33 of 55
Hasil
SQL> start script2 President
old 3: WHERE title = '&1'
new 3: WHERE title = 'President'
ID LAST_NAME SALARY
1 Velasquez 2500
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
penjelasan
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
By David 34
Laboratorium Database Page 35 of 55
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
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
Atau
Column_name column_type
[CONSTRAINT constraint_name] constraint_type
(column, …) ,
By David 36
Laboratorium Database Page 37 of 55
Cara pengimplemantasian
By David 37
Laboratorium Database Page 38 of 55
Cara pengimplemantasian
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
By David 38
Laboratorium Database Page 39 of 55
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
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 ,
…
Syntax
By David 40
Laboratorium Database Page 41 of 55
Contoh
Buatlah sebuah table pegawai yang merupakan subquery dari table 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
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 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
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)
Contoh 5
Menampilkan column constraint pada sebuah table
By David 42
Laboratorium Database Page 43 of 55
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
Syantax
Contoh 1
Menyisipkan data dengan semua column - columnnya ( lengkap )
Contoh 2
Menyisipkan baris yang mengandung NULL
By David 43
Laboratorium Database Page 44 of 55
Atau
Contoh 3
Menyisipkan dengan hanya beberapa column saja
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 )
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
Contoh 6
Menyisipkan nilai dengan cara langsung diinputkan oleh user pada saat dieksekusi
( menggunakan variabel )
Contoh 7
Menyisipkan baris dengan menggunakan script
By David 44
Laboratorium Database Page 45 of 55
Contoh 8
Menyisipkan baris dengan cara mengambil nilai dari table lain (dengan menggunakan
subquery)
UPDATE table_name
SET column = value [ , column = value]
[ WHERE condition ];
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
Contoh 3
Mengupdate semua baris pada table
UPDATE s_emp
SET commission_pct = 10;
• Menghapus data
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;
COMMIT
INSERT
SAVEPOINT
Maker A
UPDATE
SAVEPOINT
Maker B
INSERT
DELETE
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.
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.
By David 48
Laboratorium Database Page 49 of 55
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.
Contoh :
- Menambah sebuah kolom komentar untuk tabel S_REGION
By David 49
Laboratorium Database Page 50 of 55
• Mengubah tipe data, ukuran, default value, dan constraint NOT NULL dari sebuah
kolom
Syntax :
keterangan :
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
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
Syntax :
keterangan :
Contoh :
Menghapus Constraint
Contoh :
• Menghapus constraint dari manager dari tabel S_EMP
By David 51
Laboratorium Database Page 52 of 55
keterangan :
Syntax :
Menon-aktifkan Constraint
• Meneksekusi klausa DISABLE dari perintah ALTER TABLE untuk mendeaktifkan
sebuah integrity constraint
• Memakai CASCADE option untuk menon-aktifkan dependent integrity constraints
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
Menghapus Table
Ketika diinginkan untuk mengapus table yang telah dibuat, maka kita dapat
menggunakan perintah DROP TABLE, syntax-nya adalah
Contoh
Menghapus table karyawan
Jika diinginkan untuk merubah nama dari table ( object ), digunakan perintah
RENAME, syntaxnyaadalah
Contoh
Merubah s_ord menjadi s_order
Perintah TRUNCATE
By David 53
Laboratorium Database Page 54 of 55
Contoh
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 :
Contoh
Menampilkan Comments
Contoh
• USER_COL_COMMETS
Digunakan untuk menampilkan user column comments yang ada table tertentu
Contoh
By David 54
Laboratorium Database Page 55 of 55
• ALL_TAB_COMMENTS
Digunakan untuk menampilkan semua table comments yang ada
Contoh
• USER_TAB_COMMETS
Digunakan untuk menampilkan user table comments yang ada
Contoh
By David 55