Download - SBD Lanjut
MODUL I
Manipulasi Basis Data
MAKSUD DAN TUJUAN
Agar mahasiswa memahami cara, manipulasi basis data dengan perintah DML
MATERI
Penerapan perintah INSERT, UPDATE, dan DELETE
TEORI
MySQL adalah salah satu produk RDBMS yang sangat populer juga bersifat
open source. Seperti kebanyakan database server lainnya, MySQL dapat diakses
oleh aplikasi klien dengan bahasa standar, yaitu SQL (Structure Query Language).
SQL dapat digolongkan menjadi tiga:
Data Definition Language, yang termasuk golongan ini adalah:
Membuat database
Menghapus database
Menciptakan tabel
Menghapus tabel
Mengubah tabel
Data Manipulation Language, yang termasuk golongan ini adalah:
Menambah record
Melihat isi tabel
Menganti isi record
Menghapus record
Data Control Language, yang termasuk golongan ini adalah perintah untuk
mengatur kewenangan user, misalnya perintah:
CREATE USER
DROP USER
GRANT
REVOKE
INSERT
Perintah INSERT pada DML digunakan untuk memasukkan data ke dalam tabel.
Sintaks yang dipakai adalah :
INSERT INTO Nama_Tabel(Daftar_Kolom) Values(Daftar_Nilai)
1
UPDATE
Perintah UPDATE digunakan untuk melakukan perubahan pada data.Update
berfungsi untuk mengubah data dalam tabel. Beberapa kegunaan update adalah :
mengubah data dalam tabel, mengisi field yang masih kosong datanya,
mengosongkan field yang sudah ada datanya.Sintaks yang digunakan adalah:
UPDATE Nama_Tabel
SET Nama_Kolom = Nilai_baru
WHERE Kondisi
DELETE
DELETE digunakan untuk menghapus dan menggunakan perintah DELETE.Sintaks
yang digunakan adalah:
DELETE from Nama_Tabel
Where Kondisi
PRAKTIK
1. Lewat command promt, jalankan program MySQL dengan perintah: mysql> ,
kemudian masukkan password yang diminta (mungkin ”root”)
2. Setelah masuk di lingkungan MySQL, buatlah database dengan perintah SQL:
create database dbperusahaan;
3. Masukklah ke database dbperusahaan dengan perintah:
use dbperusahaan;
4. Buatlah tabel departemen dengan perintah:
mysql> create tabel departemen
(id_Dep char(2) not null,
Nama_Dep char(12) not null,
Primary key (Nama_Dep));
5.untuk melihat struktur tabel departemen gunakan perintah:
mysql> describe departemen;
sehingga akan ditampilkan struktur tabel sebagai berikut:
+----------+----------+| Field | Type |+----------+----------+| id_Dep | char(2) | | Nama_Dep | char(12) | +----------+----------+
2
6.Masukkan record baru (menambah record) dengan perintah:
mysql> insert into departemen(id_Dep,Nama_Dep) values ('PS','Pemasaran'), ('PD','Produksi'), ('AK','Akuntansi'), ('SD','SDM'), ('RD','R & D');Untuk menampilkan isi tabel departemen gunakan perintah sebagai berikut:
mysql> select * from departemen;+--------+-----------+| id_Dep | Nama_Dep |+--------+-----------+| PS | Pemasaran || PD | Produksi || AK | Akuntansi || SD | SDM || RD | R & D |+--------+-----------+
7. Mengubah record pada tabel barang yang Id_Dep = ’SD’, Nama_Dep menjadi
Personalia, dengan perintah:
update Nama_Dep set = ’Personalia’ ;
8.Hapus record pada tabel barang yang Id_Dep = ’RD’,dengan perintah:
delete from departemen where Id_Dep = ’RD’;
9. Mengubah struktur tabel departemen, untuk type nama_departemen diganti
menjadi varchar (15).
Alter tabel departemen modify Nama_Dep varchar(15);
LATIHAN
1. Buatlah tabel Karyawan,Proyek, Manajer dengan struktur sebagai berikut:
Tabel Proyek+-----------+------------------------+| Field | Type | +-----------+------------------------+| Id_Proyek | int(11) auto_increment || Deskripsi | char(100) || Selesai | enum('S','B') |+-----------+------------------------+
Tabel Karyawan
+---------------+---------------+| Field | Type | +---------------+---------------+| No_Karyawan | char(8) | | Nama | char(35) | | Jenis_Kelamin | enum('L','P') | | Tgl_Lahir | date | | Jabatan | char(15) | | Id_Dep | char(2) | +---------------+---------------+
3
Tabel Teknisi_Proyek+-----------------+---------+| Field | Type |+-----------------+---------+| No_Karyawan | char(8) || Id_Proyek | int(11) || Tgl_Mulai | date || Tanggal_Selesai | date |+-----------------+---------+2. Tambahkan kolom gaji pada tabel Karyawan.
3. Masukkan Data pada tabel proyek, karyawan, teknisi_proyek minimal 5.
4. Gunakan perintah UPDATE dan Delete, untuk melakukan perubahan terhadap
data-data diatas.
TUGAS
1. Buatlah Database Penggajian yang terdiri dari tabel Karyawan, Gaji,
Penggajian.
2. Gunakan perintah Update dan Delete pada tabel yang telah dibuat.
4
MODUL IIPemrosesan tabel tunggal
MAKSUD DAN TUJUAN
Agar mahasiswa bisa memasukkan data, menampilkan data dengan query
MATERI
Insert, select (all, distinct, like), from, dan where untuk tabel tunggal
TEORI
1. INSERT : Memasukkan data ke dalam tabel.
Sintaks : INSERT INTO nama_tabel(field1,field2,....) VALUES
(nilai_field1, nilai_field2,....);
2. SELECT : Menampilkan data dari tabel.
Sintaks : SELECT field1,field2,... FROM nama_tabel;
3. WHERE : berfungsi untuk memberikan kondisi pemilihan sehingga hasil
perintah select sesuai dengan yang dibutuhkan.
Sintak: SELECT field1,field2,... FROM nama_tabel WHERE kondisi;
Terdapat operator relasional dengan tanda =, <>, <, >, <=,
>=, serta operasi logika AND, OR, XOR yang digunakan sebagai kondisi
pada where.
Operator IN berarti menampilkan data yang berada didalam suatu kriteria yang
dipilih, NOT IN berarti sebaliknya yaitu menampilkan data yang berada selain
kriteria yang ditentukan.
4. FROM : memilih tabel yang akan diselect.
Sintak : Select <nama kolom>
From <nama tabel>
5. DISTINC : digunakan untuk menampilkan record yang berbeda
berdasarkan satu kolom. ( menghilangkan duplikat ).
Menampilkan kolom dengan record yang dipilih hanya muncul satu kali.
Sintak : Select distinct nama_kolom
From nama_tabel
Untuk pemilihan distinc lebih dari satu kolom menggunakan sintaks sebagai berikut :
Select distinct *
From nama_tabel
Group by key
6. LIKE : digunakan untuk mencari data yang menyerupai atau hampir sama
dengan kriteria tertentu. Biasanya untuk mencari data string / teks. Dalam hal ini
digunakan simbol “ % ” atau “ _ “.
Sintaks : Select nama_kolom
From nama_tabel
Where nama_kolom like "%....”;
5
Menampilkan data dengan kriteria huruf depan yang dipilih (berawalan...)
Like “(kriteria) %”
Menampilkan data dengan kriteria huruf akhir yang dipilih (akhiran...)
Like “% (kriteria)”
Menampilkan data dengan kriteria yang mengandung karakter tertentu
ditengah atau dalam suatu kata tertentu
Like “% (kriteria) %”.
7. ALL : Kata kunci dasar untuk pernyataan SELECT. Kondisi dengan ALL
menghasilkan nilai benar jika pembandingan dihasilkan nilai benar untuk setiap nilai
dalam subquery. Tetapi kita hampir tidak pernah menemukan kata kunci tersebut
karena hasil dari SELECT <nama tabel> dan SELECT ALL <nama tabel> adalah
identik.
Sintaks : Select All nama_kolom From Nama_Tabel
8. Order by : digunakan untuk mengurutkan data.
Sintaks : Select * from nama_tabel order by kriteria;
9. Group by : Mengelompokkan data.
Sintaks : Select kriteria from nama_tabel group by kriteria;
10. Fungsi Agregat : untuk menghasilkan nilai berdasar sejumlah data.
AVG : menghasilkan nilai rata-rata.
COUNT : menghasilkan cacah data.
MAX : menghasilkan nilai terbesar.
MIN : menghasilkan nilai terkecil.
SUM : menghasilkan jumlah data.
PRAKTIK DAN LATIHAN
1. Lewat command promt, jalankan program MySQL dengan perintah: mysql> ,
kemudian masukkan password yang diminta (mungkin ”root”).
2. Setelah masuk di lingkungan MySQL, aktifkan database perusahaan yang
telah dibuat pada modul I.
3. Tampilkan seluruh data pada tabel-tabel yang telah anda buat contoh untuk
menampilkan isi data pada tabel departemen :
Select * from departemen;
Tampilkan data menggunakan operator relasional ( =, <>, <, >, <=), dan
operator logika ( AND, OR, XOR ). Contoh : menampilkan data karyawan
yang gajinya lebih dari 1juta: Select * from karyawan where gaji > 1000000;
6
4. Tampilkan data pada kolom nama_departemen, menggunakan Distinc.
Select distinct *
From departemen
Group by id_Dep;
5. Tampilkan nama karyawan yang mempunyai huruf depan ‘e’,
Select * from karyawan where nama_karyawan like ‘e%’.
6. Tampilkan jumlah karyawan. Select Count (nip) from karyawan;
7. Lakukanlah seluruh perintah yang terdapat dalam teori terhadap database
perusahaan yang telah anda buat.
TUGAS
Gunakan perintah-perintah yang sudah dijelaskan pada teori modul 2 terhadap
database penggajian tugas modul I.
7
MODUL III
Studi kasus menggunakan tabel tunggal
MAKSUD DAN TUJUAN
Agar mahasiswa memahami penerapan manipulasi basis data dengan tabel
tunggal
MATERI
Menerapkan teori yang sudah dipelajari pada modul I dan 2.
TEORI
Penerapan perintah INSERT, UPDATE, dan DELETE, Insert, select (all, distinct,
like), from, dan where untuk tabel tunggal terhadap suatu database pada tabel
tunggal.
PRAKTIK DAN LATIHAN
1. Buatlah database Nasabah Bank “Sejahtera” yang terdiri dari tabel data
cabang, dan tabel data nasabah sebagai berikut :
Data Cabang
Kd_cabang Nama Alamat Jml_Nasabah
KC001 KC AKAKOM JANTI 8
KC002 KC GEJAYAN GEJAYAN 5
KC003 KC WIROBRAJAN WIROBRAJAN 8
KC004 KC GEDUNG KUNING GEDUNG KUNING 7
KC005 KC BABARSARI BABARSARI 3
Data Nasabah
Kd_Nasabah Nama Alamat Rekening Kd_cabang Saldo
N0001 Januar Condong Catur 12340001 KC002 10000000
N0002 Febri Gejayan 12340002 KC004 25000000
N0003 Marina Gamping 12340003 KC005 14000000
N0004 Aprilia Janti 12340004 KC001 7000000
N0005 Memey Kotabaru 12340005 KC001 5000000
N0006 Junita Kalasan 12340006 KC001 12000000
N0007 Juliana Gejayan 12340007 KC003 13000000
N0008 Agusto Sleman 12340008 KC005 2800000
N0009 Septiana Condong Catur 12340009 KC004 9000000
N0010 Oktavia Gamping 12340010 KC003 10000000
N0011 Novia Sleman 12340011 KC001 750000
N0012 Desia Kotabaru 12340012 KC005 1200000
8
2. Buatlah perintah dan tampilkan hasilnya untuk perintah-perintah sebagai
berikut:
a. Menampilkan semua nasabah, alamat dan saldonya.
b. Menampilkan nama nasabah dengan saldo > 2000000.
c. Menampilkan nama nasabah dengan alamat Gejayan.
d. Menampilkan nama nasabah dengan kode cabang KC003.
e. Menampilkan semua data kantor cabang (nama dan alamat).
f. Menampilkan nama kantor cabang dengan alamat Janti.
g. Menampilkan nama kantor cabang dengan jumlah nasabah > 5 orang.
h. Mengupdate data kantor cabang dengan kode KC002 menjadi :
Nama : KC Ambarukmo
Alamat : Ambarukmo
Jumlah Nasabah : 15
i. Menghapus data semua kantor cabang dengan jumlah nasabah
kurang dari 5.
j. Mengupdate data nasabah dengan kode N0010 menjadi :
Alamat : Monjali
Saldo : 9000000
k. Menghapus semua nasabah dengan alamat Terban.
l. Menampilkan saldo maksimal.
m. Menampilkan rata-rata saldo nasabah.
n. Menampilkan jumlah nasabah.
9
MODUL IV
Pemrosesan tabel jamak
MAKSUD DAN TUJUAN
Agar mahasiswa memahami relasi dan pemrosesan tabel jamak
MATERI
Cross Join dan Inner Join
TEORI
SQL mempunyai kemampuan untuk menggabungkan dua tabel atau lebih guna
mendapatkan informasi yang diinginkan, dengan proses yang dilakukan dengan
nama JOIN. Suatu operasi Join mengkombinasikan product, selection, dan mungkin
projection. Operator Join secara horisontal mengkombinasikan / menggabungkan
data dari satu baris tabel dengan baris dari yang lain atau tabel yang sama ketika
kriteria tertentu ditemukan. Kriteria melibatkan suatu hubungan diantara kolom
didalam gabungan tabel relasional.
Sintak Join :
Select nama_kolom
From nama_tabel1
JOIN nama_tabel2
ON nama_tabel1.key1 = nama_tabel2.key1;
a. CROSS JOIN / CARTESIAN JOIN : menghasilkan kombinasi semua baris
yang terdapat dalam tabel-tabel yang digabungkan baik yang tidak
berpasangan maupun yang berpasangan.
b. INNER JOIN : menghasilkan output yang berupa kombinasi baris-baris yang
memiliki pasangan saja. Kombinasi baris yang bukan pasangan akan
dieliminasi. Baris – baris yang tidak memiliki pasangan pada tabel lainnya
tidak dimunculkan.
PRAKTIK DAN LATIHAN
1. Lewat command promt, jalankan program MySQL dengan perintah: mysql> ,
kemudian masukkan password yang diminta (mungkin ”root”).
2. Setelah masuk di lingkungan MySQL, aktifkan database perusahaan yang
telah dibuat pada modul I.
10
3. Gunakan database mahasiswa yang telah dibuat, terdiri dari tabel mhs,
matakuliah, khs, sebagai berikut:
Tabel mhs
+------------+--------+------+----------+--------+-------+
| nim | nama | jk | agama | alamat | kelas |
+------------+--------+------+----------+--------+-------+
| 0802100011 | emy | P | islam | janti | A11 |
| 0802100012 | waldan | L | islam | sleman | B13 |
| 0802100013 | tasya | P | islam | sleman | B13 |
| 0802100014 | rika | P | katholik | bantul | A13 |
| 0802100015 | thomas | L | katholik | bantul | A12 |
+------------+--------+------+----------+--------+-------+
Tabel matakuliah
+---------+----------------------+------+
| kode_mk | nama_mk | sks |
+---------+----------------------+------+
| DKT01 | pemrograman komputer | 2 |
| KKT05 | basis data | 2 |
| KKT07 | sistem informasi | 2 |
| PKT21 | bahasa inggris | 2 |
| DKT33 | pemrograman web | 3 |
+---------+----------------------+------+
Tabel khs
+------------+---------+----------+-----------+-------+
| nim | kode_mk | semester | TA | nilai |
+------------+---------+----------+-----------+-------+
| 0802100011 | DKT01 | 3 | 2007/2008 | A |
| 0802100012 | PKT21 | 5 | 2007/2008 | A |
| 0802100013 | PKT21 | 5 | 2007/2008 | B |
| 0802100014 | DKT01 | 5 | 2007/2008 | C |
| 0802100015 | KKT07 | 2 | 2007/2008 | B |
+------------+---------+----------+-----------+-------+
4. Tuliskan perintah :
mysql> select mahasiswa.nama,mk.nama_mk from mahasiswa,mk ;
merupakan perintah cross join tabel mahasiswa dan matakuliah.
5. Tuliskan perintah:
mysql> select a.nim,a.nama,b.nama_mk,c.nilai
-> from mahasiswa a,mk b,khs c;
Merupakan cross join antara tabel mahasiswa, matakuliah, dan khs.
6. Tuliskan perintah:
mysql> select * from khs,mk
-> where khs.kode_mk=mk.kode_mk;
Perintah tersebut sama dengan perintah berikut:
mysql> select * from khs inner join mk
-> on khs.kode_mk=mk.kode_mk;
11
7. Menampilkan informasi matakuliah, tahun ajaran, serta nilai yang diperoleh
setiap mahasiswa :
mysql>select k.nim, k.kode_mk, m.nama_mk, m.sks, k.semester, k.TA, k.nilai
-> from khs k,mk m where k.kode_mk=m.kode_mk;
8. Mengkonversi nilai huruf dari tabel khs menjadi nilai angka :
mysql> select k.nim,m.nama_mk,m.sks,k.nilai as nilai,
-> case
-> when nilai='A' then 4
-> when nilai='B' then 3
-> when nilai='C' then 2
-> when nilai='D' then 1
-> else 0
-> end as nilai_angka
-> from khs k inner join mk m on k.kode_mk=m.kode_mk;
9. Menghitung point:
mysql> select k.nim,m.nama_mk,m.sks,k.nilai,
-> case
-> when nilai='A' then 4*m.sks
-> when nilai='B' then 3*m.sks
-> when nilai='C' then 2*m.sks
-> when nilai='D' then 1*m.sks
-> else 0
-> end as point
-> from khs k inner join mk m on k.kode_mk=m.kode_mk;
10.Menampilkan data mahasiswa yang terdapat dalam tabel mahasiswa dan
dalam tabel khs :
mysql> select mahasiswa.nim,mahasiswa.nama
-> from mahasiswa inner join khs on mahasiswa.nim=khs.nim;
11.Menggabungkan tiga tabel :
mysql> select a.nim,a.nama,b.nama_mk,b.sks,c.semester,c.nilai,c.TA
-> from mahasiswa a inner join khs c on a.nim=c.nim
-> inner join mk b on c.kode_mk=b.kode_mk;
12. Menghitung IPK :
mysql> select khs.nim,mahasiswa.nama,(sum(
-> case
-> when khs.nilai='A' then 4*mk.sks
-> when khs.nilai='B' then 3*mk.sks
-> when khs.nilai='C' then 2*mk.sks
-> when khs.nilai='D' then 1*mk.sks
-> else 0
-> end )/sum(mk.sks)) as ipk
-> from khs inner join mk on khs.kode_mk=mk.kode_mk
-> inner join mahasiswa on khs.nim=mahasiswa.nim
-> group by khs.nim,mahasiswa.nama;
12
TUGAS
1. Gunakan database penggajian dan terapkan fungsi Cross Join, Inner Join
sesuai pada latihan sebelumnya.
2. Hitung gaji berdasarkan tunjangan, gaji pokok dan bonus, dengan
ketentuan :
Tunjangan: Jika jumlah anak = 1, tunjangan = 1% dari gaji pokok
Jika jumlah anak = 2, tunjangan = 2% dari gaji pokok
Jika jumlah anak = 3, tunjangan = 3% dari gaji pokok
Selain itu tidak mendapatkan tunjangan.
Bonus : Gol 1 = 100000, Gol 2=200000, Gol 3=300000, Gol =400000
Potongan gaji adalah 10 % dari gaji kotor (gajipokok + tunjangan + bonus)
13
MODUL V
Pemrosesan tabel jamak
MAKSUD DAN TUJUAN
Agar mahasiswa memahami relasi dan pemrosesan tabel jamak
MATERI
Outer join dan Union join
TEORI
a. OUTER JOIN adalah join yang menghasilkan semua data dari sebuah tabel
dan membatasi data dari tabel lain. Dalam SQL dapat dibedakan menjadi
LEFT JOIN dan RIGHT JOIN.
LEFT OUTER JOIN / LEFT JOIN : jika tabel yang terletak disebelah kiri
operator Left Outer Join ada yang tidak memiliki pasangan dengan tabel yang
terletak di kanan operator Left Outer Join baris ini akan tetap disertakan
dalam hasil penggabungan.
RIGHT OUTER JOIN / RIGHT JOIN : jika baris pada tabel yang terletak
disebelah kanan operator RIGHT OUTER JOIN ada yang tidak memiliki
pasangan dengan tabel yang terletak di kanan operator Right Outer Join,
baris ini tetap disertakan dalam hasil penggabungan.
b. UNION
UNION merupakan operator yang digunakan untuk menggabungkan hasil
query, dengan ketentuan jumlah, nama dan tipe kolom dari masing-masing
tabel yang akan ditampilkan datanya harus sama.
Contoh : mysql>select jenis,judul from film where jenis='action' union
select jenis,judul from film where jenis='drama';
Contoh tersebut sama dengan perintah berikut :
mysql>select jenis,judul from film where jenis='action' or jenis='drama';
PRAKTIK DAN LATIHAN1. Lewat command promt, jalankan program MySQL dengan perintah: mysql> ,
kemudian masukkan password yang diminta (mungkin ”root”).
2. Setelah masuk di lingkungan MySQL, aktifkan database perusahaan yang
telah dibuat pada modul I.
14
3. Gunakan database mahasiswa yang telah dibuat, tambahkan tabel jurusan,
dan kelas sebagai berikut :
Tabel Dosen
+-----------+-----------+------+------------+--------------+------------+
| nip | namadosen | jk | alamat | telp | pendidikan |
+-----------+-----------+------+------------+--------------+------------+
| 132312490 | aulia | P | yogyakarta | 08122771344 | S2 |
| 132312478 | putri | P | janti | 085678900123 | S3 |
| 132312455 | ratna | P | sleman | 08123456779 | S2 |
| 132312445 | mirza | L | bantul | 08113456888 | S3 |
| 132312433 | budi | L | bantul | 08117890123 | S2 |
+-----------+-----------+------+------------+--------------+------------+
Tabel Jurusan
+--------------+----------------------------+-----------+
| kode_jurusan | nama_jurusan | ketua |
+--------------+----------------------------+-----------+
| S1TI | Teknik Informatika S1 | 132312490 |
| S1SI | Sistem Informasi S1 | 132312478 |
| D3MI | Manajemen Informatika D3 | 132312455 |
| D3KA | Komputerisasi Akuntansi D3 | 132312445 |
| D3TK | Teknik Komputer D3 | 132312433 |
+--------------+----------------------------+-----------+
Tabel Kelas
+--------+--------------+-----------+------------+
| kelas | kode_jurusan | nip | dosen_wali |
+--------+--------------+-----------+------------+
| S1TI3A | S1TI | 132312490 | 132312490 |
| S1TI3C | S1TI | 132312490 | 132312490 |
| D3MI1B | D3MI | 132312455 | 132312455 |
| S1SI5A | S1SI | 132312478 | 132312478 |
+--------+--------------+-----------+------------+
4. Tuliskan perintah :
mysql> select m.nim,m.nama,k.kode_mk,k.nilai -> from mahasiswa m left join khs k on m.nim=k.nim;
5. Tuliskan perintah :
mysql> select m.nim,k.kelas as kelas,kode_jurusan as jurusan
-> from mahasiswa m right join kelas k on m.kelas=k.kelas;
6. Tuliskan perintah :
mysql> select kelas,kode_jurusan from kelas where kelas='S1TI3A' union
select kelas,kode_jurusan from kelas where kelas='D3MI1B’;
TUGAS1. Jelaskan perbedaan antara cross join, inner join dan
outer join, dan sertakan contoh untuk mendukung jawaban anda.
2. Menggunakan database penggajian operasikan perintah-perintah dengan outer join dan union.
15
MODUL VI
Penggunaan Subquery
MAKSUD DAN TUJUAN
• Agar mahasiswa memahami penggunaan perintah subquery untuk
memproses data mampu menggunakan perintah SQL untuk menampilkan
data dengan syarat berjenjang
MATERI
Struktur Query, sub query dengan berbagai parameter
TEORI
Subquery (disebut juga subselect) merupakan bentuk query yang terletak dalam
query lain. Dalam pemahaman yang sederhana didalam sebuah SELECT terdapat
SELECT lain.
SELECT dapat juga digunakan dalam WHERE, hal ini disebut subquery.
Kata kunci untuk Subquery:
o IN
o EXISTS
o ALL/ANY/SOME
IN Subquery
Dengan IN, subquery harus menghasilkan 1 (satu) kolom tapi boleh beberapa
baris.
Contoh : SELECT DISTINCT nama FROM petani
WHERE id NOT IN
(SELECT id FROM memasokWHERE jml_bunga = 1 )
EXIST Subquery
Dengan EXIST, subquery dapat menghasilkan satu atau lebih kolom.
Contoh :
SELECT id, nama FROM petani
WHERE NOT EXIST
(SELECT stock_num,manu_code FROM items
WHERE stock.stock_num = items.stock_num
AND stock.manu_code = items.manu_code)
ALL/ANY/SOME Subquery
ANY, ALL atau SOME dipakai dalam subquery bila hasil yang dikembalikan
lebih dari satu.
Jika ANY, ALL atau SOME diabaikan dan subquery menghasilkan lebih dari
satu nilai, maka pesan kesalahan akan muncul.
16
Contoh 1 : SELECT DISTINCT orders_num FROM items
WHERE total_price > ALL ( SELECT total_price
FROM items WHERE orders_num = 1023)
Contoh 2 : SELECT DISTINCT orders_num FROM items
WHERE total_price > SELECT
MAX(total_price)FROM items
WHERE orders_num = 1023)
Contoh 3 : SELECT DISTINCT orders_num FROM items
WHERE total_price > ANY ( SELECT total_price
FROM items WHERE orders_num = 1023)
PRAKTIK DAN LATIHAN
1. Lewat command promt, jalankan program MySQL dengan perintah: mysql> ,
kemudian masukkan password yang diminta (mungkin ”root”).
2. Setelah masuk di lingkungan MySQL, aktifkan database perusahaan yang
telah dibuat pada modul I.
3. Gunakan database mahasiswa yang telah dibuat.
4. Menampilkan daftar mahasiswa yang terdapat dalam tabel mahasiswa dan
tabel khs.
mysql>select nim,nama
from mahasiswa
where exists (select * from khs where nim=mahasiswa.nim);
5. Tulis perintah :
mysql>select nim,nama
from mahasiswa
where nim = any (select distinct nim from khs);
6. Tulis perintah :
mysql>select nim,nama
from mahasiswa
where nim in (select distinct nim from khs);
7. Tulis perintah :
mysql>select nim,nama
from mahasiswa
where not exists (select * from khs where nim=mahasiswa.nim);
8. Apa kesimpulan yang anda peroleh dari perintah-perintah tersebut? Apa saja
hasilnya?
17
TUGAS
1. Gunakan tabel mahasiswa, kelas, jurusan dan dosen untuk menampilkan
data berikut:
a. menampilkan data dosen (nip, nama) yang menjabat sebagai ketua
jurusan sekaligus menjadi dosen wali.
b. Menampilkan data dosen (nip,nama) yang tidak menjabat sebagai
ketua jurusan.
c. Menampilkan data dosen (nip, nama) yang tidak menjadi dosen wali.
d. Menampilkan daftar mahasiswa yang dibimbing oleh seorang dosen
wali.
e. Menampilkan daftar mahasiswa suatu jurusan.
f. Menampilkan daftar mahasiswa suatu jenjang program studi.
18
MODUL VII
Penggunaan Query Kompleks
MAKSUD DAN TUJUAN
Agar mahasiswa memahami penggunaan perintah subquery untuk memproses
data
MATERI
Query dengan menggunakan tabel jamak dengan perintah yang kompleks dan
penggunaan view.
TEORI
View merupakan suatu cara untuk menampilkan data dari satu atau lebih
tabel di dalam database yang berbentuk virtual tabel atau stored query. Data dalam
view sebenarnya tidak ada. View hanya berupa query yang berfungsi untuk
menampilkan data-data suatu tabel. View dikatakan sebagai virtual tabel atau tabel
tak nyata karena view memiliki sifat dan penanganan yang sama dengan tabel,
hanya saja data yang diakses lewat view tidak disimpan secara langsung di dalam
database. Alasan kenapa harus dibuat view adalah untuk mempersingkat perintah
query yang rumit, disamping itu juga untuk menyembunyikan informasi-informasi
penting dari suatu tabel yang seharusnya tidak ditampilkan.
Membuat View :
Membuat view secara umum akan sama dengan membuat tabel pada umumnya.
Namun dalam pembuatan view terdapat beberapa hal yang membedakan dari
pembuatan tabel pada umumnya dikarenakan view merupakan hasil query atas
suatu tabel pada umumnya dikarenakan view merupakan hasil query atas suatu
tabel.
CREATE VIEW Nama_View [Daftar Kolom]
As
Ekspresi_SELECT;
PRAKTIK DAN LATIHAN
1. Lewat command promt, jalankan program MySQL dengan perintah: mysql> ,
kemudian masukkan password yang diminta (mungkin ”root”).
2. Setelah masuk di lingkungan MySQL, buatlah database sebagai berikut :
3. Aktifkan database mahasiswa yang telah anda buat.
4. Tuliskan perintah berikut, untuk membuat view vdmhs:
mysql>create view vdmhs
as
select nim,nama from mahasiswa;
5. Melihat isi data view;
Mysql>select * from vdmhs;
19
6. Tuliskan perintah berikut, untuk membuat view vdmhsaktif :
mysql>create view vdmhsaktif
as
select m.nim,m.nama from mahasiswa m join khs k
on m.nim=k.nim
group by m.nim,m.nama;
7. Mengganti data view :
Mysql>Update vwalikelas
Set namadosen=’aulia natasya, M.Kom’
Where namadosen=’aulia’;
8. Tuliskan perintah:
Mysql>create view vnilaimhs
As
Select a.nim as nim,a.nama as nama,b.kode_mk as (kode mata kuliah),
b.nilai as nilai
from mahasiswa a join khs b
on a.nim=b.nim;
9. Menghapus view :
Mysql>drop view vmhs;
TUGAS
1. Dengan menggunakan database penggajian, buatlah view untuk
menampilkan gaji bersih masing-masing karyawan berdasarkan ketentuaan
pada tugas modul IV. Informasi yang akan ditampilkan adalah tanggal
penggajian, nip,nama karyawan, dan gaji bersih.
2. Memanfaatkan view hasil dari soal no 1 diatas, buatlah view untuk
menghitung rata-rata gaji bersih masing-masing karyawan.
3. Buatlah view untuk menghitung gaji bersih setelah dipotong pajak PPH 5%.
20
MODUL VIII
Studi kasus penggunaan query kompleks
MAKSUD DAN TUJUAN
Agar mahasiswa mampu menyelesaikan kasus menggunakan tabel jamak
MATERI
Kasus Pengolahan data penjualan untuk tabel jamak dengan menerapkan perintah-
perintah yang telah dipelajari pada modul 4, 5, 6, 7.
TEORI
Menerapkan perintah cross join, inner join, outer join, subquery, view.
PRAKTIK DAN LATIHAN
1. Buatlah database Market Dealer, yang terdiri dari tabel pembelian, barang,
penjualan, suplier, agen, dimana atributnya adalah sebagai berikut :
Pembelian (kd_pembelian, hari, tanggal, kd_suplier,kd_barang,jumlah)
Barang (kd_barang,nama_barang)
Penjualan (kd_penjualan,hari,tanggal,kd_agen,kd_barang, jumlah)
Suplier (kd_suplier,nama_suplier,alamat)
Agen (kd_agen,nama_agen,alamat)
2. Tuliskan perintah untuk menampilkan data dengan ketentuan berikut, dan
tampilkan hasilnya:
a. Menampilkan data pembelian (kodepembelian, hari, tanggal, nama
suplier, nama barang, jumlah).
b. Menampilkan data penjualan (kode penjualan, hari, tanggal, nama
agen, nama barang, jumlah)
c. Menampilkan nama barang yang terjual dengan jumlah > 20.
d. Menampilkan nama barang dan jumlah barang yang terjual pada
tanggal 1 agustus 2009 dikelompokkan berdasarkan nama barang.
e. Menampilkan nama dan alamat suplier yang menyuplai sabun.
f. Menampilkan nama dan alamat agen yang membeli shampo.
g. Menampilkan nama barang yang terbeli dengan agen yang beralamat
di yogyakarta.
h. Menampilkan nama suplier yang menyuplai barang pada tanggal 2
agustus 2009.
i. Menampilkan barang yang paling banyak terjual, dan kolom yang
ditampilkan adalah kode_penjualan, kode_barang, jumlah.
j. Menampilkan tanggal yang menunjukkan terjadi penjualan terbanyak,
dan kolom yang ditampilkan adalah kode_penjualan, tanggal, jumlah
21
Daftar Pustaka
Abdul Kadir, 2009, Dasar Perancangan dan Implementasi, Penerbit Andi,
Yogyakarta.
Bambang Hariyanto, 2004, Sistem Manajemen Basisdata, Informatika, Bandung.
Janner Simarmata, 2007, Perancangan Basisdata, Penerbit Andi, Yogyakarta
Raghu Ramakrisnan, Johanes Gehrke, 2003, Sistem Manajemen Database,
McGraw Hill Education, Penerbit Andi, Yogyakarta.
Yakub, 2008, Sistem BasisData, Graha Ilmu, Yogyakarta.
22