Lapres BDL Diah 055
Transcript of Lapres BDL Diah 055
BAB I
PENDAHULUAN
1.1 Latar Belakang
Dahulu sebelum ada database, ketika manusia belum
tahu sama sekali tentang database, manusia melakukan
penyimpanan data masih dalam bentuk manual yakni
data-data dimasukkan dalam buku besar, dan cara ini
sangat kurang efektif dan efisien . Oleh karena itu
untuk saat ini database mempermudah manusia dalam
mengelola data baik dibidang pendidikan,
pemerintahan, bisnis dan hal-hal lain yang
membutuhkan wadah untuk mengelola suatu data . Dari
situlah kita mengambil pembahasan tentang database
dengan spesifikasi pembahasan tentang oracle dalam
mata kuliah “Basis data lanjut” selama 8 kali
pertemuan.
Dari praktikum ini dijelaskan tentang spesifikasi
oracle beserta dengan bagian dan fungsinya . Oleh
karena itu, kita menyusun “laporan resmi” sebagai
bahan untuk memperoleh sumber-sumber yang lebih
banyak lagi guna memberikan sedikit tambahan
informasi mengenai oracle.
1.2 Tujuan Praktikum
1
Tujuan dari praktikum mata kuliah "Basis Data
Lanjut" dengan spesifikasi pembahasan pada oracle
ini adalah sebagai berikut :
1. Memahami pengertian, kegunaan dari oracle.
2. Memberikan Penjabaran tentang oracle.
3. Memahami tentang kegunaan oracle.
4. Memahami Penjabaran tentang fungsi-fungsi oracle.
5. Memberikan Penjabaran tentang bagian-bagian
oracle.
1.3 Manfaat Praktikum
Manfaat yang dapat diperoleh dari praktikum
tersebut adalah dapat bertambahnya pengetahuan
tentang oracle, serta mampu mengembangkan sendiri
dengan bekal yang telah diberikan dan juga dapat
memberikan wawasan yang lebih luas dari praktikum
tersebut.
2
BAB II
TINJAUAN PUSTAKA
2.1 Pembuatan Tabel, Pendefinisian Constraint,
Export Dan Import.
2.1.1 Definisi oracle
3
Database Oracle adalah Database relasional yang
terdiri dari kumpulan data dalam suatu sistem
manajemen Database RDBMS. Perusahaan Software Oracle
memasarkan jenis Database ini untuk bermacam-macam
aplikasi yang bisa berjalan pada banyak jenis dan
merk perangkat keras komputer (platform).
Database Oracle ini pertama kali dikembangkan
oleh Larry Ellison, Bob Miner dan Ed Oates lewat
perusahaan konsultasinya bernama Software
Development Laboratories (SDL) pada tahun 1977. Pada
tahun 1983, perusahaan ini berubah nama menjadi
Oracle Corporation sampai sekarang. (wikipedia
indonesia)
Database Oracle terdiri dari beberapa komponen
berikut ini :
1. Software Oracle
2. Database, yang tersimpan dalam bentuk file pada
satu disk atau lebih.
Instance Oracle, terdiri dari background process
dan shared memory area Server process, yang meng-
handle user dan aplikasi yang telah terhubung
dengan Database, dan juga mengatur memori dan
temporary storage yang digunakan process
tersebut.
3. Oracle Net, yang memungkinkan komunikasi antara
client application dengan Database oracle pada
sebuah jaringan.
4
2.1.2 Objek-objek database
Jenis-jenis objek dalam database ORACLE yang biasa
dipakai dalam pembangunan aplikasi adalah :
1. Tabel
2. Index
3. View
4. Snapshot
5. Sequence
6. Package
7. Stored Procedure
8. Trigger
9. Database links
5
Sedangkan objek-objek yang berhubungan dengan fisik
database antara lain:
1. Instance
2. Database
3. Tablespace
4. Segment
5. Data file
2.1.3 Definisi constraint
Constraint merupakan suatu aturan atau bahasan
yang mendefinisikan nilai atau data yang dapat disimpan
di dalam database, baik melalui operasi INSERT, UPDATE,
maupun DELETE. Dalam SQL standar ANSI, constraint
dibedakan menjadi empat, yaitu:
1. Primary Key
Primary Key merupakan suatu aturan yang berguna
untuk memastikan bahwa setiap baris data di dalam suatu
tabel bersifat unik (berbeda antara baris yang satu
dengan yang lainnya. Aturan dalam pendefinisian primary
key:
a. Suatu tabel tidak dapat memiliki lebih dari satu
primary key
b. Kolom yang dijadikan primary key tidak boleh bertipe
BLOB
c. Nilai pada kolom yang didefinisikan sebagai primary
key harus bersifat unik dan tidak boleh NULL
4
2. Foreign Key
Foreign Key berguna untuk mendefinisikan kolom-kolom
pada suatu tabel yang nilainya mengacu ke tabel lain.
Aturan dalam pendefinisian foreign key:
a. Satu tabel dapat memiliki lebih dari satu foreign
key
b. Kolom yang diacu harus didefinisikan sebagai primary
key atau unik
c. Foreign tidak bersifat unik
3. Unique
Fungsi unik pada dasarnya sama seperti primary key,
yaitu untuk memastikan bahwa setiap baris data yang
terdapat dalam suatu tabel bersifat unik (tidak sama).
Perbedaanya, pada unique key diizinkan untuk memasukkan
nilai NULL.
4. Check
Berfungsi untuk membatasi nilai-nilai yang dapat
dimasukkan ke dalam suatu kolom di dalam tabel. Sebagai
contoh, kolom jenis_kelamin. MySQL tidak mendukung tipe
constraint check, sebagai gantinya dapat menggunakan
kolom yang bertipe enumerasi.
2.2 Sequence, Index Dan Synonim
2.2.1 Definisi sequence
Sequence adalah sebuah object dalam database yang
digunakan untuk mengenerate bilangan .
5
Fungsi Sequence :
1. Dapat secara otomatis mengenerate bilangan yang unik
2. Sharable object
3. Dapat digunakan untuk menentukan value atau nilai
dari primary key
4. Replace application code
5. Dapat meningkatkan kecepatan dalam mengkakses nilai
sequence secara signifikan ketika sequence tersebut
telah ada di memory (cached in memory)
SQL : CREATE SEQUENCE sequence [INCREMENT BY n] [START WITHn] [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n |
NOMINVALUE}] [{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}];
CYCLE atau NOCYCLE : digunakan untuk menentukan
apakah SEQUENCE akan tetap dilanjutkan ketika sequence
tersebut telah mencapai nilai maksimum atau minimum.
CACHE atau NOCACHE : digunakan untuk menentukan
seberapa banyak nilai yang akan dletakkan dan disimpan
oleh ORACLE SERVER di memory
2.2.2 Definisi index
Indeks di sql dibuat pada tabel yang ada untuk
mengambil baris cepat. Ketika ada ribuan catatan dalam
sebuah tabel, mengambil informasi akan memakan waktu
yang lama. Oleh karena itu indeks dibuat pada kolom
yang sering diakses, sehingga informasi dapat diambil
dengan cepat. Indeks dapat dibuat pada satu kolom atau
6
sekelompok kolom. Ketika indeks dibuat, terlebih dahulu
jenis data dan kemudian memberikan sebuah ROWID untuk
setiap baris.
Sintaks untuk membuat Indeks:
SQL : CREATE INDEX index_name ON table_name(column_name1, column_name2...);
Sintaks untuk membuat Indeks SQL yang unik:
SQL : CREATE UNIQUE INDEX index_name ON table_name
(column_name1,column_name2...);
INDEX_NAME adalah nama INDEX.
Table_name adalah nama dari tabel yang kolom diindeks
milik. column_name1, column_name2 .. adalah daftar kolom
yang membentuk INDEX.
Di Oracle ada dua jenis indeks SQL yaitu, implisit dan
eksplisit.
1. Implisit Indeks
Mereka tercipta ketika kolom adalah explicity
didefinisikan dengan PRIMARY KEY, UNIQUE Kendala
KUNCI.
2. Eksplisit Indeks:
Mereka dibuat dengan menggunakan "membuat indeks .."
sintaks.
CATATAN:
a. Meskipun indeks sql diciptakan untuk mengakses baris
dalam tabel dengan cepat, mereka memperlambat
7
operasi DML seperti INSERT, UPDATE, DELETE di atas
meja, karena indeks dan tabel keduanya diperbarui
bersama ketika operasi DML dilakukan. Jadi
menggunakan indeks hanya pada kolom yang digunakan
untuk mencari meja sering.
b. Yang tidak diperlukan untuk membuat indeks di atas
meja yang memiliki sedikit data.
c. Dalam database oracle Anda dapat membuat hingga enam
belas (16) kolom dalam sebuah INDEKS.
2.2.3 Definisi synonym
Synonym digunakan untuk mempermudah kita dalam
mengakses sebuah object dengan cara memanggil sebuah
tabel dengan nama yang berbeda. dan dengan Synonim kita
dapat :
1. Membuat referensi tabel dengan mudah yang dimana
referensi tersebut dimiliki oleh user lain
2. Memperpendek nama dari sebuah Object
2.2.3.1 Membuat synonym
Syntak : CREATE [PUBLIC] SYNONYM synonym FOR object;
contoh :
SQL : CREATE SYNONYM F_dept FOR FERN.DEPARTMENTS;
Query diatas digunakan untuk membuat sebuah synonym
dengan nama F_Dept yang merupakan alias atau kependekan
8
nama dari tabel DEPARTMENTS yang dimiliki oleh
FERN(user). Sehingga jika kita ingin mengakses tabel
departments kepemilikan FERN, kita hanya tinggal
memanggil sinonimnya saja
contoh :
SQL : SELECT * FROM F_dept
selain itu kita juga dapat membuat sinonim yang
dapat diakses oleh semua user dengan menambahkan PUBLIC
contoh:
SQL : CREATE PUBLIC SYNONYM F_dept FOR FERN.DEPARTMENTS;
2.2.3.2 Menghapus synonym
Syntak : DROP SYNONYM nama_synonym
2.3 View
View merupakan hasil perintah SELECT yang berupa
tabel virtual yang dapat membungkus query tertentu.
View berfungsi untuk mempermudah dalam pengambilan
query tertentu. Dengan view kita dapat menerapkan
pembatasan pada pengaksesan guna pengamanan keamanan
data seperti di bawah ini:
9
1. Kolom/Field pada tabel tertentu.
2. Baris/Record pada tabel tertentu.
3. Field dan Record pada tabel tertentu.
4. Turunan dari view lain.
5. Record menggunakan operasi join.
6. Data statistik dari tabel.
2.3.1 Cara membuat view
Untuk membuat view kita dapat menggunakan perintah
view dengan format seperti dibawah ini :Syntak : CREATE VIEW view_name[(column_list)] [WITH
ENCRYPTION] AS select_statement [WITH CHECK
OPTION]
Keterangan :
View_name adalah nama view yang akan dibuat.
Column_list mendefinisikan field yang akan digunakan
dalam view. Column_list harus memiliki jumlah field yang
sama dengan yang didefinisikan pada select_statement.
Jika column_list tidak ada maka view dibuat berdasarkan
field yang didefinisikan pada select_statement. With
Encryption adalah opsi untuk menambahkan enkripsi pada
view. AS berisi perintah yang digunakan untuk membuat
view.
Contoh : CREATE VIEW V_ SISWA AS SELECT * FROM SISWA
2.3.2 Cara menampikan view
Untuk menampilkan atau memanggil view yang sudah
kita buat sebelumnya, kita dapat menggunakan perintah
10
select dengan format seperti ini : SELECT * FROM
V_PELANGGAN
2.3.3 Cara memrubah view
Untuk merubah view kita dapat menggunakan perintah
alter view dengan format seperti dibawah ini :ALTER VIEW view_name[(column_list)] [WITH ENCRYPTION] AS
select_statement [WITH CHECK OPTION]
Contoh :
SQL : ALTER VIEW V_SISWA AS SELECT * FROM SISWA WHERE ALAMAT ='JAKARTA'
2.3.4 Cara mengahapus view
Untuk menghapus view kita dapat menggunakan
perintah drop view dengan format seperti dibawah ini :
Syntak : DROP VIEW view_name
Contoh :
SQL : DROP VIEW V_PELANGGAN
2.4 Query Select Dan Dml (Insert, Update, Delete)
2.4.1 Pengenalan isql*plus
iSQL*PLUS adalah SQL*PLUS berbasis web yang
disediakan oleh Oracle, didalamnya kita bisa menampilkan
struktur tabel, mengedit SQL Statement, menjalankan
perintah SQL, menyimpan SQL Statement ke dalam file
script, dan memanggil file script yang sudah disimpan.
11
2.4.2 Logging in isql*plus
Memanggil iSQL*PLUS pada ORACLE 10g, ketahui alamat
pemanggilan ISQL*PLUS dengan cara membuka file : “ C:\oracle\product\10.2.0\db_1\install\readme.txt
Kemudian perhatikan alamat yang berada di bawah : “
The iSQL*Plus URL is : “. Ketik ulang alamat tersebut pada
WEB BROWSER sehingga muncul halama awal iSQL*Plus.
Apabila ORACLE 10g diinstall lengkap dengan SAMPLE
SCHEMA, isikan dengan . Username : scott, Password :
password_yang_ditentukan_ oleh_praktikum, Connect
Identifier : orcl
2.4.3 Menampilkan struktur tabel
Untuk menampilkan struktur table digunakan perintah
DESCRIBE.
Syntaknya : DESC namatabel atau DESCRIBE namatabel
2.4.4 Berinteraksi dengan file script
Apa yang ditulis dalam editing window pada iSQL*PLUS
dapat disimpan sebagai file script. Tombol untuk
melakukan penyimpanan suatu query kedalam file .sql
pada iSQL*PLUS adalah Tombol “Save Script” – Ditunjukkan
dengan angka 1 pada gambar halaman Workspace iSQL*PLUS.
Sedangkan tombol untuk melakukan pemanggilan isi
file .sql adalah tombol “Load Script” – Ditunjukkan dengan
angka 2 pada gambar halaman workspace iSQL*PLUS.
2.4.5 Dasar statement select
12
Syntak (cara penulisan) dari statement SELECT : SELECT [DISTINCT]{*, column [alias], … } FROM table;
SELECT digunakan untuk memilih kolom yang ingin
ditampilkan.
FROM digunakan untuk memilih table asal.
Aturan Penulisan Statement SQL
1. SQL Statement tidak case sensitive artinya tidak
dibedakan antara penulisan huruf kecil dan huruf
besar.
2. SQL Statement dapat terdiri dari lebih dari satu
baris.
3. Keyword tidak bisa disingkat atau dipisah di baris
yang berbeda.
4. Klausa biasanya ditempatkan pada baris yang berbeda.
5. Inden digunakan untuk memudahkan pembacaan
2.4.6 Memilih semua kolom
Akan terdapat beberapa baris data yang kolom
“COMM” tidak berisi data apapun. Hal tersebut
dikatakan NULL. Nilai NULL (kosong) pada suatu kolom
bisa berarti ada data yang tidak diisi, atau tidak
diketahui nilainya. Nilai NULL tidak sama dengan NOL
(zero). Nilai NULL juga tidak sama dengan spasi kosong.
2.4.7 Ekspresi aritmatik
Suatu ekspresi yang melibatkan tipe data bilangan
(NUMBER) dan tanggal (DATE) menggunakan ekspresi
13
artimatika.
Contoh :
SQL : SELECT last_name, salary, salary+300 FROM employee
2.4.8 Operator presedence
Perkalian dan pembagian memiliki prioritas
(precedence) lebih tinggi dari pada penambahan dan
pengurangan.
Contoh :
SQL : SELECT last_name, salary, 12*salary+300 FROM employee
2.4.9 Penggunaan tanda kurung
Penggunaan tanda kurung memiliki prioritas paling
tinggi dibanding presedensi operator yang lain.
Contoh :
SQL : SELECT last_name, salary, 12*(salary+300) FROMemployee
2.4.10 Menggunakan kolom alias
Judul (secara default) pada tiap kolom yang
ditampilkan (heading) selalu sama dengan nama kolomnya
dan ditulis dengan hutuf besar. Penggantian judul
kolom, sehingga tidak sama dengan judul default disebut
kolom alias.
Contoh :
SQL : SELECT last_name AS “Name” FROM employee; Atau
SQL : SELECT last name “Name” FROM employee;
14
2.4.11 Operator penyambungan
Nilai dari dua kolom atau lebih dapat digabungkan
dengan menggunakan operator penyambungan ( || ).
Contoh :
SQL : SELECT last_name || job_id AS “Employees” FROMemploye
2.4.12 Literal character strings
Literal dapat berupa karakter, ekspresi atau
bilangan yang terdapat pada klausa SELECT. Literal berupa
tanggal (DATE) dan karakter harus diapit dengan tanda
petik tunggal.
Contoh :
SQL : SELECT last_name || ‘working as’ || job_id AS“Employee Details” FROM employee;
2.4.13 Baris yang Duplikat dan cara menghindari
munculnya baris duplikat
Perintah query akan memberikan hasil termasuk
suatu nilai yang bisa muncul lebih dari satu kali.
Untuk menghindari hal tersebut maka gunakan DISTINC
setelah kata SELECT.
Contoh :
SQL : SELECT DISTINCT department_id FROM employee;
2.5 Advanced Query Pemilihan Dan Pengurutan Data
Fungsi pemilihan dan pengurutan data digunakan
untuk menampilkan data dengan perintah select dan
15
pengurutan data yang digunakan dengan perintah sort.
2.5.1 Sintaks dasar
Perintah SELECT pada Oracle SQL minimal harus
terdiri dari SELECT dan FROM.
Syntak : SELECT [DISTINCT] {*, column [alias], …} FROM table;
Keterangan
SELECT : Menampilkan paling tidak satu kolom,
DISTINCT : Menghilangkan nilai duplikat, * :
Menampilkan semua kolom, column: Menampilkan kolom
tertentu, alias: Memberikan judul lain kolom
FROM table: Menunjukkan nama tabel asal
Penulisan Perintah SQL
1. Perintah-perintah SQL dapat ditulis dalam satu baris
atau lebih, namun untuk kemudahan sebaiknya setiap
klausa ditulis dalam baris yang berbeda
2. Perintah-perintah SQL tidak case-sensitive
3. Gunakan perintah ED untuk mengedit perintah-perintah
SQL (SQL> ED;)
2.5.2 Menampilkan seluruh kolom dan baris
Menampilkan seluruh kolom dari suatu tabel dapat
dilakukan dengan dua cara, yaitu:
1. Menyebutkan seluruh nama kolom
SQL : SELECT id, name, region_id FROM department;
16
2. Menggunakan tanda bintang (*)
SQL : SELECT * FROM department;
2.5.3 Menampilkan kolom tertentu
Menampilkan kolom tertentu dapat dilakukan dengan
cara menyebutkan nama kolom yang ingin ditampilkan
datanya. Contoh berikut ini menunjukkan bagaimana cara
menampilkan kolom tertentu dari tabel Department.
SQL : SELECT name FROM department;
2.5.4 Operasi aritmatika
Perhitungan dapat dilakukan pada perintah SQL
dengan menggunakan ekspresi aritmatika, yang dapat
mengandung nama-nama kolom, nilai-nilai numerik yang
teta, dan operator-operator aritmatika.
Tabel 2.1 Arti tanda aritmatika
Tanda Aritmatika Arti Tanda Aritmatika
+ Penjumlahan
- Pengurangan
* Perkalian
/ Pembagian
1. Operator perkalian dan pembagian memiliki prioritas
di atas penjumlahan dan pengurangan
2. Operator dengan prioritas yang sama di evaluasi dari
kiri ke kanan
17
3. Tanda kurung dapat digunakan untuk memaksa prioritas
evaluasi dan memperjelas perintah
Contoh:
a. Menampilkan nama belakang dan menghitung gaji
tahunan karyawan
SQL : SELECT last_name, salary*12 FROM employee;
b. Menampilkan nama belakang, gaji bulanan, dan gaji
tahunan karyawan. Gaji tahunan merupakan gaji
bulanan di kali dengan 12, ditambah dengan bonus
1.000.000
SQL : SELECT last_name, salary, salary*12+1000000 FROM salary;
c. Menampilkan nama belakang, gaji bulanan, dan gaji
tahunan karyawan. Gaji tahunan merupakan gaji
bulanan ditambah dengan bonus 1.000.000, di kali
dengan 12
SQL : SELECT last_name, salary, 12*(salary+1000000)FROM employee;
2.5.5 Alias kolom
SQL*Plus menggunakan nama kolom sebagai judul
dalam menampilkan hasil query. Padahal terkadang nama
kolom sulit di mengerti atau bahkan tidak memiliki
arti. Kita dapat mengubah tampilan judul kolom
menggunakan alias (nama lain).
Contoh
18
Menampilkan nama belakang, gaji bulanan, dan gaji
tahunan karyawan. Gaji tahunan merupakan gaji bulanan
di tambah dengan bonus 1.000.000, di kali dengan 12 dan
di tampilkan dengan judul GAJI_TAHUNAN.
SQL : SELECT last_name, salary, 12*(salary+1000000) AS GAJI_TAHUNAN FROM employee;
Kita boleh menggunakan AS sebelum alias kolom
untuk memenuhi standar ANSI SQL 92.
2.5.5.1 Alias kolom dengan tanda petik dua
Jika alias kolom mengandung spasi, karakter khusus
seperti # atau $, atau case-sensitive (membedakan huruf
besar dan kecil), gunakan tanda petik dua pada alias
kolom tersebut.
Contoh : Memodifikasi query sebelumnya, gaji tahunan
ditampilkan dengan judul Gaji Tahunan.
SQL : SELECT last_name, salary, 12*(salary+1000000) AS“Gaji Tahunan” FROM employee;
2.5.6 Operator penggabungan
Kita dapat menggabungkan satu kolom dengan
lainnya, ekspresi aritmatika, atau nilai tetap untuk
menciptakan ekspresi karakter menggunakan operator
penggabungan (||). Kolom-kolom pada setiap sisi dari
operator di kombinasikan untuk menghasilkan satu output
kolom tunggal.
19
Contoh: Menampilkan nama lengkap karyawan dengan judul
Karyawan.
SQL : SELECT first_name||last_name AS “Karyawan” FROMemployee;
Menampilkan nama lengkap dan jabatan karyawan dengan
judul Karyawan. Dalam contoh ini antara nama depan dan
nama belakang di pisahkan spasi, dan antara nama
lengkap dan jabatan di pisahkan koma.
SQL : SELECT first_name||’ ‘||last_name||’, ‘||title AS“Karyawan” FROM employee;
2.5.7 Manajemen nilai null
Null adalah nilai yang tidak tersedia, tidak
diberikan, tidak diketahui, atau tidak dapat digunakan.
Null tidak sama dengan nol atau spasi. Nol adalah angka,
dan spasi adalah karakter. Kolom dapat mengandung nilai
null, kecuali kolom yang telah didefinisikan sebagai NOT
NULL atau PRIMARY KEY ketika tabel diciptakan.
2.5.7.1 Nilai null dalam ekspresi aritmatika
Jika nilai kolom dalam sebuah ekspresi adalah
null, maka hasilnya juga null. Sebagai contoh, jika kita
berusaha melakukan pembagian terhadap nol, maka akan
terjadi kesalahan. Namun jika kita membagi terhadap
null, maka hasilnya adalah null.
Contoh : Menampilkan nama belakang, gaji, jabatan, dan
hasil perhitungan komisi.
20
SQL : SELECT last_name, title, salary, salary*commission_ pct/100 KOMISI FROM employee;
2.5.8 Membatasi hasil query
Kita dapat membatasi hasil query dengan
menggunakan klausa WHERE, yang mengandung kondisi yang
kita inginkan, dan secara langsung mengikuti klausa
FROM.
Syntak : SELECT [DISTINCT] {*, column [alias], . . .} FROM
table[WHERE condition(s)];
WHERE: menentukan kondisi yang akan digunakan untuk
membatasi hasil query condition(s): terdiri dari nama-nama
kolom, ekspresi, konstanta, dan operator-operator
pembanding.
2.5.9 Operator-operator pembanding
Operator-operator pembanding terbagi ke dalam dua
kategori: logical dan SQL, dan digunakan dalam klausa
WHERE untuk membandingkan suatu ekspresi dengan
lainnya menggunakan format berikut:. . . WHERE expr operator value
Contoh: Menampilkan data karyawan yang bekerja pada
departemen berkode 42.
SQL : SELECT last_name FROM employee WHERE dept_id = 42;
21
2.5.9.1 Operator-operator pembanding logical
Tabel 2.2 Operator pembanding logical
Operator
PembandingKeterangan
= Sama dengan> Lebih besar dari>= Lebih besar atau sama dengan< Lebih kecil dari<= Lebih kecil atau sama dengan
2.5.9.2 Operator-operator SQL
Tabel 2.3 Operator sql
Operator SQL Keterangan
BETWEEN . . .
AND . . .diantara dua nilai
IN (list)sesuai dengan salah satu dari
kumpulan nilaiLIKE sesuai dengan susunan karakter
IS NULL adalah bernilai null
2.5.9.3 Operator-operator logical
Tabel 2.4 Operator logical
22
Operator
LogicalKeterangan
AND . . .jika kedua komponen bernilai TRUE,
hasilnya TRUE
ORjika salah satu komponen bernilai TRUE,
hasilnya TRUENOT mengembalikan nilai sebaliknya
2.5.9.4 Negasi operator-operator logical
Tabel 2.5 Negasi operator logical
Negasi
Operator
Logical
Keterangan
!= tidak sama dengan (VAX, UNIX, PC)^= tidak sama dengan (IBM)
<>tidak sama dengan (seluruh sistem
operasi)NOT colname = tidak sama denganNOT colname > tidak lebih besar dari
2.5.9.5 Negasi Operator-operator sql
Tabel 2.6 Negasi operator sql
23
Negasi Operator
SQLKeterangan
NOT BETWEEN . .
. AND . . .tidak diantara dua nilai
NOT IN (list)tidak dalam kumpulan nilai yang
ditentukan
NOT LIKEtidak sesuai dengan string
pembandingNOT IS NULL bukan merupakan nilai null
Jika kita ingin membandingkan nilai yang diketahui
dengan nilai null, dapat menggunakan operator
pembanding IS NULL atau IS NOT NULL. Jika kita
membandingkan nilai null menggunakan operator-operator
lain, hasilkan akan selalu FALSE.
Sebagai contoh, kondisi commission_pct <> NULL akan
selalu FALSE karena nilai null tidak boleh sama atau
tidak sama dengan nilai lain, bahkan dengan nilai null
lainnya.
2.5.9.6 Kumpulan karakter dan tanggal
Kumpulan karakter dan tanggal dalam klausa WHERE
harus ditutup dengan tanda petik tunggal (’ ‘).
Contoh : Menampilkan data karyawan yang memiliki nama
belakang “Ngao”.
SQL : SELECT last_name, title FROM employee WHERE last_name = ‘NGAO’;
24
Seluruh kumpulan karakter adalah case sensitive,
sehingga query diatas tidak menemukan hasil. Oleh
karena itu, query diatas harus diubah sedemikian
sehingga sesuai dengan data yang terdapat dalam tabel
Karyawan.
SQL : SELECT last_name, title FROM employee WHERE last_name = ‘Ngao’;
2.5.9.7 Operator between
Kita dapat menampilkan data berdasarkan jangkauan
nilai tertentu menggunakan operator BETWEEN. Jangkauan
yang kita tentukan adalah jangkauan rendah dan tinggi.
Contoh : Menampilkan data karyawan yang mulai bekerja
antara tanggal 9 Mei 1991 dan 17 Juni 1991.
SQL : SELECT last_name, hire_date FROM employee WHERE
hire_date BETWEEN ‘09-MAY-91′ AND ‘17-JUN-91′;
2.5.9.8 Operator in
Operator IN dapat digunakan untuk mengecek suatu
nilai dalam daftar tertentu.
Contoh : Menampilkan data departemen yang memiliki kode
1 dan 3.
SQL : SELECT id, name FROM department WHERE id IN(1,3);
Penggunaan karakter atau tanggal dalam daftar harus
ditutup dengan tanda petik tunggal (’ ‘).
2.5.9.9 Operator like
25
Kita mungkin tidak selalu mengetahui nilai
tertentu secara pasti dalam proses pencarian. Kita
dapat menampilkan baris data yang sesuai dengan susunan
karakter tertentu menggunakan operator LIKE. Dua jenis
simbol dapat digunakan untuk membangun string
pencarian.
Tabel 2.7 Operator logika
Negasi Operator
SQLKeterangan
%Menunjukkan beberapa urutan nilai
karakter 0 atau lebih
-Menunjukkan beberapa karakter
tunggal
Contoh: Menampilkan data karyawan yang memiliki nama
berawalan huruf “M”.
SQL : SELECT last_name FROM employee WHERE last_name LIKE‘M%’;Menampilkan data karyawan yang memiliki nama
tidak mengandung huruf “a”.SELECT last_name FROM
employee WHERE last_name NOT LIKE ‘%a%’;
Operator LIKE dapat digunakan sebagai jalan pintas bagi
beberapa perbandingan menggunakan BETWEEN.
Contoh : Menampilkan data karyawan yang mulai bekerja
pada tahun 1991.
SQL : SELECT last_name, hire_date FROM employee WHERE hire_date LIKE ‘%91′;
26
2.5.10 Menggabungkan karakter wildcard
Simbol % dan _ dapat digunakan dalam beberapa
kombinasi dengan karakter biasa.
Contoh : Menampilkan data karyawan yang memiliki nama
berawalan ‘_a’.
SQL : SELECT last_name FROM employee WHERE last_name LIKE ‘_a%’;
2.5.11 Opsi escape
Ketika kita memerlukan hasil yang benar-benar
tepat bagi karakter-karakter aktual “%” dan “_” , kita
dapat menggunakan opsi ESCAPE. Opsi ini menentukan apa
karakter ESCAPE-nya.
Contoh: Menampilkan data departemen dengan nama
mengandung ‘X_Y’.
SQL : SELECT name FROM department WHERE name LIKE ‘%X\_Y%’ESCAPE ‘\’;
2.5.12 Operator is null
Operator IS NULL mengetes nilai yang null. Nilai
null berarti nilai tersebut tidak tersedia, tidak
diberikan, tidak diketahui, atau tidak dapat digunakan.
Oleh karena itu, kita tidak dapat menggunakan “=”
karena nilai null tidak dapat sama atau tidak sama
dengan suatu nilai.
Contoh : Menampilkan data karyawan yang tidak memiliki
atasan.
27
SQL : SELECT id, last_name, manager_id FROM employee WHEREmanager_id = NULL;
SQL : SELECT id, last_name, manager_id FROM employee WHEREmanager_id = ‘ ‘;
Menampilkan data karyawan yang memiliki prosentase
komisi.
SQL : SELECT last_name, title, commission_pct FROM employeeWHERE commission_pct IS NOT NULL
2.5.13 Menampilkan data berdasarkan beberapa kondisi
Kita mungkin perlu menentukan kriteria kompleks
dengan mengkombinasikan beberapa kondisi pencarian.
Operator AND dan OR dapat digunakan. Operator AND
menghasilkan nilai TRUE jika kedua kondisi bernilai
TRUE, sedangkan operator OR menghasilkan nilai TRUE
jika salah satu kondisi bernilai TRUE. Dalam dua contoh
berikut , kondisinya sama, namun operator yang
digunakan berbeda. Perhatikan bagaimana hasilnya
berubah.
Contoh: Menampilkan data karyawan yang memiliki jabatan
‘Stock Clerk’ dan bekerja pada departemen 41.
SQL : SELECT last_name, salary, dept_id, title FROM
employee WHERE dept_id = 41 AND title = ‘Stock
Clerk’;
Contoh: Menampilkan data karyawan yang memiliki jabatan
‘Stock Clerk’ atau yang bekerja pada departemen
41.
28
SQL : SELECT last_name, salary, dept_id, title FROM employee WHERE dept_id = 41 OR title = ‘Stock Clerk’;
2.5.14 Aturan evaluasi operator
Kita mungkin mengkombinasikan operator-operator
AND dan OR pada ekspresi logika yang sama. Hasil dari
seluruh kondisi dikombinasikan dalam urutan yang
ditentukan oleh evaluasi dari operator-operator yang
terhubung. Operator yang memiliki urutan evaluasi yang
sama digunakan selanjutnya satu sama lain, dicek dari
kiri ke kanan.
a. Seluruh operator pembanding (=,<>,>,>=,<,<=,IN,
LIKE, IS NULL, BETWEEN)
b. AND
c. OR
Catatan:
Ketika menggunakan ekspresi negasi, operator-
operator pembanding tetap dievaluasi pertama.Anda dapat
mengabaikan evaluasi operator dengan menggunakan tanda
kurung, Oracle akan mengevaluasi terlebih dahulu
ekspresi-ekspresi dalam kurung.
Jika Anda ragu operasi mana diantara dua operasi
yang dicek terlebih dahulu saat ekspresi dievaluasi,
gunakan tanda kurung untuk memperjelas.
2.6 Advanced Query : Fungsi Baris Tunggal dan Fungsi
29
Multi Baris
Secara garis besar Oracle database built-in function
dibagi dalam dua bagian, yaitu: Single-row function dan
Group Function.
2.6.1 Single-row function
Memproses satu baris data pada satu saat dan
memberikan satu output untuk setiap satu baris data
masukan. Contoh: single-row functions adalah UPPER yang
berfungsi mengubah data input menjadi huruf capital
Berdasarkan tipe data yang diproses, single-row
function dibagi menjadi lima jenis, yaitu:
1. Character Function digunakan untuk memproses data
karakter.
Character function menerima input berupa karakter
yang diambil dari kolom pada tabel atau berupa
ekspresi. Berikut ini beberapa contoh character
function:
a. ASCII ( ) dan CHR ( )
Digunakan untuk menampilkan nilai ASCII dari
karakter X dan CHR(x) berfungsi sebaliknya untuk
mengembalikan karakter dari suatu nilai ASCII.
CONTOH :
SQL : select ascii('a'), ascii('A'), ascii ('z'), ascii('t'),ascii('i') from dual;
Hasilnya seperti ini :
30
ASCII('A') ASCII('A') ASCII('Z') ASCII('T')
ASCII('I')
---------- ---------- ---------- ----------
----------
97 65 122 116
105
Dan seperti ini :
SQL : select chr(100), chr(92), chr(97), chr(65),
chr(122) from dual;
Hasilnya adalah :
C C C C C
- - - - -
d \ a A z
b. INITCAP( ), LOWER ( ) dan UPPER( )
Ketiga fungsi ini biasa disebut dengan case-
manipulation. INITCAP(x) untuk mengubah karakter awal
suatu kata dari string x menjadi huruf kapital.
LOWER(x) untuk mengubah string (x) menjadi huruf
kecil sedangkan UPPER(x) digunakan untuk mengubah
string (x) menjadi huruf kapital.
Contoh :
SQL : select 'belajar oracle' as "string", INITCAP
('belajar oracle') as "initcap", LOWER ('belajar
oracle') as "lower", UPPER ('belajar oracle') as
"UPPER" from dual;
31
Lalu hasilnya seperti ini:
string initcap lower UPPER
-------------- -------------- --------------
--------------
belajar oracle Belajar Oracle belajar oracle BELAJAR
ORACLE
c. SUBSTR( )
SUBSTR(x, y [,z] ) digunakan untuk menampilkan
substring mulai dari posisi y sebanyak z karakter
dari string x. Jika nilai z tidak ditentukan maka
akan ditampilkan mulai dari posisi y sampai karakter
terakhir. Jika nilai y negatif (-) maka posisi
karakter diambil dari sisi kanan atau belakang
string.
Contoh :
SQL : select 'ABCDEFGHIJKLMN' string, substr
('ABCDEFGHIJKLMN',3,4), substr ('ABCDEFGHIJK
LMN',-6,3) from dual;
Hasilnya:
STRING SUBS SUB
-------------- ---- ---
ABCDEFGHIJKLMN CDEF IJK
2. Numeric Function digunakan untuk memproses data
numerik.
a. FLOOR ( )
32
Floor (x) digunakan untuk pembulatan ke bawah dari
nilai desimal x
Misal:
SQL: select floor(5.1), floor(5.9), floor(-5.9) from
dual;
Hasilnya:
FLOOR(5.1) FLOOR(5.9) FLOOR(-5.9)
---------- ---------- -----------
5 5 -6
b. MOD ( )
SQL : select mod(7,2) from dual;
Hasilnya:
MOD(7,2)
----------
1
3. Date Function digunakan untuk memproses data
tanggal.
a. ADD_MONTHS
ADD_MONTHS (x,y) mengembalikan hasil penjumlahan
tanggal x dengan y bulan. Jika y bernilai negatif
maka terjadi pengurangan tanggal x dengan y bulan.
Sebagai contoh, tanggal ’02-Nov-09’ ditambah 6 bulan
maka hasilnya adalah tanggal ’02- May-10’. Seperti
di bawah ini:
SQL : select add_months('10-Nov-2012',6) from dual;
33
Hasilnya muncul seperti di bawah ini :
ADD_MONTH
---------
10-MAY-13
4. Convension Function digunakan untuk melakukan
konversi data.
Konversi tipe data bisa dilakukan secara implisit
maupun eksplisit. Konversi implisit dilakukan secara
otomatis oleh Oracle untuk data-data dengan format
default. Sedangkan konveri secara eksplisit dilakukan
menggunakan fungsi konversi yang sudah disediakan oleh
Oracle.
a. Konversi Tanggal ke Karakter dengan TO_CHAR
Contoh:
SQL : select to_char(sysdate,'day DD, month yyyy') from dual;
Hasilnya adalah :
TO_CHAR(SYSDATE,'DAYDD,MONTH
----------------------------
friday 07, december 2012
5. General Function merupakan function yang bisa
digunakan untuk memproses semua tipe data.
General functional merupakan function yang bisa
dioperasikan pada semua tipe data. Ada empat jenis
general function yaitu NVL, NVL2, NULLIF, dan COALESCE.
34
Walaupun bisa dioperasikan pada semua tipe data tetapi
argumen-argumen dalam satu function harus mempunyai
tipe data yang sama.
a. NULLIF
NULLIF(x,y) digunakan untuk membandingkan nilai x
dan y. Jika nilai x sama dengan nilai y maka akan
menghasilkan nilai null, tetapi jika x dan y tidak
sama akan ditampilkan x.
contoh :
SQL : select nullif(7,8), nullif(7,7), nullif('budi','BUDI'), nullif('TATI', 'TATI') from dual;
Dan hasilnya adalah:
NULLIF(7,8) NULLIF(7,7) NULL NULL
----------- ----------- ---- ----
7 budi
2.6.2 Fungsi multi Row SQL ;
Mereka beroperasi pada satu set baris dan
mengembalikan satu hasil atau satu hasil per
kelompok. Kami akan mencakup kelompok dalam Bab 3. Ini
adalah fitur kuat karena memungkinkan Anda untuk
menghasilkan subtotal, jumlah dan rata-rata dalam SQL
yang mengambil data. Untuk saat ini, kita akan
menerapkan fungsi untuk semua baris kita kembali. Dalam
bab berikutnya, kita akan memecah baris kembali kami ke
dalam kelompok dan menerapkan fungsi untuk masing-
masing kelompok secara mandiri.’
35
1. Menghitung
Fungsi count menghitung jumlah baris itu proses dan
kembali nomor itu. Anda dapat menggunakan klausa yang
berbeda untuk menghitung hanya baris yang berbeda.
SQL : SELECT COUNT (*), COUNT (1), COUNT (store_key), COUNT (DISTINCT store_key) DARI Penjualan;
SQL : COUNT (*) COUNT (1) COUNT (STORE_KEY) COUNT
Dan Hasilnya : (DISTINCTSTORE_KEY)
--------------------------------------------
------ ----------
100 100 100 10
Pertama, kita menghitung jumlah baris menggunakan
count (*). Pada contoh kedua, kami melakukan hal yang
sama. Beberapa DBAs percaya bahwa count (1) lebih
efisien daripada count (*), tapi ini adalah sebuah
mitos. Dalam contoh ketiga, kita menghitung jumlah
store_keys. Jika berturut-turut diproses dengan store_key
NULL, maka akan dihitung dalam contoh pertama dan kedua
tapi tidak dalam tiga atau empat. Dalam contoh empat,
kita menghitung store_keys berbeda. Jadi ada 100 baris
dalam tabel penjualan, setiap baris memiliki store_key
(tidak ada store_keys NULL) dan ada sepuluh store_keys
berbeda dalam tabel (tercantum di bawah).
SQL : SELECT DISTINCT store_key FROM penjualan;
Maka hasilnya ;
Store
----
36
S101
S102
S103
S104
S105
S106
S107
S108
S109
S110
sum (c1)
Fungsi sum menambah nilai c1 kolom untuk semua baris
diproses dan mengembalikan total. NULLs dilewati. Sum
juga dapat menggunakan format yang berbeda.
SQL : SELECT SUM (kuantitas) DARI penjualan;
Maka Hasilnya
SUM (JUMLAH)
-------------
110.550
2.6.3 Group Function :
Memproses multi-row data pada saat bersamaan dan
memberikan satu output.
2.7 Advanced Query : Menampilkan Data Dari Banyak
Tabel
Ketika kita memerlukan data dari beberapa tabel
dalam database, dapat menggunakan kondisi join. Data
37
dari satu tabel dapat digabungkan dengan data dari
tabel lain berdasarkan nilai-nilai yang terdapat pada
kolom-kolom yang berhubungan, yang disebut kolom-kolom
primary key dan foreign key.
2.7.1 Pengertian join
Untuk mendapatkan data dari dua atau lebih
table, maka table-tabel tersebut harus dihubungkan
terlebih dahulu, atau dengan kata lain harus dilakukan
JOIN terlebih dahulu. Bentuk umum JOIN ;SELECT table.coulumn, table2.column FROM tabel1, table2
WHERE table1.column = table2.column;
Tipe – tipe Join
1. Equijoin
2. Non-equijoin
3. Outer Join
4. Self Join
2.7.2 Cartesian product
Cartesian Product adalah hasil dari join yang
tidak valid, sehingga menyebabkan ditampilkannya
seluruh kombinasi data dari tabel-tabel yang di-join-
kan. Seluruh baris dari tabel pertama di-join-kan
dengan seluruh baris pada tabel kedua.
Cartesian Product dibentuk pada saat :
1. Kondisi join diabaikan
2. Kondisi join tidak valid
38
3. Semua baris dalam table pertama dijoinkan ke semua
baris dalam table kedua
Contoh :SELECT name, last_name
FROM department, employee;
…
300 rows selected.
2.7.3 Equijoin
Kita dapat menampilkan data-data dari kedua tabel
dengan men-join-kan foreign key dari satu tabel dengan
primary key dari tabel lainnya.SELECT table.column, table.column…
FROM table1, table2
WHERE table1.column1 = table2.column2;
Contoh : Menampilkan data karyawan dan departemen
tempat karyawan tersebut bekerja.
SQL : SELECT employee.last_name, employee_dept_id,
department. Name FROM employee, department WHERE
employee.dept_id = department.id;
Jika terdapat nama kolom yang sama pada tabel-
tabel yang di-join-kan, kita harus menentukan dari
table mana kolom tersebut berasal dengan menyebutkan
nama tabelnya, namun sebaliknya jika tidak terdapat
nama kolom yang sama pada tabel-tabel yang di-join-kan,
kita tidak harus menentukan dari table mana kolom
39
tersebut berasal.
2.7.4 Menambah kondisi pencarian dengan operator
and
Kita dapat menambahkan kondisi pencarian dalam
join dengan menggunakan operator AND atau OR sesuai
kriteria yang diinginkan.
Contoh : Menampilkan data karyawan yang memiliki nama
akhir Velasquez dan departemen tempat karyawan
tersebut bekerja.
SQL : SELECT employee.last_name, employee.dept_id,
department.name
FROM employee, department WHERE employee. dept_id =
department.id AND INITCAP(employee.last_name) =
‘Velasquez’;
2.7.5 Penggunaan tabel alias
Menuliskan kolom dengan nama tabel dapat memakan
waktu, terlebih jika nama tabel cukup panjang. Kita
dapat mengatasi hal ini dengan menggunakan alias tabel
(memberikan nama lain kepada tabel dengan nama yang
lebih pendek). Contoh : Menampilkan data karyawan dan departemen
tempat karyawan tersebut bekerja.
SQL : SELECT e.last_name “Employee Name”, d.id “Dept ID”,d.name “Department Name” FROM employee e, department d
40
WHERE e.dept_id = d.id;
Perhatikan query tersebut diatas, yang dimaksud alias
tabel adalah e dan d yang masing-masing mewakili tabel
karyawan dan departemen.
2.7.6 Non-equijoin
Non-equijoin adalah relasi antara dua atau lebih
tabel dimana nilai dari kolom-kolom yang dihubungkan
tidak saling berhubungan secara langsung (tidak ada
hubungan primary key dan foreign key). Dalam non-
equijoin digunakan operator selain equal (=).
Contoh : Menampilkan data karyawan dan tingkatan
gajinya.
SQL : SELECT e.last_name, e.title, e.salary, s.grade FROMemployee e, salgrade s WHERE e.salary BETWEEN s.losal
AND s.hisal;
2.7.7 Outer join
Sebuah query tidak akan menghasilkan data apapun
apabila kondisi join tidak terpenuhi. Sebagai contoh,
Anda dapat mencoba menampilkan nama-nama pelanggan dan
sales representative dengan cara meng-equijoin-kan
table Karyawan dan Pelanggan. Pelanggan yang tidak
memiliki sales representative tidak akan ditampilkan
karena kondisi join tidak terpenuhi.
Kita dapat menangani data yang hilang tersebut
dengan menggunakan operator outer join (+), yang
diletakkan pada sisi kolom dari tabel yang bertindak
41
sebagai parent (induk).
Operator ini akan menampilkan hasil dari equijoin
ditambah dengan hasil query yang tidak memenuhi kondisi
equijoin tersebut. SQL : SELECT table.column, table.column… FROM table1, table2 WHERE
table1.column = table2.column(+);
Contoh : Menampilkan data pelanggan dan nama sales
representative dari pelanggan tersebut baik yang
memiliki sales representative maupun tidak.
SQL : SELECT e.last_name, e.id, c.name FROM employee e,customer c WHERE c.sales_rep_id = e.id (+) ORDER BY
e.id;
2.7.8 Self join
Self join adalah hubungan antara suatu tabel
dengan tabel itu sendiri. Hal ini dimungkinkan dengan
menggunakan alias tabel sehingga seolah-olah terdapat dua
tabel.
Contoh : Menampilkan data karyawan dan manajer dari
karyawan tersebut.
SQL : SELECT e.last_name|| ‘ works for ‘ || m.last_nameFROM employee e, employee m WHERE e.manager_id = m.id;
Perhatikan kasus diatas, karena manajer juga
merupakan karyawan maka semua data yang diperlukan
berasal dari satu tabel yaitu Employee. Dengan
menggunakan alias tabel kita menciptakan seolah-olah
42
terdapat dua tabel yaitu e (employee) dan m (manager),
yang keduanya berasal dari tabel yang sama yaitu
Employee.
2.8 Sub Query Pada Baris Dan Kolom
2.8.1 Subquery
Perintah SELECT yang berada di dalam perintah SQL
lain. Subquery sangat berguna ketika kita ingin
menampilkan data dengan kondisi yang bergantung pada
data di dalam table itu sendiri.
Subquery digunakan untuk menyelesaikan persoalan
dimana terdapat suatu nilai yang tidak diketahui,
artinya dengan memakai subquery kita dapat
mempersingkat perintah dan menggunakan
fungsi logika yang lebih mudah dipahami
daripada query biasa. Subquery ini dapat diletakkan
pada WHERE klausa, FROM klausa, dan SELECT klausa.
Adapun syntak penulisan subquery yaitu sebagai berikut:SELECT select_list
FROM table
WHERE expr operator
(SELECT select_list FROM table);
Contoh : Misal dalam suatu database terdapat tabel
"mahasiswa", "ambilMK","makul". Perintah untuk
menampilkan nama dan nilai mahasiswa yang
nilainya diatas rata-rata pada salah satu mata
kuliah.
Untuk menyelesaikan persoalan itu kita bisa menggunkan
43
syntak berikut :
SQL : SELECT mahasiswa.nama, ambilMK.nilai FROM mahasiswa,ambilMK WHERE mahasiswa.NIM=ambilMK.NIM AND
ambilMK.nilai > (SELECT avg(nilai) FROM ambilMK where
kodeMK='M01');
Seperti yang sudah di sebutkan tadi, yaitu mengenai
peletakan subquery. subquery bisa diletakan pada WHERE
klausa. WHERE klausa ini paling banyak digunakan,
subquery ini disebut NESTED QUERY. kemudian yang kedua
FROM query, subquery ini dinamakan INLINE VIEWES, dan
yang ketiga SELECT klausa, subquery yang diletakkan
pada SELECT klausa harus yang bersifat singel
value.Oleh karena itu Aggregate function seperti SUM,
COUNT, MIN, MAX biasanya digunakan pada subquery jenis
ini.
2.8.1.1 Single row subquery
Single Row Subquery merupakan satu baris dari
perintah SELECT yang ada pada database. Tipe subquery
ini biasanya menggunakan single row operator.
Contoh : Menampilkan data mahasiswa yang satu kelas
dengan wahyu
SQL : SELECT name, kelasFROM mahasiswa
WHERE kelas = (SELECT kelas FROM mahasiswa WHERE name
= ‘wahyu’)
Comparison yang digunakan oleh Single row subquery :
44
Tabel 2.8 Comparison yang digunakan oleh single row
subquery
OPERATOR KETERANGAN= Sama dengan> Lebih besar dari>= Lebih besar sama dengan< Kurang dari<= Kurang dari sama dengan<> Not Equal
2.8.1.2 Penggunaan fungsi group dalam subquery
Untuk menampilkan data dari query utama dengan
menggunakan fungsi grup (grup function) untuk
menghasilkan satu baris data yang relevan.
Contoh : Menampilkan data mahasiswa yang memiliki IPK
dibawah rata-rata
SQL : SELECT name, kelas, IPKFROM mahasiswa
WHERE IPK < (SELECT AVG (IPK) FROM mahasiswa);
2.8.1.3 Penggunaan klausa having dalam subquery
Klausa HAVING digunakan untuk menentukan kondisi
bagi GROUP BY. Kelompok yang memenuhi HAVING saja yang
akan dihasilkan.
Contoh : Menampilkan data departemen yang memiliki
rata-rata gaji diatas rata-rata gaji departemen
32
45
Syntak : SELECT dept_id, AVG (salary) FROM employee GROUPBY dept_id HAVING AVG(salary) > ( SELECT AVG(salary)
FROM employee WHERE dept_id = 32 );
2.8.2 Multiple row subquery
Multiple Row Subquery adalah subquery yang
menghasilkan lebih dari satu baris. Untuk multiple row
subquery ini yang digunakan adalah operator
pembandingan : IN, ANY atau ALL.
2.8.2.1 Penggunaan operator in dalam multiple row
subquery
IN adalah klausa yang menyatakan bahwa query1
akan menghasilkan nilai yang sama dengan subquery.
Contoh :
SQL : select last_name, salary, department_id from
employees where salary in(select min(salary) from
employees group by department_id);
Query diatas akan menampilkan data
last_name,salary,department_id from employees dengan
salary berada pada gaji terkecil dari employees dengan
pengelompokan data berdasar department_id maka yang
akan ditampilkan adalah data yang memiliki salary
terkecil dengan pengelompokan data berdasar
department_id jika tidak dikelompokan maka hanya 1 data
yang ditampilkan namun query tersebut error.dan
46
permintaannya adalah harus memakai pengelompokan data.
2.8.2.2 Penggunaan operator any dalam multiple row
subquery
Operator Any (some) hampir sama penggunaannya
seperti Exists. Tetapi operator relasi yang digunakan
biasanya selain = (sama dengan). hal tersebut
disebabkan apabila operator relasi = yang digunakan,
maka sebetulnya fungsi operator Any (some) sama seperti
operator IN, sehingga kondisi seperti itu tidak
dianjurkan karena lebih mudah pemahamannya apabila
menggunakan operator IN.
Contoh : Akan menampilkan daftar nama pegawai dan gaji
yang gajinya paling tidak sedikit
SQL : select nama, gaji from pegawai where gaji > any(select gaji from pegawai);
2.8.2.3 Penggunaan operator all dalam multiple row
subquery
Operator all digunakan untuk melakukan
pembandingan dengan sub query. Kondisi dengan all
menghasilkan nilai benar jika pembandingan menghasilkan
benar untuk setiap nilai dalam sub query.
Contoh : Akan menampilkan nama dan gaji pegawai yang
gajinya lebih rendah daripada semua pegawai
yang pekerjaannya 'SALESMAN'
47
SQL : select name where gaji < all (select gaji frompegawai where pekerjaan = ‘SALESMAN’)
2.8.3 Subquery dengan banyak kolom
Pada subquery banyak kolom, tiap baris dari main
query dibandingkan dengan nilai dari subquery multiple-
row dan multiple-column. Pembandingan kolom dalam
subquery banyak kolom dapat berupa, Pembandingan
berpasangan dan pembandingan tidak berpasangan.
2.8.3.1 Nilai null dalam subquery
Pernyataan SQL dalam slide mencoba untuk
menampilkan semua pegawai yang tidak memiliki beberapa
subordinate. Secara logika, pernyataan SQL ini akan
dikembalikan 12 baris. Bagaimanapun, pernyataan SQL
tidak mengembalikan beberapa baris pun. Satu dari
nilainilai dikembalikan oleh inner- query adalah nilai
null, dan dan karenanya keseluruhan query tidak
mengembalikan baris-baris. Jadi kapanpun nilai-nilai
null secara kemungkinan menjadi bagian dari sekelompok
hasil-hasil dari suatu subquery, jangan gunakan operator
NOT IN. Operator NOT IN sama dengan operatorm <>ALL.
Sebagai catatan bahwa nilai null sebagai bagian
dari sekelompok hasil-hasil dari suatu subquery adalah
tidak menjadi masalah jika. Menggunakan operator IN.
Operator IN adalah sama dengan operator =ANY. Sebagai
contoh, untuk menampilkan para pegawai yang memiliki
subordinate, gunakan pernyataan SQL berikut :
48
SQL : SELECT emp.last_name FROM employees emp WHERE emp.
employees_id IN (SELECT mgr.manager_id FROM employees
mgr);
Sebagai alternatif, suatu klausa WHERE dapat disertakan
pada subquery untuk menampilkan seluruh pegawai yang
tidak memiliki beberapa subordinate :
SQL : SELECT last_name FROM employees WHERE employee_id NOT
IN (SELECT manager_i FROM employees WHERE manager_id
IS NOT NULL
2.8.3.2 Penggunaan subquery dalam klausa from
Query ini dikenal juga dengan istilah inline
view, karena tidak membentuk object database.
Contoh penggunaan query pada from :
SQL : (SELECT department_id, REDS(salary) salavg FROM
employees GROUP BY department_id)
49
BAB III
PEMBUATAN TABEL, PENDEFINISIAN CONSTRAINT,
EXPORT DAN IMPORT
Tabel adalah sekumpulan data yang telah dibuat
dengan sedemikian mungkin dan digunakan pada sebuah
database dalam pembuatan sebuah program aplikasi .
Constraint adalah batasan atau aturan yang ada pada
table . Constraint mencegah penghapusan data dari suatu
table yang mempunyai keterkaitan dengan table yang lain
. Misal terdapat keterkaitan antara table department
dengan table pegawai . Dimana pada table pegawai
menyimpan informasi kolom nomer department yang juga
terdapat pada table department . Jika baris dengan
50
nomer department ‘10’ akan dihapus dari table
department, sedangkan terdapat data pegawai yang
bekerja pada department tersebut, maka dengan adanya
constraint antara dua table, penghapusan tersebut tidak
bisa dilakukan .
Export dan import disediakan oleh ORACLE untuk
melakukan transfer data secara logis seperti tabel, isi
data, prosedur dan sebagainya Export membentuk file
yang diperlukan untuk mentransfer data File hasil
export berbentuk file binary yang disebut DUMP FILE
(dmp). File ini hanya dapat dibaca oleh fasilitas
import yang berfungsi mengembalikan informasi dari dump
file ke database.
3.1Menjalankan Oracle
3.1.1 Pemanggilan SQLPlus pada command prompt
Dalam pembuatan database perlu adanya sistem yang
dapat melakukan relasi antar data satu dengan data yang
lain. Maka dalam sistem kali ini akan menggunakan
SQLPlus . Adapun cara pemanggilannya melalui langkah-
langkah sebagai berikut :
1. Pastikan Oracle sudah terinstall dengan baik
kemudian start Oracle, setelah itu ketik windows+R
ketik CMD OK .
51
Gambar 3.1 Tampilan run
2. Setelah muncul gambar 3.2 ketik sqlplus
Enter scott ( nama user )
Enter praktikum ( password )
Gambar 3.2 Tampilan pada “ cmd.exe “
3.2 Percobaan Membuat Tabel dept30_1412110055
SQL : create table dept30_1412110055 (Deptno Number(2),Dname Varchar2(14), Loc Varchar2(13));
describe dept30_1412110055
Penjabaran : Buat table dengan nama
dept30_1412110055 dengan
kolom Deptno dengan tipe data
number(2), Dname dengan
52
tipe data varchar2(14), dan Loc dengan
tipe data
varchar2(13);
Tampil struktur table dept30_1412110055
Hasil Percobaan :
Gambar 3.3 Tampilan membuat table dept30_1412110055 dan
menampilkan struktur tabelnya
3.3 Percobaan Menampilkan Tabel Yang Dimiliki Oleh
User
SQL : select * from dept30_1412110055;
Penjabaran : Tampilkan seluruh data dari table
dept30_1412110055 ;
Hasil Percobaan :
Gambar 3.4 Tampilan data dari table dept30_1412110055
53
3.4Percobaan Menampilkan Tipe Object Secara Distinct
Yang Dimiliki Oleh User
SQL : select distinct object_type from user_objects;
Penjabaran : Tampilkan object_type dari table
user_objects secara
distinct (a-z) ;
Hasil Percobaan :
Gambar 3.5 Tampilan object_type secara distinct (a-z)
3.5 Percobaan Menampilkan Table, View, Synonyms Dan
Sequence Yang Dimiliki Oleh User
SQL : select * from user_catalog;
Penjabaran : Tampilkan semua data dari table
user_catalog ;
Hasil Percobaan :
Gambar 3.6 Tampilan data dari table user_cataloq
54
3.6 Percobaan Menambahkan kolom baru ‘Job’ Ke Dalam
Table dept30_1412110055, Kolom Job Mempunyai Tipe
Data Varchar2(9)
SQL : alter table dept30_1412110055 add (job
varchar2(9));
Penjabaran : Tambahkan kolom job dengan tipe data
varchar2(9)
pada table dept30_1412110055 ;
Hasil Percobaan :
Gambar 3.7 Tampilan menambah kolom job pada table
dept30_1412110055
3.7 Percobaan Memodifikasi Tipe Data Kolom, Dan Ukuran
Dari Kolom Ename Pada Table dept30_1412110055
Menjadi Varchar2(15)
SQL : alter table dept30_1412110055 modify (Dnamevarchar2(15));
Penjabaran : Modifikasi kolom Dname dengan tipe
data menjadi
varchar2(15) pada table
dept30_1412110055 ;
Hasil Percobaan :
55
Gambar 3.8 Tampilan memodifikasi kolom dname pada table
dept30_1412110055
3.8Percobaan Hapus Table dept30_1412110055 Dengan
Perintah Drop
SQL : drop table dept30_1412110055 ;
Penjabaran : Hapus table dept30_1412110055 ;
Hasil Percobaan :
Gambar 3.9 Tampilan mengahapus table dept30_1412110055
3.9 Percobaan Mengubah Nama Table
Dept Menjadi Department
SQL : rename dept to departement ;
Penjabaran : Ubah nama table dept menjadi
departement;
Hasil Percobaan :
Gambar 3.10 Tampilan mengubah nama table dept menjadi departement
56
3.10 Percobaan Menambahkan Komentar Ke
Table emp Dengan Keterangan ‘Informasi Pegawai’
SQL : comment on table emp is ‘Informasi Pegawai’ ;
Penjabaran : Tambahkan komentar informasi pegawai
pada table emp;
Hasil Percobaan :
Gambar 3.11 Tampilan menambah komentar
3.11 Percobaan Pembuatan Table Dengan
Constraint Not Null.
SQL : create table employee (Empno Number(4), EnameVarchar2(10) Not Null, Job Varchar2(9), Deptno
Number(7,2) Not Null );
Penjabaran : Buat table employee dengan kolom
Empno tipe datanya number(4), Ename
tipe datanya varchar2(10) dengan
constraint not null, Job tipe datanya
varchar2(9), Deptno tipe datanya
number(7,2) dengan constraint not
Null;
Hasil Percobaan :
57
Gambar 3.12 Tampilan membuat table dengan constraint not null
3.12 Percobaan Pembuatan Table Dengan
Constraint Unique
SQL : create table department_1412110055 Deptno
Number(2), Dname varchar2(14), Loc varchar2(13),
constraint dept_name_ak unique(Dname));
Penjabaran : Buat table departement_1412110055
dengan kolom Deptno tipe datanya
number(2), Dname tipe datanya
varchar2(14), Loc tipe datanya
varchar2(13), dengan constraint
unique ;
Hasil Percobaan :
Gambar 3.13 Tampilan membuat table departement_1412110055 dengan
constraint unique
58
3.13 Percobaan Pembuatan Table Dengan
Constraint Primary Key
SQL : create table department_1412110055 Deptno
Number(2), Dname varchar2(14), Loc
varchar2(13), constraint dept_name_pk primary
key(Dname));
Penjabaran : Buat table departement_1412110055
dengan kolom Deptno tipe datanya
number(2), Dname tipe datanya
varchar2(14), Loc tipe datanya
varchar2(13), dengan constraint
primary key ;
Hasil Percobaan :
Gambar 3.14 Tampilan membuat table departement_1412110055 dengan
constraint primary key
59
BAB IV
SEQUENCE, INDEX DAN SYNONYM
Sequence adalah sebuah object dalam database yang
digunakan untuk mengenerate bilangan .
Index adalah sebuah schema object digunakan oleh
oracle server untuk meningkatkan kecepatan penerimaan
data dengan menggunakan pointer dapat mengurangi
kebutuhan disk input/output dengan menggunakan sebuah
metode rapid path access untuk mengalokasikan data dengan
cepat tabel yang independen digunakan dan dipelihara
secara otomatis oleh oracle server .
Synonym digunakan untuk mempermudah kita dalam
mengakses sebuah object dengan cara memanggil sebuah
tabel dengan nama yang berbeda.
4.1 Percobaan Membuat Tabel dept30_DishNurAfifah
SQL : create table dept30_DishNurAfifah(Deptno
number(2), Dname varchar2(14), Loc varchar2(13));
Penjabaran : Buat table dept30_DishNurAfifah
dengan kolom
Deptno tipe datanya number(2), Dname
tipe datanya
varchar2(14), Loc varchar2(13);
Hasil Percobaan :
60
Gambar 4.1 Tampilan membuat table dept30_DishNurAfifah
4.2 Percobaan Membuat Sequence Dept_Deptno Yang Akan
Digunakan Sebagai Primary Key Dalam Table Dept.
Jangan Gunakan Pilihan Cycle
SQL : CREATE SEQUENCE dept_deptno INCREMENT BY 1 STARTWITH 91 MAXVALUE 100 NOCACHE NOCYCLE;
Penjabaran : Buat sequence dept_deptno yang akan
digunakan
sebagai primary key dalam table dept
Hasil Percobaan :
Gambar 4.2 Tampilan membuat sequence dept_deptno
4.3 Percobaan Menampilkan Informasi Tentang Keberadaan
Sequence
SQL : SELECT sequence_name, min_value, increment_by,last_number FROM user_sequences;
Penjabaran :Tampilkan informasi sequences_name,
min_value, increment_by, dan
last_number
61
Hasil Percobaan :
Gambar 4.3 Tampilan menampilkan informasi sequence
4.4 Percobaan Mengunakan Sequence Dept_Deptno Untuk
Mengisi Baris Baru Untuk Department ‘Marketing’
Yang Berlokasi Di ‘San Diego’
SQL : INSERT INTO dept (Deptno, Dname, Loc) VALUES(dept_Deptno.NEXTVAL,’MARKETING’,’SAN DIEGO’);
Penjabaran : Mengisi baris baru untuk department
‘marketing’ yang berlokasi di ‘san
diego’ dengan mengunakan sequence
dept_deptno ;
Hasil Percobaan :
Gambar 4.4 Tampilan mengisi baris baru dengan sequence
62
4.4.1 Percobaan melihat nilai dari sequence dept_deptno
saat ini
SQL : SELECT dept_Deptno.CURRVAL FROM DUAL;
Penjabaran : Lihat nilai dari sequence dept_deptno
saat ini
Hasil Percobaan :
Gambar 4.5 Tampilan melihat nilai dari sequence dept_deptno saat
ini
4.5 Percobaan Memodifikasi Sequence Dept_Deptno
SQL : ALTER SEQUENCE dept_Deptno INCREMENT BY 1
MAXVALUE 999999 NOCACHE NOCYCLE;
Penjabaran : Modifikasi sequence dept_deptno
Hasil Percobaan :
Gambar 4.6 Tampilan memodifikasi sequence
4.6 Percobaan Menghapus Sequence Dept_Deptno
SQL : DROP SEQUENCE dept_Deptno ;
Penjabaran : Hapus sequence dept_deptno
63
Hasil Percobaan :
Gambar 4.7 Tampilan menghapus sequence
4.7 Percobaan Membuat Index Pada Kolom Ename Yang Ada
Pada Table Emp
SQL : CREATE INDEX emp_ename_idx ON emp(Ename);
Penjabaran : Buat index pada kolom ename yang ada
pada table emp
Hasil Percobaan :
Gambar 4.8 Tampilan membuat index
4.8 Percobaan Memeriksa Keberadaan Index Dari Data
Dictionary
SQL : colomn colomn_name format a15 ( Enter )SELECT ic.index_name, ic_colomn_name,
ic.colomn_position col_pos, ix.uniqueness FROM
user_indexes ix, user_ind_colomn ic WHERE
ic.index_name=ix.index_name AND
ic.table_name=’EMP’;
Penjabaran : Memeriksa keberadaan index dari data
dictionary;
Hasil Percobaan :
64
Gambar 4.9 Tampilan memeriksa keberadaan index
4.9 Percobaan Menghapus Index Emp_Ename_Idx Pada Table
Emp
SQL : DROP INDEX emp_ename_idx;
Penjabaran : Hapus index emp_ename_idx;
Hasil Percobaan :
Gambar 4.10 Tampilan menghapus index
4.10 Percobaan Masuk Ke System
SQL : conn system;
Penjabaran : Masuk ke conn system;
Hasil Percobaan :
Gambar 4.11 Tampilan masuk ke conn system
4.10.1 Percobaan membuat synonim
65
SQL : create view dept_sum_vu as select *from
Scott.dept30_DiahNurAfifah;
Penjabaran : Buat synonim;
Hasil Percobaan :
Gambar 4.12 Tampilan membuat synonym
4.11 Percobaan Memberi Nama View Dept_Sum_Vu
Dengan Nama D_Sum
SQL : CREATE SYNONIM D_sum FOR dept_sum_vu;
Penjabaran :Beri nama view dept_sum_vu dengan nama
d_sum;
Hasil Percobaan :
Gambar 4.13 Tampilan memberi nama synonym
4.12 Percobaan Menghapus Synonim D_Sum
SQL : DROP SYNONIM D_sum;
Penjabaran :Hapus synonim d_sum;
Hasil Percobaan :
66
Gambar 4.14 Tampilan menghapus synonym d_sum
BAB V
VIEW
View adalah salah satu object database, yang secara
logika merepresentasikan sub himpunan dari data yang
berasal dari satu atau lebih table.
View merupakan hasil perintah SELECT yang berupa
tabel virtual yang dapat membungkus query tertentu.
67
View berfungsi untuk mempermudah dalam pengambilan
query tertentu. Dengan view kita dapat menerapkan
pembatasan pada pengaksesan guna pengamanan keamanan
data seperti di bawah ini:
a. Kolom/Field pada tabel tertentu.
b. Baris/Record pada tabel tertentu.
c. Field dan Record pada tabel tertentu.
d. Turunan dari view lain.
e. Record menggunakan operasi join.
f. Data statistik dari tabel.
Kegunaan dari view adalah :
a. Membatasi akses database
b. Membuat query kompleks secara mudah
c. Mengijinkan independensi data
d. Untuk menampilkan view (pandangan) data yang berbeda
dari data yang sama.
5.1 Percobaan Login Ke Dalam View
Seperti sebelumnya jalankan terlebih dahulu “
cmd.exe “ pada awal praktikum. Akan tetapi ada
perbedaan didalam pengisian “ User-name “. Pada “
User-name “ harus diisi dengan “ conn system “.
Sedangkan dengan “ Password “ sama dengan awal
praktikum.
Enter user-name : conn system
68
Enter password : praktikum
Hasil Percobaan :
Gambar 5.1 Tampilan masuk ke system
5.2Percobaan Membuat View Empvu10 Yang Berisi Detail
Dari Pegawai Yang Bekerja Pada Department 10
SQL : CREATE VIEW EMPVU10 AS SELECT empno,ename,jobFROM scott.emp WHERE deptno10;
Penjabaran : Buat view tabel EMPVU10 yang
dialiaskan dengan menampilkan data
kolom “empno, ename, job” dari tabel
“emp” yang ada di user “scott” dimana
kolom “deptno” mempunyai variabel 10 ;
Hasil Percobaan :
Gambar 5.2 Tampilan membuat view empvu10
5.2.1 Percobaan melihat struktur view empvu10
SQL : DESCRIBE EMPVU10;
Penjabaran : Lihat struktur table empvu10;
69
Hasil Percobaan :
Gambar 5.3 Tampilan struktur table empvu10
5.3Percobaan Membuat View Salvu30 Yang Berisi Nomer,
Nama Dan Gaji Pegawai Yang Bekerja Di Department
30. Beri Nama Kolom Baru Yaitu Employee_Number,
Name Dan Salary
SQL : CREATE VIEW SALVU30 AS SELECT empno
EMPLOYEE_NUMBER, ename NAME, sal SALARY FROM
scott.emp WHERE deptno=30;
Penjabaran :Buat view tabel SALVU30 dialiaskan
dengan menampilkan kolom “empno” yang
diberi nama EMPLOYEE_NUMBER, kolom
“ename” yang diberi nama NAME dan kolom
“sal” yang diberi nama SALARY dari
tabel EMP yang ada di “user scott”,
70
dimana kolom “deptno” mempunyai
variabel 30;
Hasil Percobaan :
Gambar 5.4 Tampilan menambah kolom baru pada table empvu10
5.4Percobaan Menampilkan Semua Data Yang Ada Pada View
Salvu30
SQL : SELECT * FROM SALVU30;
Penjabaran : Tampilkan semua isi table salvu30;
Hasil Percobaan :
Gambar 5.5 Tampilan table salvu30
5.5Percobaan Modifikasi Judul Kolom Dari Empvu10
SQL : CREATE OR REPLACE VIEW empvu10(employee_number,employee_name, job_title)AS SELECT empno, ename,
job FROM scott.emp WHERE deptno=10;
71
Penjabaran : Buat atau Modifikasi data pada “view
empvu10” yang diberi nama kolom
“employee_number, employee_name,
job_title” yang dialiaskan dengan
menampilkan data pada kolom “empno,
ename, job” dari tabel EMP yang ada
diuser “scott” dimana kolom “deptno”
mempunyai variabel 10;
Hasil Percobaan :
Gambar 5.6 Tampilan memodifikasi judul kolom dari table empvu10
5.5.1 Percobaan melihat view dari empvu10
SQL : SELECT * FROM empvu10;
Penjabaran : Melihat view empvu10;
Hasil Percobaan :
Gambar 5.7 Tampilan view empvu10
72
5.6Percobaan Membuat Complex View Dept_Sum_Vu Yang
Berisi Nama Department, Minimum Gaji, Maksimum
Gaji, Rata-Rata Gaji Dari Seluruh Pegawai Pada
Tiap-Tiap Department
SQL :CREATE VIEW dept_sum_vu (name,minsal,maxsal,
avgsal) AS SELECT d.dname,min(e.sal),
max(e.sal),avg(sal)FROM scott.EMP e, scott.DEPT d
WHERE e.deptno=d.deptno GROUP BY d.dname;
Penjabaran : Buat view tabel “dept_sum_vu” dengan
nama kolom “name, minsal, maxsal,
avgsal” yang dialiaskan dengan
menampilkan kolom “dname” tabel “DEPT”,
kolom “sal” tabel “EMP” dari tabel
“EMP” yang dialiaskan dengan “e” dan
tabel “DEPT” yang dialiaskan dengan “d”
dari user “scott”, dimana “e.deptno =
d.deptno” dikelompokkan kolom “dname”
pada tabel “d”;
Hasil Percobaan :
Gambar 5.8 Tampilan membuat view table dept_sum_vu
73
5.6.1 Percobaan melihat view dept_sum_vu
SQL :SELECT * FROM dept_sum_vu;
Penjabaran : Melihat view dept_sum_vu;
Hasil Percobaan :
Gambar 5.9 Tampilan table dept_sum_vu
5.7Percobaan Membuat View Empvu20 Yang Berisi Semua
Data Pegawai Pada Table Emp Yang Bekerja Di
Department 20, Beri Klausa With Check Option
SQL : CREATE OR REPLACE VIEW empvu20 AS SELECT * FROMscott.emp WHERE deptno=20 WITH CHECK OPTION
CONTRAINT empvu20_ck;
Penjabaran : Buat atau modifikasi view tabel
empvu20 yang dialiaskan dengan
menampilkan semua data dari tabel “EMP”
yang ada pada user “scott” dimana kolom
“deptno” mempunyai variable 20 serta
dengan klausa “WITH CHECK OPTION”;
Hasil Percobaan :
74
Gambar 5.10 Tampilan membuat vew table empvu20
5.7.1 Percobaan memperbarui table empvu20
SQL : UPDATE empvu20 SET deptno=20 WHERE empno=7788;
Penjabaran : Memperbarui table empvu20;
Hasil Percobaan :
Gambar 5.11 Tampilan mengubah table empvu20
5.8Percobaan Membuat View Empvu10 Yang Berisi Data
Nomer, Nama, Dan Pekerjaan Pegawai Untuk Pegawai
Yang Bekerja Di Department 10. Gunakan Klausa Read
Only Untuk Mengabaikan Operasi DML Pada View
SQL : CREATE OR REPLACE VIEW empvu10 AS SELECT
empno,ename,job FROM scott.emp WHERE deptno=10
WITH READ ONLY;
Penjabaran : Buat view tabel “empvu10” yang
dialiaskan dengan menampilkan kolom
75
“empno, ename, job” dari tabel “EMP”
yang ada pada user “scott” dimana kolom
“deptno” mempunyai variable 10 serta
diberi klausa “WITH READ ONLY” ;
Hasil Percobaan :
Gambar 5.12 Tampilan membuat view table empvu20
5.8.1 Percobaan menghapus table empvu10 dimana
empno=7782
SQL : DELETE FROM EMPVU10 WHERE empno=7782;
Penjabaran : Menghapus table empvu10;
Hasil Percobaan :
Gambar 5.13 Tampilan menghapus table empvu20
5.9Percobaan Menghapus View Empvu10
SQL : DROP VIEW empvu10;
Penjabaran : Hapus view table empvu20;
Hasil Percobaan :
76
Gambar 5.14 Tampilan menghapus view table empvu20
BAB VI
VIEW QUERY SELECT DAN DML (INSERT, UPDATE,
DELETE)
Query SELECT merupakan perintah dasar untuk
menjalankan sebuah perintah dalam sebuah database,
misal pada database oracle sqlplus. Sedangkan DML
( Data Manipulation Language ) adalah salah satu
komponen bahasa basis data yang berfungsi sebagai
berikut :
77
a. Menyisipkan data baru ke dalam basis data
b. Memodifikasi data dalam basis data
c. Menemukan kembali data dalam basis data
d. Menghapus data dari basis data
Jenis-jenis DML :
1. DML Prosedural : Bahasa yang memungkinkan
pengguna user memerintahkan sistem secara cepat
bagaimana memanipulasi data.
2. DML Non-Prosedural : Bahasa yang memungkinkan
pengguna user menyatakan data apa yang dibutuhkan
dan bukan bagaimana data diperoleh.
INSERT merupakan perintah yang digunakan untuk
mengisi suatu baris pada suatu tabel yang terdiri dari
beberapa kolom yang ada.
DELETE merupakan perintah yang digunakan hanya untuk
menghapus pada record saja, bukan pada data kolom
tertentu.
UPDATE merupakan perintah untuk mengubah data yang
sudah ada di dalam tabel.
6.1Pemanggilan SQLPlus
78
Pada percobaan kali ini kita tidak menggunakan
command prompt tetapi kita menggunakan SQLPlus dengan
ketik windows+R ketik SQLPlus OK.
Gambar 6.1 Tampilan SQLPlus
6.2Percobaan Melakukan Query Untuk Menampilkan Seluruh
Data Pada Tabel “Emp”
SQL : select * from emp;
Penjabaran : Tampilkan seluruh data table emp;
Hasil Percobaan :
Gambar 6.2 Tampilan menampilkan table emp
Akan terdapat beberapa baris data yang kolom “COMM”
tidak berisi data apapun. Hal tersebut dikatakan NULL.
Nilai NULL (kosong) pada suatu kolom bisa berarti ada
data yang tidak diisi, atau tidak diketahui nilainya.
79
Nilai NULL tidak sama dengan NOL (zero). Nilai NULL
juga tidak sama dengan spasi kosong.
6.3Percobaan Menampilkan Struktur Tabel “Emp”
SQL : desc emp;
Penjabaran : Tampil struktur table emp;
Hasil Percobaan :
Gambar 6.3 Tampilan struktur table emp
6.4Percobaan Melakukan Query Untuk Menampilkan Data
Kolom “Ename” Dan “Hiredate” Pada Tabel “Emp”
SQL : select ENAME, HIREDATE from emp;
Penjabaran : Tampilkan data kolom ename, hiredate
dari tabel emp;
Hasil Percobaan :
80
Gambar 6.4 Tampilan ename dan hiredate dari table emp
6.5Percobaan Melakukan Query Untuk Menampilkan Data
Kolom “Ename”, “Hiredate” Dan “Sal” Yang Dikalikan
Dengan 250 Pada Tabel “Emp”
SQL : select ENAME, HIREDATE, SAL*250 from emp;
Penjabaran : Tampilkan data kolom ename, hiredate,
sal yang dikalikan 250 dari tabel emp;
Hasil Percobaan :
81
Gambar 6.5 Tampilan ename, hiredate dan sal*250 dari table emp
6.6Percobaan Melakukan Query Untuk Menampilkan Data
Kolom “Ename”, “Hiredate” Dan “Sal” Yang Dikalikan
50 Dan Ditambahkan Dengan 250 Pada Tabel “Emp”
SQL : select ENAME, HIREDATE, 50*SAL+250 from emp;
Penjabaran : Tampilkan data kolom ename, hiredate,
sal dikalikan 50 dan ditambah
250 dari tabel emp;
Hasil Percobaan :
82
Gambar 6.6 Tampilan ename, hiredate dan 50*sal+250 dari table emp
6.7Percobaan Melakukan Query Untuk Menampilkan Data
Kolom “Ename”, “Hiredate” Dan “Sal” Yang Isinya
Ditambahkan Dengan 250 Kemudian Baru Dikalikan 50
Pada Tabel “Emp”
SQL : select ENAME, HIREDATE, 50*(SAL+250) from emp;
Penjabaran : Tampilkan data kolom ename, hiredate,
50 dikalikan sal dan ditambah 250 dari
tabel emp;
Hasil Percobaan :
83
Gambar 6.7 Tampilan ename, hiredate dan 50*(sal+250) dari table
emp
6.8Percobaan Melakukan Query Untuk Menampilkan Data
Kolom “Ename” Dengan Nama Kolom Aliasnya “Nama
Pegawai” Dan “Hiredate” Dengan Nama Kolom Aliasnya
“Tanggal Diterima” Pada Tabel “Emp”
SQL : select ENAME AS “Nama Pegawai“, HIREDATE AS“Tanggal diterima” FROM emp;
Penjabaran : Tampilkan seluruh data kolom ename
dengan nama kolom aliasnya “Nama
Pegawai” dan hiredate dengan nama kolom
aliasnya “Tanggal Diterima” pada table
emp;
Hasil Percobaan :
Gambar 6.8 Tampilan ename, hiredate dari table emp dengan kolom
alias
84
6.9Percobaan Melakukan Query Untuk Menampilkan
Gabungan Data Kolom “Ename” Dan “Job” Dengan Nama
Kolom Aliasnya “Nama Samaran” Pada Tabel “Emp”
SQL : select ENAME || JOB AS “Nama Samaran“, from emp;
Penjabaran : Tampilkan gabungan data kolom ename
dan hiredate dengan nama kolom aliasnya
“Nama Samaran” pada tabel emp;
Hasil Percobaan :
Gambar 6.9 Tampilan gabungan data pada table emp
6.10 Percobaan Melakukan Query Untuk Menampilkan
Gabungan Data Kolom “Ename” Dan “Job” Dengan
Kalimat Penyambung “Bekerja Sebagai” Nama Kolom
Aliasnya “Nama Dan Posisi” Pada Tabel “Emp”
85
SQL : select ENAME || ‘Bekerja Sebagai’|| JOB AS “NamaDan Posisi” from emp;
Penjabaran : Tampilkan gabungan data kolom ename
dan hiredate dengan kalimat penyambung
Bekerja Sebagai, dan nama kolom
aliasnya adalah Nama dan Posisi, pada
tabel emp;
Hasil Percobaan :
Gambar 6.10 Tampilan gabungan kolom ename dan hiredate
6.11 Percobaan Melakukan Query Untuk Menampilkan Data
Kolom “Job” Tanpa Ada Yang Boleh Berulang Pada
Tabel “Emp”
SQL : SELECT DISTINCT JOB FROM emp;
Penjabaran : Tampilkan data pada kolom job tanpa
ada yang boleh berulang dari tabel
emp ;
Hasil Percobaan :
86
Gambar 6.11 Tampilan kolom job dari table emp
6.12 Percobaan Membuat Table Dept30_1412110055
SQL : CREATE table dept30_1412110055 (deptno
number(2), dname varchar2(14), loc varchar2(13));
Penjabaran : Buat table dept30_1412110055 dengan
kolom deptno tipe datanya number(2),
dname tipe datanya varchar2(14), loc
tipe datanya varchar2(13);
Hasil Percobaan :
Gambar 6.12 Tampilan membuat table dept3_1412110055
6.13 Percobaan Menyisipkan Baris Ke Dalam Table Dept30
SQL : INSERT INTO dept (deptno,dname,loc) VALUES
(50,’DEVELOPMENT’,’DETROIT’);
Penjabaran : Sisipkan baris kedalam tabel dept
pada kolom deptno, dname dan loc dengan
nilai 50, DEVELOPMENT, DETROIT;
Hasil Percobaan :
87
Gambar 6.13 Tampilan menyisipkan baris pada table dept
6.14 Percobaan Melakukan Proses Insert Seperti Pada
Contoh Berikut, Sehingga Kolom Loc Akan Berisi
Nilai Null
SQL : INSERT INTO dept (deptno,dname) VALUES
(60,’MIS’);
Penjabaran : Sisipkan baris kedalam tabel dept
pada kolom deptno dan dname dengan
nilai 60, MIS dan pada kolom loc akan
diisi dengan nilai NULL;
Hasil Percobaan :
Gambar 6.14 Tampilan menyisipkan baris baru dengan nilai loc= NULL
6.15 Percobaan Melakukan Proses Insert Insert, Bila
Tidak Disebutkan Kolom Apa Saja Yang Harus Diisi,
Maka Nilai Pada Values Harus Mencantumkan Semua
Kolom Yang Ada Pada Table Sesuai Dengan Urutannya
SQL : INSERT INTO emp (empno, ename, job, mgr,hiredate, sal, comn, deptno) VALUES
88
(7196,’DIAH’,’SALESMAN’ ,7782,sysdate,2000,NULL,10
);
Penjabaran : Sisipkan data pada tabel emp yang isi
kolom empno 7196,ename : green, job :
salesman, mgr : 7782, hiredate :
sysdate/tanggal hari ini, sal : 2000,
comm. : null, deptno : 10;
Hasil Percobaan :
Gambar 6.15 Tampilan menyertakan fungsi sysdate ke dalam tabel emp
6.16 Percobaan Melakukan Proses Insert Dengan
Menggunakan Nilai Data Tanggal Yang Diformat
SQL :INSERT INTO emp VALUES
(2296,’DIAH’,’SALESMAN’ ,7782,TO_DATE(‘PEB 3
97’,’MON DD YY’),1300, NULL,10);
Penjabaran : Sisipkan baris ke dalam tabel emp
pada semua kolom yang menggunakan nilai
data tanggal yang di format dengan
nilai 2296, Aromano, salesman,
to_date(feb 3 97,mon dd yy), 1300,
null,10;
Hasil Percobaan :
89
Gambar 6.16 Tampilan Menambahkan baris baru dengan fungsi tgl yang
di format
6.17 Percobaan Melakukan Proses Insert Yang
Mencantumkan Variable Substitusi Dari Suatu Nilai
Kolom Pada Baris Baru Yang Akan Dimasukkan Ke Dalam
Table
SQL : INSERT INTO dept ( deptno, dname, loc ) VALUES(&department_id, ‘&department_name’, ‘&location’);
80
EDUCATION
ATLANTA
Penjabaran : Sisipkan baris baru pada tabel dept
dengan mencantumkan variabel subtitusi
dari suatu nilai kolom, yaitu deptno
menjadi department_id,dname menjadi
department_name dan loc menjadi
location;
Hasil Percobaan :
90
Gambar 6.17 Tampilan menginputkan nilai department
6.18 Percobaan Menambahan Kustomisasi Prompt. Buat File
.Sql Dengan Nama File Npm Anda Dan Kemudian Save Di
Drive D
SQL : ACCEPT department_id PROMPT 'Silahkan masukkannomer department : '
ACCEPT department_name PROMPT 'Silahkan masukkan
nama department : '
ACCEPT location PROMPT 'Silahkan masukkan lokasi
department : '
INSERT INTO dept(deptno,dname,loc) VALUES
(&department_id,'&department_name','&location');
Penjabaran : Buat file.sql dengan nama
nomor_1412110055 dan kemudian simpan di
drive D. Isi dari file tersebut seperti
diatas untuk mengatur teks yang
ditampilkan saat pengisian variabel
subtitusi, yaitu pada kolom deptno,teks
yang dimasukkan adalah silahkan
masukkan nomer department, pada kolom
dname, teks yang ditampilkan adalah
silahkan masukkan nama department,dan
pada kolom loc,teks yang ditampilkan
adalah silahkan masukkan lokasi
department dari tabel dept;
91
Hasil Percobaan :
Gambar 6.18 Tampilan file nomor_1412110055.sql
6.18.1 Percobaan menampilan file
nomor_1412110055.sql
SQL : @D:\nomor_1412110055.sql
Penjabaran : Menjalankan perintah pemanggilan
file nomor_1412110055.sql
Hasil Percobaan :
Gambar 6.19 Tampilan memanggil file nomor_1412110055.sql
6.19 Percobaan Membuat Tabel Manajer
SQL : CREATE table manajer ( ID number(4), Namevarchar2(10), salary number(7,2), hiredate date);
Penjabaran : Buat table manajer dengan kolom id
tipe datanya number(4), name tipe
datanya varchar2(10), salary tipe
92
datanya number(7,2), hiredate tipe
datanya date;
Hasil Percobaan :
Gambar 6.20 Tampilan membuat table manajer
6.20 Percobaan Menambahkan Baris Baru Ke Dalam Table
Manager Yang Berasal Dari Table Pegawai Yang
Pekerjaannya = ‘Manager’
SQL : INSERT INTO manajer
( ID,Name,Salary,Hiredate )SELECT
empno,ename,sal,hiredate FROM emp WHERE
JOB=’MANAJER’;
Penjabaran : Tambahkan atau copy baris baru ke
dalam tabel managers pada kolom id,
name, salary, hiredate yang berasal
dari tabel emp yang mempunyai job =
manager;
Hasil Percobaan :
Gambar 6.21 Tampilan menambah baris baru pada table emp
93
6.21 Percobaan Mengubah Nomer Department Menjadi = 20,
Untuk Pegawai Yang Memiliki Nomer Department = 7782
SQL : UPDATE emp SET deptno=20 WHERE empno=7782;
Penjabaran : Ubah data pada tabel emp untuk
pegawai yang memiliki nomer departemen
7782 menjadi 20;
Hasil Percobaan :
Gambar 6.22 Tampilan mengubah table emp
6.21.1 Percobaan mengubah nomer department menjadi =
20
SQL : UPDATE emp SET deptno=20;
Penjabaran : Ubah seluruh data pada tabel emp
dari nomer departemen berapapun menjadi
20;
Hasil Percobaan :
Gambar 6.23 Tampilan mengubah seluruh data table emp
94
6.21.2 Percobaan tampilkan kolom ename, deptno dari
table emp
SQL : SELECT ename, deptno FROM emp;
Penjabaran : Tampilkan kolom ename, deptno dari
table emp;
Hasil Percobaan :
Gambar 6.24 Tampilan kolom ename, deptno dari table emp
6.22 Percobaan Mengubah Nilai Dari Kolom Pekerjaan Dan
Nomer Department Dari Pegawai Dengan Nomer Pegawai
‘7698’ Sehingga Nilainya Sama Dengan Jenis
Pekerjaan Dan Nomer Department Yang Dimiliki Oleh
Pegawai Bernomer ‘7499’
95
SQL : UPDATE emp SET (job,deptno)=(SELECT job,deptnoFROM EMP WHERE empno=7499)WHERE empno=7698;
Penjabaran : Ubah nilai dari kolom job dan
deptno dari pegawai dengan deptno 7698
sehingga nilainya sama dengan job dan
deptno yang dimiliki pegawai dengan
empno 7499 dari tabel emp;
Hasil Percobaan :
Gambar 6.25 Tampilan mengubah nilai kolom dari table emp
6.23 Percobaan Mengubah Data Nomer Department Yang
Dimiliki Oleh Pegawai Dengan Pekerjaan Yang Sama
Dengan Pegawai Bernomor ‘7788’ , Data Nomer
Department Tersebut Harus Diubah Menjadi Data Yang
Sama Dengan Nomer Department Yang Dimiliki Oleh
Pegawai Bernomor ‘7788’
SQL : UPDATE emp SET deptno=(SELECT deptno FROM empWHERE empno=7788)WHERE job=(SELECT job FROM emp
WHERE empno=7788);
Penjabaran : Ubah data nomer department yang
dimiliki oleh pegawai dengan pekerjaan
yang sama dengan pegawai bernomor
‘7788’ , data nomer department tersebut
harus diubah menjadi data yang sama
96
dengan nomer department yang dimiliki
oleh pegawai bernomor ‘7788’;
Hasil Percobaan :
Gambar 6.26 Tampilan table department
97
BAB VII
ADVANCED QUERY : PEMILIHAN DAN PENGURUTAN DATA
Baris-baris data yang dihasilkan dari suatu query
dapat dibatasi dengan memberikan klausa WHERE. Bentuk
umumnya sebagai berikut :
SELECT [DISTINCT {*,column[alias], ...} FROM table[WHERE
condition(s)];
Operator LIKE digunakan untuk membentuk pencarian
string yang sesuai dengan nilai yang dicantumkan pada
kondisi. Kondisi pencarian dapat berisi karakter atau
bilangan, dan 2 (dua) symbol khusus berikut :
1. % à menotasikan zero atau banyak karakter
2. _ à menotasikan satu karakter
98
Operator logika mengkombinasikan hasil dari dua
komponen kondisi 3 (tiga) macam operator logika yang
tersedia, yaitu :
1. AND : akan bernilai benar jika semua kondisi
benar
2. OR : akan bernilai benar jika salah satu
dari kondisi bernilai benar
3. NOT : akan bernilai
Klausa ORDER BY digunakan untuk mengurutkan data
hasil query. Terdapat 2 (dua) jenis yaitu :
1. ASC (Ascending – urut naik)
2. DESC (Descending – urut turun)
Secara default jika tidak ditampilkan maka dianggap
urut naik .
7.1Percobaan Menampilkan Nama, Pekerjaan, Dan Nomer
Department Dari Table Pegawai, Untuk Pegawai Yang
Pekerjaannya = “Clerk”
SQL : select ename, job, deptno FROM EMP WHERE
job=’CLERK’;
Penjabaran : Tampilkan kolom ename, job, depno dari
table emp dimana pegawai mempunyai
pekerjaan clerk;
Hasil Percobaan :
99
Gambar 7.1 Tampilan kolom ename,job,deptno dari table emp
7.2Percobaan Menampilkan Data Pegawai Yang Tanggal
Mulai Bekerjanya ’02-Apr-81’
SQL : select * FROM EMP WHERE hiredate=’02-APR-81’;
Penjabaran : Tampilkan seluruh data pegawai dari
table emp yang mulai bekerja mulai
tanggal 02-apr- 81;
Hasil Percobaan :
Gambar 7.2 Tampilan data pegawai dari table emp
7.3Percobaan Menampilkan Nama, Gaji Dan Komisi Dari
Pegawai Yang Nilai Komisinya lebih Besar Daripada
Gajinya
SQL : SELECT ename, sal, comm FROM EMP WHERE comm>sal;
100
Penjabaran : Tampilkan kolom ename, sal, comm dari
table emp dimana table comm Lebih besar
dari table sal;
Hasil Percobaan :
Gambar 7.3 Tampilan kolom ename,sal,comm dari table emp
7.4Percobaan Menampilkan Nama Dan Gaji Dari Pegawai
Yang Gajinya Antara 1000 Dan 1500
SQL : SELECT ename, sal FROM EMP WHERE sal BETWEEN 1000AND 1500;
Penjabaran : Tampilkan kolom ename, sal dari table
emp dimana table sal memiliki nilai
antara 1000 sampai 1500;
Hasil Percobaan :
Gambar 7.4 Tampilan kolom ename, sal dari table emp
101
7.5Percobaan Menampilkan Nomer Karyawan, Nama, Gaji
Dan Manager Dari Pegawai Dengan Nomer Karyawan
‘7902, 7566, Dan 7788’
SQL : SELECT ename, sal, mgr FROM EMP WHERE mgr IN(7902, 7566, 7788);
Penjabaran : Tampilkan kolom ename, sal, mgr dari
table emp dimana table mgr memiliki
nilai no 7902, 7566, 7788;
Hasil Percobaan :
Gambar 7.5 Tampilan kolom ename, sal, mgr dari table emp
7.6Percobaan Menampilkan Nama, Dan Tanggal Mulai
Bekerja Dari Pegawai Yang Tangal Mulai Kerjanya Di
Tahun 1981
SQL : SELECT ename, hiredate FROM EMP WHERE hiredateLIKE ‘%81’;
Penjabaran : Tampilkan kolom ename, hiredate dari
table emp dimana kolom hiredatenya
memiliki angka akhir 81;
Hasil Percobaan :
102
Gambar 7.6 Tampilan kolom ename, hiredate dari table emp
7.7Percobaan Menampilkan Nama Pegawai Yang Mengandung
Karakter ‘A’ Sebagai Huruf Kedua Dari Nama Pegawai
Tersebut
SQL : SELECT ename FROM EMP WHERE ename LIKE ‘_A%;
Penjabaran : Tampilkan kolom ename, hiredate dari
table emp dimana kolom ename memiliki
huruf tengah A;
Hasil Percobaan :
Gambar 7.7 Tampilan kolom ename dari table emp
103
7.8Percobaan Menampilkan Nama Pegawai Yang Merupakan
Manajer Perusahaan ( Ditandai Dengan Kolom Mgr =
Null )
SQL : SELECT ename FROM EMP WHERE mgr IS NULL;
Penjabaran : Tampilkan ename dari tabel emp dimana
kolom mgr adalah NULL;
Hasil Percobaan :
Gambar 7.8 Tampilan kolom ename dari table emp dimana kolom mgr
adalah NULL
7.9Percobaan Menampilkan Nomer, Nama, Pekerjaan Dan
Gaji Dari Pegawai Yang Memiliki Gaji Lebih Dari
1000 Dan Pekerjaannya Adalah ‘Clerk’
SQL : SELECT empno, ename, job, sal FROM EMP WHEREsal>1000 AND job=’CLERK’;
Penjabaran : Tampilkan kolom empno, ename, job, sal
dari tabel emp dimana kolom sal
memiliki gaji lebih dari 1000 dan kolom
job memiliki pekerjaan clerk ;
Hasil Percobaan :
104
Gambar 7.9 Tampilan kolom empno,ename,job,sal dari table emp
7.10 Percobaan Menampilkan Nomer, Nama, Pekerjaan Dan
Gaji Dari Pegawai Yang Memiliki Gaji Lebih Dari
1000 Atau Pekerjaannya Adalah Clerk’
SQL : SELECT empno, ename, job, sal FROM EMP WHEREsal>1000 OR job=’CLERK’;
Penjabaran : Tampilkan kolom empno, ename, job,
sal dari tabel emp dimana kolom sal
memiliki gaji lebih dari 1000 atau
kolom job memiliki pekerjaan clerk ;
Hasil Percobaan :
105
Gambar 7.10 Tampilan kolom empno,ename,job,sal dari table emp
dengan logika or
7.11 Percobaan Menampilkan Nama Dan Pekerjaan Pegawai
Yang Pekerjaannya Bukan ‘Clerk’, ‘Manager’ Dan
‘Analyst’
SQL : SELECT ename, job FROM EMP WHERE job NOT IN(’CLERK’,’MANAGER’,’ANALYST’);
Penjabaran : Tampilkan kolom ename, job dari tabel
emp dimana kolom job memiliki pekerjaan
selain clerk, manager dan analyst ;
Hasil Percobaan :
Gambar 7.11 Tampilan kolom ename,job dari table emp
106
7.12 Percobaan Menampilkan Nama, Pekerjaan, Nomer
Departement, Tanggal Mulai Bekerja Seorang Pegawai
Dengan Urutan Menaik Berdasarkan Tanggal Mulai
Kerja
SQL : SELECT ename, job, deptno, hiredate FROM EMPORDER BY hiredate;
Penjabaran : Tampilkan ename, job, deptno, hiredate
dari tabel EMP dimana data diurutkan
berdasar hiredate;
Hasil Percobaan :
Gambar 7.12 Tampilan Penggunaan ORDER BY urutan naik
7.13 Percobaan Menampilkan Nama, Pekerjaan, Nomer
Departement, Tanggal Mulai Bekerja Seorang Pegawai
107
Dengan Urutan Menurun Berdasarkan Tanggal Mulai
Kerja
SQL : SELECT ename, job, deptno, hiredate FROM EMPORDER BY hiredate DESC;
Penjabaran : Tampilkan ename, job, deptno, hiredate
dari tabel EMP dimana data diurutkan
secara menurun berdasar hiredate ;
Hasil Percobaan :
Gambar 7.13 Tampilan Penggunaan ORDER BY urutan menurun
7.14 Percobaan Menampilkan Nomer, Nama, Dan Gaji
Pegawai Selama Setahun ( Beri Nama Kolom Gaji Ini
Dengan ‘Gaji_Setahun’ )
108
SQL : SELECT empno,ename, job, sal*12 gaji_setahunFROM EMP ORDER BY gaji_setahun;
Penjabaran : Tampilkan empno, ename, dan sal * 12
ganti nama kolom menjadi gaji_satahun
dari tabel emp dan urutkan datanya
pada kolom gaji_satahun;
Hasil Percobaan :
Gambar 7.14 Tampilan tabel empno, ename, sal dari tabel emp
7.15 Percobaan Menampilkan Nama, Nomer Departemen, Dan
Gaji Pegawai Dari Table Emp Serta Urutkan
Berdasarkan Nomer Departemen Dan Besarnya Gaji
Dalam Urutan Menurun
SQL : SELECT empno,ename, sal FROM EMP ORDER BY salDESC;
Penjabaran : Tampilkan ename, deptno, sal dari
tabel emp serta urutkan menurun pada
kolom deptno, sal;
Hasil Percobaan :
109
Gambar 7.15 Tampilan Pengurutan yang melibatkan dua kolom atau
lebih
BAB VIII
ADVANCED QUERY : FUNGSI BARIS TUNGGAL DAN
FUNGSI MULTI BARIS
110
Fungsi fungsi sangat mendukung fitur pada SQL :
a. Melakukan perhitungan perhitungan pada data
b. Memodifikasi item item data individual
c. Memanipulasi keluaran dari kelompok baris baris
d. Format untuk tampilan tanggal dan angka angka
e. Konversi tipe data tipe data kolom
Ada dua tipe dari fungsi fungsi :
1. Single rows functions (fungsi baris tunggal)
Fungsi fungsi ini hanya digunakan pada baris baris
tunggal dan mengembalikan satu hasil per baris.
Ada tipe tipe berbeda dari singlerow functions. Single
row function mencakup hal hal berikut :
a. Character (karakter)
b. Number (angka)
a. Date (tanggal)
b. Conversion (konversi)
c. General (umum)
Singlerow function digunakan untuk memanipulasi item item
data. Singlerow functions menerima satu atau lebih argument
argument dan mengembalikan satu nilai untuk setiap
baris yang dihasilkan oleh suatu query. Suatu argumen
dapat berupa berikut ini :
111
a. Usersupplied constant (Konstanta yang disediakan oleh
user)
b. Nilai variable
c. Nama Kolom
d. Ekspresi
Fitur fitur dari singlerow functions mencakup :
a. Aksi pada setiap baris yang dikembalikan di dalam
query
b. Mengembalikan satu hasil per baris
c. Memungkinkan pengembalian suatu nilai data dari
suatu tipe berbeda daripada satu yang
direferensikan.
d. Mungkin menerima satu atau lebih argument argumen
e. Dapat digunakan didalam klausa klausa SELECT, WHERE,
dan ORDER BY;dapat disarangkan (nested)
2. Multiple row functions (fungsi banyak baris)
Fungsi fungsi dapat memanipulasi kelompok dari baris
baris untuk memberi suatu hasil baris baris per
kelompok. Fungsi fungsi ini dikenal juga sebagai group
functions .
8.1Percobaan Menampilkan Nama, Gaji, Komisi, Dan
Selisih Pembagian Gaji Dibagi Komisi
SQL : SELECT ename, sal, comm., NVL(comm.,0), MOD(sal,NVL(comm,0)) FROM EMP ;
112
Penjabaran : Tampilkan ename, sal, comm. beri nilai
nvl , mod dari tabel emp;
Hasil Percobaan :
Gambar 8.1 Tampilan kolom ename , sal, comm yang bernilai nvl
8.2Percobaan Menampilkan Nama Dan Pekerjaan Pegawai
(Kolom Digabung), Panjang Dari Nama Pegawai, Dan
Posisi Keberapa Huruf ‘A’ Dalam Nama Pegawai
SQL : SELECT concat(ename,job), LENGTH(ename), INSTR
(ename,’A’) FROM EMP ;
Penjabaran : Tampilkan dan gabung kolom ename dan
job, hitung panjang ename dan posisi
berapa karakter A pada ename sehingga
tampilan kolom menjadi
concat(ename,jo), LENGTH(ename),
INSTR(ename,’A’) dari tabel EMP;
Hasil Percobaan :
113
Gambar 8.2 Tampilan menggabungkan kolom ename dan job
8.3Percobaan Untuk Semua Pegawai Yang Telah Bekerja
Kurang Dari 200 Bulan, Tampilkan Nomer Pegawai,
Tanggal Mulai Kerja, Jumlah Bulan Pegawai Tsb Telah
Bekerja, 6-Bulan Setelah Bekerja, Hari Jum’at
Pertama Setelah Tanggal Mulai Kerja, Dan Tanggal
Terakhir Dari Bulan Pada Saat Dia Mulai Bekerja
SQL : SELECT empno, hiredate, MONTHS_BETWEEN(SYSDATE,
hiredate) TENURE, ADD_MONTHS(hiredate,6)REVIEW,
NEXT_DAY(hiredate,’JUMAT’),LAST_DAY(hiredate)FROM
EMP WHERE MONTHS_BETWEEN(SYSDATE,hiredate)<400;
Penjabaran : Tampilkan empno, hiredate berdasar
SYSDATE dan kolom menjadi TENURE,
tambahkan 6 bulan ganti kolom menjadi
REVIEV, hari mulai FRIDAY sampai
tanggal terakhir dari tabel EMP dimana
SYSDATE, hiredate kurang dari 400;
Hasil Percobaan :
114
Gambar 8.3 Tampilan empno, hiredate berdasar sysdate dan kolom
menjadi tenure
8.4Percobaan Menampilkan Nama Pegawai Dan Jumlah
Berapa Minggu Pegawai Tersebut Bekerja
SQL : SELECT ename,(SYSDATE-hiredate)/7 WEEKS FROM EMP;
Penjabaran : Tampilkan ename, sysdate-hiredate/7
weeks dari tabel emp;
Hasil Percobaan :
Gambar 8.4 Tampilan ename, sysdate-hiredate/7 weeks dari tabel emp
115
8.5Percobaan Menampilkan Nama Dan Tanggal Mulai
Bekerja Dari Pegawai Dengan Format Tanggal ‘fmDD
Month YYYY’
SQL : SELECT ename,TO_CHAR(hiredate,’fmDD Month YYYY’
FROM EMP;
Penjabaran : Tampilkan ename, hiredate yang sudah
diubah format menjadi TO_CHAR sehingga
menjadi (hiredate,’fmDD Month YYYY) dari
tabel EMP;
Hasil Percobaan :
Gambar 8.5 Tampilan ename yang sudah diformat
8.6Percobaan Menampilkan Nama Dan Tanggal Mulai
Bekerja Dari Pegawai Dengan Format Tanggal ‘fmDdspth
“Of” Month YYYY fmHH:MI:SS AM’
SQL : SELECT ename,TO_CHAR(hiredate, ‘fmDdspth “Of” MonthYYYY fmHH:MI:SS AM’)FROM EMP;
116
Penjabaran : Tampilkan ename, hiredate yang sudah
diubah format menjadi TO_CHAR sehingga
menjadi (hiredate, ‘fmDdspth “Of” Month
YYYY fmHH:MI:SS AM’) dari tabel EMP;
Hasil Percobaan :
Gambar 8.6 Tampilan ename, hiredate yang diformat menjadi to_char
8.7Percobaan Menampilkan Gaji Pegawai Dengan Format
‘$99,999’ Untuk Pegawai Yang Bernama ‘Scott’
SQL : SELECT ename,TO_CHAR(sal,’$99,999’) GAJI FROM EMP
WHERE ename=’SCOTT’;
Penjabaran : Tampilkan sal yang sudah diubah format
ke TO_CHAR sehingga menjadi sal,’$99,999
ubah kolom menjadi GAJI dari tabel EMP
dimana ename sama dengan SCOTT;
Hasil Percobaan :
117
Gambar 8.7 Tampilan sal yang diformat menjadi to_char
8.8Percobaan Menampilkan Nama, Gaji, Komisi, Dan Gaji
Setahun Ditambah Dengan Komisi Dari Semua Pegawai
SQL : SELECT ename, sal, comm, (sal*12)+NVL(comm.,0) FROM
EMP;
Penjabaran : Tampilkan ename, sal, comm, dan pada
sal *12+ nvl (comm,0) dari tabel emp;
Hasil Percobaan :
Gambar 8.8 Tampilan kolom ename,sal,comm sal *12+ nvl (comm,0)
dari tabel emp
118
8.9Percobaan Menampilkan Pekerjaan Dan Gaji Pegawai,
Serta Gaji Pegawai Yang Direvisi Dengan Judul Kolom
‘Revisi_Gaji’. Gaji Yang Direvisi Berisi Formula :
Jika Jenis Pekerjaannya ‘Analyst’ Kenaikan Gajinya
10%, Jika Jenis Pekerjaannya ’Clerk’ Maka Kenaikan
Gajinya 15%, Dan Jika Jenis Pekerjaannya ‘Manager’
Maka Kenaikan Gajinya 20%, Untuk Jenis Pekerjaan
Selain Dari Ketiga Pekerjaannya Tersebut Gajinya
Tetap (Tidak Direvisi)
SQL : SELECT job, sal, DECODE(job, ‘ANALIST’, sal*1.1,
‘CLERK’, sal*1.15, ‘MANAGER’, sal*1.2,SAL)
REVISI_GAJI FROM EMP;
Penjabaran : Tampilkan job, sal, decode dari job
dimana analyst sal*1.1, clerk sal*1.15
dan manager sal*1.2 beri nama kolom
revisi_gaji dari tabel emp;
Hasil Percobaan :
119
Gambar 8.9 Tampilan job, sal, decode dari job dimana analyst
8.10 Percobaan Menampilkan Data Pegawai Yang Tidak
Memiliki Manager. Kolom Yang Ditampilkan Adalah
Nama Pegawai, Dan Kolom Manager (Mgr) Yang Sudah
Dikonversi Ke Karakter Dan Diberi Keterangan ‘Tidak
Punya Manager’
SQL : SELECT ename, NVL(TO_CHAR(mgr), ‘Tidak punya
manager’)FROM EMP WHERE mgr IS NULL;
Penjabaran : Tampilkan ename, mgr yang bernilai NVL
dan diubah format ke TO_CHAR serta beri
keterangan ’Tidak punya manager’ dari
tabel EMP dimana mgr adalah NULL;
Hasil Percobaan :
Gambar 8.10 Tampilan ename, mgr yang bernilai NVL dan diubah
format ke TO_CHAR
BAB IX
ADVANCED QUERY : MENAMPILKAN DATA DARI BANYAK
TABEL
120
Seringkali kita perlu menggunakan data yang
berasal dari banyak table, tidak hanya berasal
dari satu table saja, semisal :
a. Nomer pegawai (empno) hanya ada di table pegawai
(EMP)
b. Nomer department (deptno) ada di table pegawai
(EMP) dan table department (DEPT).
c. Nama lokasi department (LOC) hanya ada di table
department (DEPT)
Untuk mendapatkan data dari dua atau lebih table,
maka table-tabel tersebut harus dihubungkan terlebih
dahulu, atau dengan kata lain harus dilakukan JOIN
terlebih dahulu
Bentuk umum JOIN :
Ada 2 (dua) tipe utama join, yaitu equi-join dan
non-equijoin. Metode join lainnya meliputi : outer
join dan self join.
9.1Percobaan Menampilkan Nama Pegawai Dan Nama
Department Tempat Dimana Pegawai Tersebut Bekerja
SQL : SELECT ename, dname FROM EMP,DEPT;
Penjabaran : Tampilkan kolom ename, dname dari tabel
emp dan dept;
121
SELECT table1.column, table2.column FROM tabel1, tabel2
WHERE tabel1.column = table2.column;
Hasil Percobaan :
Gambar 9.1 Tampilan kolom ename dan dname
9.2Percobaan Menampilkan Nomer Pegawai, Nama Pegawai,
Nomer Department, Dan Lokasi Department
SQL : SELECT emp.empno, emp.ename, emp.deptno, dept.loc
FROM emp, dept WHERE emp.deptno=dept.deptno;
Penjabaran : Tampilkan data kolom empno pada tabel
emp, ename pada tabel emp, deptno pada
tabel emp,loc pada tabel dept dari tabel
emp dan dept dimana kolom deptno pada
tabel emp sama dengan kolom deptno pada
tabel dept;
Hasil Percobaan :
122
Gambar 9.2 Tampilan kolom empno,ename,deptno,loc
9.3Percobaan Menampilkan Nomer Pegawai, Nama Pegawai,
Nomer Department, Dan Lokasi Department Dari Pegawai
Yang Bernama ‘King’
SQL : SELECT emp.empno, emp.ename, emp.deptno, dept.loc
FROM emp, dept(ename)= WHERE emp.deptno=dept.deptno
AND INITCAP(ename)=’King’;
Penjabaran : Tampilkan data kolom empno pada tabel
emp, ename pada tabel emp, deptno pada
tabel emp, loc pada tabel dept dari
tabel emp dan dept dimana kolom deptno
pada tabel emp sama dengan kolom deptno
pada tabel dept dan (di tampilkan
dengan huruf besar didepan) data pada
kolom ename = ‘KING’;
Hasil Percobaan :
123
Gambar 9.3 Tampilan kolom empno,ename,deptno,loc dengan menambah
operator and
9.4Percobaan Menampilkan Nama Pegawai, Gaji Dan Grade
Dari Gaji Pegawai Tersebut (Grade Ada Pada Table
Salgrade)
SQL : SELECT e.ename, e.sal, s.grade FROM emp e, SALGRADE
s WHERE e.sal BETWEEN s.losal AND s.hisal
Penjabaran : Tampilkan data kolom ename pada tabel
e, sal pada tabel e, grade pada tabel s
dari tabel emp alias e, tabel salgrade
alias s dimana isi kolom sal pada tabel
e antara kolom losal pada tabel s dan
kolom hisal pada tabel s. nama pegawai,
gaji, grade dari tabel emp alias e
dan tabel salgrade alias s gaji.
antara losal dan hisal pada tabel
salgrade;
Hasil Percobaan :
124
Gambar 9.4 Tampilan data dengan relasi non equijoin
9.5Percobaan Menampilkan Nama Pegawai, Gaji Dan Grade
Dari Gaji Pegawai Tersebut (Grade Ada Pada Table
Salgrade)
SQL : SELECT e.ename PEGAWAI, e.ename MANAJER FROM EMP e,
EMP m WHERE e.mgr=m.empno AND e.ename=’BLAKE”;
Penjabaran : Tampilkan data pada kolom ename dari
tabel e alias pegawai, kolom mgr pada
tabel m alias menejer dari tabel emp
alias e, tabel emp alias m dimana data
pada kolom mgr dari tabel e = data
pada kolom empno dari tabel m dan
enamenya = ‘blake’;
Hasil Percobaan :
125
Gambar 9.5 Tampilan kolom pegawai dan manajer
BAB X
SUB QUERY PADA BARIS DAN KOLOM
Subquery adalah perintah SELECT yang berada di dalam
perintah SQL lain. Subquery sangat berguna ketika kita
ingin menampilkan data dengan kondisi yang bergantung
pada data di dalam table itu sendiri.
Kegunaan-kegunaan Subquery dalam memanipulasi data:
a. Meng-copy data dari satu tabel ke tabel lain
b. Menerima data dari inline view
c. Mengambil data dari tabel lain untuk kemudian di
update ke tabel yang dituju
d. Menghapus baris dari satu tabel berdasarkan baris
dari tabel lain.
10.1 Percobaan Menampilkan Nama Pegawai Yang Memiliki
Gaji Lebih Besar Daripada Pegawai Dengan Nomer
Pegawai 7566
126
SQL : SELECT ename FROM EMP WHERE sal > ( SELECT sal
FROM EMP WHERE empno=7566);
Penjabaran :Tampilkan kolom ename dari tabel emp
dimana isi data kolom sal lebih besar
dari kolom sal dari tabel emp dimana
isi kolom empno=7566;
Hasil Percobaan :
Gambar 10.1 Tampilan kolom ename dari table emp
10.2 Percobaan Menampilkan Nama, Dan Pekerjaan Dari
Pegawai Yang Memiliki Pekerjaan Yang Sama Dengan
Pegawai Dengan Nomer Pegawai = 7369
SQL : SELECT ename, job FROM EMP WHERE job=( SELECT job
from emp where empno=7369);
Penjabaran :Tampilkan kolom ename,job dari tabel
emp dimana isi data kolom job sama
dengan hasil ambil data kolom job dari
tabel emp dimana isi kolom empno=7369;
Hasil Percobaan :
127
Gambar 10.2 Tampilan kolom ename, job dari table emp
10.3 Percobaan Menampilkan Nama, Dan Pekerjaan Dari
Pegawai Yang Memiliki Pekerjaan Yang Sama Dengan
Pegawai Dengan Nomer Pegawai = 7369 Dan Memiliki
Gaji Yang Lebih Besar Daripada Pegawai Dengan Nomer
Pegawai = 7876
SQL : SELECT ename, job FROM EMP WHERE job= ( SELECT
job from emp WHERE empno=7369)AND sal > (select
sal from emp WHERE empno=7876);
Penjabaran :Tampilkan kolom ename,job dari tabel
emp dimana isi data kolom job sama
dengan hasil ambil data kolom job dari
tabel emp dimana isi kolom empno=7369
dan isi data kolom sal lebih besar
dari hasil ambil data kolom sal dari
tabel emp dimana isi kolom empno=7876;
Hasil Percobaan :
128
Gambar 10.3 Tampilan kolom ename, job table emp
10.4 Percobaan Menampilkan Nama, Pekerjaan Dan Gaji
Dari Pegawai Yang Memiliki Gaji Yang Paling Kecil
(Minimum)
SQL : SELECT ename, job, sal FROM EMP WHERE sal=
( SELECT MIN(SAL)FROM EMP);
Penjabaran :Tampilkan kolom ename,job,sal dari
tabel emp dimana isi data kolom sal
sama dengan hasil ambil data gaji
minimal dari tabel emp;
Hasil Percobaan :
Gambar 10.4 Tampilan kolom ename, job,sal table emp
10.5 Percobaan Menampilkan Nomer Department, Dan Gaji
Minimum Pada Tiap-Tiap Department Yang Memiliki
129
Gaji Minimum Yang Lebih Besar Daripada Gaji Minimum
Pada Department Dengan Nomer Department = 20
SQL : SELECT deptno, MIN(sal)FROM EMP GROUP BY deptno
HAVING MIN(sal) > (SELECT MIN(sal)FROM EMP WHERE
deptno=20);
Penjabaran :Tampilkan kolom deptno,min(sal) dari
tabel emp diurutkan dengan kolom
deptno yang memiliki min(sal) lebih
besar dari nilai ambil min(sal) dari
tabel emp dimana isi kolom deptno=20;
Hasil Percobaan :
Gambar 10.5 Tampilan kolom ename, job,min(sal) dari table emp
10.6 Percobaan Menampilkan Pekerjaan Dan Rata-Rata Gaji
Dari Pekerjaan Yang Memiliki Rata-Rata Gaji Yang
Paling Kecil
SQL : SELECT job, AVG(sal)FROM EMP GROUP BY job HAVING
AVG(sal) = (SELECT MIN(AVG(sal))FROM EMP GROUP BY
job);
Penjabaran :Tampilkan kolom job,AVG(sal) dari
tabel emp diurutkan menurut job yang
memiliki AVG(sal) sama dengan nilai
130
dari ambil data MIN(sal) dari tabel
emp yang diurutkan menurut kolom job;
Hasil Percobaan :
Gambar 10.6 Tampilan kolom ename, avg(sal) dari table emp
10.7 Percobaan Menampilkan Nama, Gaji, Dan Nomer
Department Dari Pegawai Yang Memiliki Gaji Yang
Sama Dengan Gaji Minimum Pada Suatu Department
SQL : SELECT ename, sal, deptno FROM EMP WHERE sal IN
(SELECT MIN(sal)FROM EMP GROUP BY deptno);
Penjabaran :Tampilkan kolom ename, deptno dari
tabel emp dimana sal termasuk dalam
nilai dari ambil MIN(sal) dari tabel
emp yang diurutkan berdasarkan kolom
deptno;
Hasil Percobaan :
Gambar 10.7 Tampilan kolom ename, sal, deptno dari table emp
131
10.8 Percobaan Menampilkan Data Pegawai Yang Memiliki
Gaji Yang Lebih Kecil Dari Sembarang Orang Yang
Pekerjaannya ‘Clerk’ , Dan Pekerjaan Pegawai
Tersebut Bukan ‘Clerk’. Data Pegawai Yang
Ditampilkan Yaitu Nomer, Nama, Dan Pekerjaan
Pegawai
SQL : SELECT empno,ename,job FROM EMP WHERE sal < ANY
(SELECT sal FROM EMP WHERE job=’CLERK’)AND job <>
’CLERK’;
Penjabaran :Tampilkan kolom empno,ename,job dari
tabel emp dimana nilai dari kolom sal
lebih besar dari ambil data dari kolom
sal dari tabel emp dimana job=clerk
dan job tidak sama dengan clerk;
Hasil Percobaan :
Gambar 10.8 Tampilan kolom empno,ename,job dari table emp
132
10.9 Percobaan Menampilkan Data Pegawai Yang Memiliki
Gaji Yang Lebih Besar Daripada Rata-Rata Gaji Dalam
Tiap Department. Data Pegawai Yang Ditampilkan
Yaitu Nomer, Nama, Dan Pekerjaan Pegawai
SQL : SELECT empno,ename,job FROM EMP WHERE sal < ALL
(SELECT AVG(sal)FROM EMP GROUP BY deptno);
Penjabaran :Tampilkan kolom empno,ename,job dari
tabel emp dimana nilai sal lebih besar
dari semua nilai dari ambil data
AVG(sal) dari tabel emp yang diurutkan
menurut nilai kolom deptno;
Hasil Percobaan :
Gambar 10.9 Tampilan kolom empno,ename,job dengan operator all
dari table emp
Operator ALL membandingkan suatu nilai dengan semua
nilai yang ada dalam subquery.
Operator >ALL ekuivalen dengan MAKSIMUM.
Operator <ALL ekuivalen dengan MINIMUM.
133
10.10 Percobaan Menampilkan Nomor Pegawai, Nama
Pekerja, Nomor Manager, Nomor Departemen Dimana
(Nomor Manager Dan Nomor Departemen) Sama Dengan
(Nomor Manager Dan Nomor Departemen) Dari Pegawai
Yang Memiliki Nomer Pegawai 7499
SQL : SELECT EMPNO,ENAME,MGR,DEPTNO FROM EMP WHERE
(MGR,DEPTNO) IN (SELECT MGR,DEPTNO FROM EMP
WHERE EMPNO=7499)AND EMPNO <> 7499;
Penjabaran :Tampilkan kolom
empno,ename,mgr,deptno dari tabel emp
dimana nilai mgr termasuk dalam nilai
hasil ambil data kolom mgr dari tabel
emp dimana nilai empno=7499 dan
deptno termasuk dalam nilai hasil
ambil data kolom deptno dari tabel
emp dimana nilai empno=7499 dan nilai
empno tidak sama dengan 7499;
Hasil Percobaan :
Gambar 10.10 Tampilan kolom empno,ename,mgr,deptno dari table emp
134
10.11 Percobaan Menampilkan Nomor Pegawai, Nama
Pekerja, Nomor Manager, Nomor Departemen Dimana
Nomor Manager Dan Nomor Departemennya Sama Dengan
Nomor Manager Dan Nomor Departemen Dari Pegawai
Yang Memiliki Nomer Pegawai 7499
SQL : SELECT EMPNO,ENAME,MGR,DEPTNO FROM EMP WHERE MGR
IN (SELECT MGR FROM EMP WHERE RMPN=7499) AND
DEPTNO IN (SELECT DEPTNO FROM EMP WHERE
EMPNO=7499) AND EMPNO<>7499;
Penjabaran :Tampilkan kolom
empno,ename,mgr,deptno dari tabel emp
dimana nilai mgr termasuk dalam nilai
hasil ambil data kolom mgr dari tabel
emp dimana nilai empno=7499 dan
deptno termasuk dalam nilai hasil
ambil data kolom deptno dari tabel
emp dimana nilai empno=7499 dan nilai
empno tidak sama dengan 7499;
Hasil Percobaan :
Gambar 10.11 Tampilan Subquery dengan banyak kolom pada table emp
135
10.12 Percobaan Menampilkan Nama Pegawai, Gaji,
Nomer Department, Dan Rata-Rata Gaji Untuk Semua
Pegawai Yang Memiliki Gaji Lebih Besar Dari Rata-
Rata Gaji Pada Department Tempatnya Bekerja
SQL : SELECT a.ename, a.sal, a.deptno, b.salavg FROM
EMP a,(SELECT deptno,AVG(sal) salavg FROM EMP
GROUP BY deptno) b WHERE a.deptno=b.deptno AND
a.sal > b.salavg;
Penjabaran :Tampilkan kolom ename dari tabel a,
sal dari tabel a, deptno dari tabel
a, salavg dari tabel a dari tabel
emp yang diurutkan menurut nilai
deptno pada tabel b dimana kolom
deptno pada tabel a sama dengan nilai
kolom deptno pada tabel b dan nilai
sal dari tabel a, lebih besar dari
nilai salavg pada tabel b;
Hasil Percobaan :
Gambar 10.12 Tampilan kolom ename,sal,deptno,salavg pada table emp
136
BAB XI
PENUTUP
11.1 KESIMPULAN
Basis data Oracle adalah basis data relasional
yang terdiri dari kumpulan data dalam suatu sistem
manajemen basis data RDBMS. Perusahaan perangkat lunak
Oracle memasarkan jenis basis data ini untuk bermacam-
macam aplikasi yang bisa berjalan pada banyak jenis dan
merk perangkat keras komputer (platform).
137
Operasi standar sebuah database adalah insert, delete
dan update. Ketiganya biasa disebut DML kependekan dari
Data Manipulation Language. SQL merupakan bahasa
standar untuk pengolahan database. Tentunya Oracle-pun
menggunakan SQL, hanya saja ada beberapa karakteristik
yang berbeda dengan SQL standar.
11.2 SARAN
Secara umum praktikum ini berjalan dengan sangat
efektif dan efesien, karena disamping mahasiswa
melakukan pendalaman materi yang didapatkan dari kelas,
mahasiswa juga diberi latihan-latihan untuk pemahaman
lebih lanjut .
Dalam praktikum ini diharapkan selain pembimbing,
asisten pembimbing juga bisa memberikan penjelasan
kepada mahasiswa mengenai praktikum yang diberikan agar
mahasiswa tidak menunggu giliran pembimbing untuk
menjelaskan .
DAFTAR PUSTAKA
138
http://www.mediafire.com/view/?126cuwace6a04xq
http://risnotes.com/2012/01/sequence/
http://risnotes.com/2012/01/index/
http://risnotes.com/2012/01/sinonim/
http://ranafatinhexi.blogspot.com/2013/03/view-pada-
oracle.html
http://oracle1st.wordpress.com/2009/06/05/insert-
update-delete-oracle/
http://id.wikipedia.org/wiki/Basis_data_Oracle
http://hilmimi090057.blogspot.com/2011/10/resume-sql-1-
pert3.html
http://catatankuliahum.blogspot.com/2013/02/sub-query-
basis-data.html
http://naraminato.wordpress.com/online-training-php-
oracle/pengertian-oracle/
http://doylp.tripod.com/ora-adm/ora-adm-1.html
http://www.atwiwit.net/2013/10/pengertian-database.html
139