Disusun oleh :
AKAKOM
YOGYAKARTA
2020
i
KATA PENGANTAR
Puji syukur kehadirat Tuhan Yang Maha Kuasa yang telah memberikan
Rahmat dan Karunia -Nya sehingga penyusunan modul praktikum Sistem
Manajemen Sistem Basis Data dapat selesai tepat pada waktunya.
Modul praktikum ini merupakan salah satu bahan ajar pendukung untuk
memperkuat mata kuliah Sistem Basis Data yang diajarkan di kelas teori.
Dengan adanya modul ini diharapkan mahasiswa/praktikan dapat dengan
mudah mempelajari, memahami, dan mempraktikkan materi – materi yang
telah diajarkan pada kelas teori mata kuliah Sistem Basis Data.
Selanjutnya juga diharapkan modul ini bisa membantu atau menjadi
referensi dalam pemecahan permasalahan umum di luar materi perkuliahan.
Sebagian besar isi dari modul praktikum ini merupakan rangkuman dari sumber-
sumber yang telah dibuat penulis lain.
Penyusun berharap agar modul ini dapat bermanfaat bagi semua kalangan
pembaca. Terima kasih untuk semuanya yang telah memberikan banyak kritik dan
saran serta dukungan dalam penyusunan modul praktikum ini.
Penyusun
ii
DAFTAR ISI
iii
MODUL 1
TRANSFORMASI ERD
CAPAIAN PEMBELAJARAN
1. Mahasiswa dapat melakukan transformasi dari bentuk ERD kedalam Bentuk Relasi
Tabel dengan benar
2. Mahasiswa memiliki pemahaman yang baik dan benar bagaimana menghasilkan basis
data dari ERD sesuai aturan transformasi
KEBUTUHAN ALAT/BAHAN/SOFTWARE
DASAR TEORI
B. Atribut
Merupakan semua karakteristik/properti yang mendeskripsikan entitas. Di antara
atribut-atribut dari sebuah entitas, biasanya terdapat satu (atau bisa juga lebih)
atribut yang berfungsi sebagai pengenal. Atribut semacam ini disebut sebagai
atribut pengenal (primary key).
1
Notasi dalam ERD:
- Entitas, digambarkan dalam bentuk persegi panjang
- Primary key (digambarkan dengan garis bawah tebal pada atribut yang
bersangkutan)
- Atribut komposit
2
- Atribut turunan, merupakan atribut yang nilainya didapat dari hasil kalkulasi
atribut lain. Digambarkan dengan garis elips putus-putus.
Kumpulan entitas dan atribut ini disebut sebagai skema basis data.
C. Hubungan
Jenis-jenis hubungan:
- One-to-one
- One-to-many
- Many-to-one
- Many-to-many
Di dalam notasi ini dituliskan kata kerja yang menjadi penghubung dua entitas.
D. Kardinalitas
Kardinalitas menyatakan banyaknya baris data suatu entitas yang terkait
dengan baris data pada tabel yang lain. Ini disebut sebagai rasio kardinalitas.
Tipe-tipenya:
3
- Mandatory-one
- Mandatory-many
- Optional-one
- Optional-many
Jenis hubungan:
- Unary: hanya melibatkan 1 entitas
4
2. Transformasi ERD
2. Relasi dengan derajat satu ke satu yang menghubungkan 2 himpunan entitas akan
ditransformasikan kedalam bentuk penyertaan atribut-atribut relasi ke salah satu
himpunan entitas
5
PRAKTIK
LATIHAN
1. Tuliskan soal latihan yang harus dikerjakan mahasiswa di sini (modul untuk
mahasiswa tidak perlu diberi jawaban; modul untuk dosen perlu disertakan
jawaban)
2. .....
TUGAS
1. Tuliskan soal tugas yang harus dikerjakan mahasiswa di sini (modul untuk
mahasiswa tidak perlu diberi jawaban; modul untuk dosen perlu disertakan
jawaban)
2.
REFERENSI
6
MODUL 2
Data Definition Language (DDL)
CAPAIAN PEMBELAJARAN
KEBUTUHAN ALAT/BAHAN/SOFTWARE
DASAR TEORI
1. DBMS
Basis data merupakan kumpulan data yang saling berhubungan satu dengan yang
lainnya yang diaorganisasikan sesuai struktur tertentu dan disimpan dengan
baik. Untuk mendapatkan informasi yang berguna dari kumpulan data maka
diperlukan suatu perangkat lunak (software) untuk memanipulasi data sehingga
mendapatkan informasi yang berguna. Database Manajement System (DBMS)
merupakan software yang digunakan untuk membangun sebuah sistem basis data
yang berbasis komputerisasi. DBMS membantu dalam pemeliharaan dan
pengolahan kumpulan data dalam jumlah besar. Sehingga dengan menggunakan
DBMS tidak menimbulkan kekacauan dan dapat digunakan oleh pengguna sesuai
dengan kebutuhan.
7
DBMS merupakan perantara bagi pemakai dengan basis data. Untuk
merinteraksi dengan DBMS (basis data) menggunakan bahasa basis data yang telah
ditentukan oleh perusahaan DBMS.
2. Tipe Data
Tipe data merupakan jenis nilai yang bisa ditampung pada suatu variable, bisa
berupa angka (numerik), teks, ataupun berupa gambar. Dengan begitu kita dapat
menentukan tipe data yang nantinya akan mempermudah dalam pengaturan
suatu tabel.
Tipe Data Angka (Numerik) merupakan tipe data yang dapat digunakan
pada suatu variabel konstanta yang dapat menyimpan nilai berupa angka. Pada
tipe data angka terbagi menjadi beberapa jenis seperti pada kolom tabel 1
dibawah ini.
8
Table 1. Tipe data number
Tipe Data Teks (String) merupakan tipe data yang bisa digunakan untuk
menampung banyak karakter dengan jumlah maksimum data yang dapat
ditampung yakni sebanyak 255 karakter. Beberapa jenis-jenis tipe data
string yang terdapat pada Database MySQL.
9
Tabel 2. Tipe data text
Tipe Data Date digunakan untuk menyimpan data tanggal dengan format
tahun, bulan, tanggal. Beberapa jenis tipe data date yang dapat
digunakan.
Tipe Data BLOB merupakan tipe data yang dapat digunakan untuk
menampung gambar, musik, video dan lain-lain nya.
10
Table 4. Tipe data bloob
3. QUERY
Query adalah suatu extracting dari suatu data base dan menampilkanya
untuk pengelolaaan/diolah lebih lanjut
Query adalah permintaan informasi atau pertanyaan tertentu dari sebuah
data base yang ditulis dalam format tertentu
Query adalah perintah-perintah untuk mengakses data pada sistem basis
data
Query adalah bahasa yang digunakan untuk melakukan manipulasi
terhadap database, yang telah di standar kan dan dikenal dengan nama
Structured Query Language (SQL)
11
Fungsi utama DDL:
Sintaks :
2. CREATE TABEL
Perintah ini digunakan untuk membuat table-tabel yang ada pada basis data
lengkap dengan atribut , tipe data dan constraint.
12
Sintak :
Not Null:
Constraint Not Null ini berfungsi untuk membatasi setiap data yang
dimasukkan di suatu kolom pada tabel database MySQL harus memiliki nilai.
Perlu diketahui bahwa 0 (nol) merupakan nilai.
Unique:
Constraint Unique ini berfungsi untuk membatasi setiap data yang
dimasukkan di suatu kolom pada tabel database MySQL ini harus berbeda
dengan data yang telah tersimpan.
Primary Key:
Constraint Primary Key ini mirip dengan constraint Unique dan biasanya
berfungsi sebagai acuan dalam suatu tabel data. Berbeda dengan Unique
Constraint yang dapat dipasangkan ke dalam beberapa kolom dalam satu
tabel. Constraint primary key ini hanya bisa dipasangkan pada salah satu
kolom saja dalam satu tabel. Jadi tidak mungkin ada 2 primary key yang
dipasang dalam 2 kolom di suatu tabel. Pasti hanya ada satu kolom primary
key dalam satu tabel MySQL. Sedangkan Unique Constraint bisa
dipasangkan dalam beberapa kolom dalam satu tabel.
Foreign Key:
Constraint Foreign Key ini berfungsi sebagai rujukan ketika memasukkan
data dalam suatu kolom. Jadi jika ada data yang akan dimasukkan di kolom
yang memiliki constraint Foreign Key, maka data tersebut sebelumnya sudah
harus ada di tabel yang lain yang sudah dijadikan rujukan.
Check:
Constraint check ini berfungsi untuk melakukan pengecekan data sebelum
disimpan di dalam kolom tabel MySQL. Constraint check ini mirip quality
controll, sehingga apabila data yang akan disimpan di kolom tidak sesuai
persyaratan yang dibuat, maka data tersebut tidak dapat disimpan di kolom
tersebut, sehingg MySQL akan menampilkan pesan error bahwa data
tersebut tidak lolos uji cek.
13
3. ALTER TABLE
Perintah ALTER digunakan untuk memperbaiki,menambah,menghapus struktur basis
data maupun struktur table.
Sintak :
ALTER TABLE NAMA_TABEL
ADD/DROP /MODIFY/CHANGE KOLOM/FIELD
Dimana :
ADD menambah kolom/field, constraint (index,primary key dll)
DROP menghapus Kolom/Field, Index, Primary Key, Foreign Key
MODIFY memperbaiki tipe data dan ukuran field/kolom
CHANGE mengganti nama kolom/Field
PRAKTIK
4. Jalankan modul MySQL pada Xampp Control dengan klik pada Button Start
seperti terlihat pada gambar 1.
5. Jalankan DBMS MySQL yang ada pada Komputer dengan menggunakan command
prompt (perintah cmd) seperti Nampak pada gambar 2.
14
Gambar 2. Menjalankan Command Prompt
6. Pada jendela command prompt ketikkan perintah berikut :
15
7. Menciptakan Basis Data Akademik
16
LATIHAN
1. Buatlah perintah SQL untuk membuat table mahasiswa, dosen dan krs dengan
struktur table seperti pada gambar 3 pada database akademik :
17
TUGAS
REFERENSI
18
MODUL 3
Data Manipulation Language (DML)
INSERT, UPDATE,DELETE,SELECT
CAPAIAN PEMBELAJARAN
1. Mahasiswa dapat memasukkan data kedalam table dengan Perintah SQL (INSERT)
2. Mahasiswa Mampu melakukan perubahan terhadap data yang ada didalam table
dengan Perintah SQL (UPDATE)
3. Mahasiswa Mampu melakukan penghapusan data yang ada didalam table dengan
Perintah SQL (DELETE)
4. Mahasiswa Mampu menampilkan data dengan perintah SELECT satu tabel
KEBUTUHAN ALAT/BAHAN/SOFTWARE
DASAR TEORI
19
Perintah SQL DML
1. INSERT: Perintah yang digunakan untuk memasukkan data ke table.
Sintak :
Keterangan :
INTO sifatnya opsional. Boleh ditulis, boleh tidak.
Daftar nama kolom boleh ditulis, boleh tidak. Jika tidak ditulis, maka
dianggap sesuai urutan nama kolom dalam pendefinisian tabel
(lihat dengan perintah DESC namatabel. Gunakan koma sebagai
pemisah.
{VALUE | VALUES}, wajib ditulis. Boleh VALUE atau VALUES.
Isi kolom harus sesuai dengan urutan daftar nama kolom. Boleh
diisi ekspresi atau DEFAULT. Gunakan koma sebagai pemisah.
Keterangan :
WHERE digunakan untuk membatasi banyaknya baris yang
diupdate
ORDER BY digunakan untuk melakukan pengurutan data yang
akan diupdate.
LIMIT digunakan untuk membatasi baris yang akan diupdate
(setelah data dibatasi dengan WHERE).
20
Dimana :
Table_reference : nama table dimana data-datanya akan dihapus
Where_condition : kondisi/syarat yang harus dipenuhi untuk data yang
akan dihapus.
Keterangan :
* digunakan untuk menampilkan semua kolom yang ada dalam tabel
Daftar_kolom digunakan untuk mengampikan kolom tertentu saja
WHERE digunakan jika ingin membatasi data yang ditampilkan
PRAKTIK
1. Jalankan DBMS MySQL yang ada pada Komputer dengan menggunakan command
prompt (perintah cmd) .
2. Pada jendela command prompt ketikkan perintah berikut
MENGISIKAN DATA KE DALAM TABEL JURUSAN.
1. Mengisikan satu baris
2. Mengisikan lebih dari satu baris, tambahkan tanda koma (,) setelah data
pertama( setelah tanda tutup kurung)
21
Dengan perintah insert isikan data berikut kedalam table jurusan :
Kode Jurusan Nama Jurusan Jenjang Akreditasi
TI TEKNIK INFORMATIKA S1 B
SI SISTEM INFORMASI S1 B
TK TEKNIK KOMPUTER D3 B
KA KOMPUTERISASI AKUNTANSI D3 B
MTI MAGISTER TEKNOLOGI INFORMASI S2 C
22
7. Menghapus DATA pada Tabel
Menghapus data jurusan dengan kode jurusan TK
DELETE FROM JURUSAN
WHERE KODE_JUR=’TK’;
LATIHAN
1. Buatlah perintah INSERT untuk mengisikan data kedalam table yang dibuat
pada pertemuan ke-2 (MAHASISWA, DOSEN dan KRS) minimal 10 Record untuk
masing-masing Tabel
2. Dari TABEL MATAKULIAH
1) Tampilkan data matakuliah dengan STATUS=W (wajib) dan SKS=3
2) Tampilkan data Matakuliah untuk Semester 1 dengan Status W (wajib)
23
TUGAS
REFERENSI
24
MODUL 4
DATA MANIPULATION LANGUANGE
( QUERY TABEL TUNGGAL )
CAPAIAN PEMBELAJARAN
KEBUTUHAN ALAT/BAHAN/SOFTWARE
1. Basis Data MySQL (versi apapun), boleh dalam bentuk paket seperti XAMPP
DASAR TEORI
Keterangan:
- SELECT digunakan untuk menunjukkan daftar field yang akan ditampilkan.
DISTINCT digunakan untuk menghilangkan duplikasi hasil query
- FROM untuk menunjukkan dari tabel mana data-data akan diambil
- WHERE berisi kondisi dari query. Pada klausa ini terdapat
operator: =, <>, <, >, <=, >=, serta
25
operasi logika AND, OR, XOR yang digunakan sebagai kondisi. 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.
Ada satu operator yang sering digunakan untuk kondisi berupa data string, yaitu
LIKE. 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 “ _ “.
Adapun operator perbandingan dalam query ada beberapa jenis, seperti yang
ditampilkan pada tabel berikut.
Daftar Operator Perbandingan
Operator Arti
= Sama dengan
> Lebih besar dari
>= Lebih besar atau sama dengan
< Kurang dari
<= Kurang dari atau sama dengan
<> Tidak sama dengan
!= Tidak sama dengan
^= Tidak sama dengan
BETWEEN Suatu kondisi yang berada di antara 2 value
… AND …
IN(set) Yang cocok dengan salah satu yang terdapat dalam set
LIKE Yang cocok dengan pola karakter tertentu
IS NULL Jika value-nya merupakan merupakan nilai null
Catatan:
Operator BETWEEN … AND … digunakan untuk menampilkan baris
berdasarkan range sebuah nilai yang terletak di samping kiri-kanan kata
AND. Jika tidak memenuhi yang berada di dalam range dimaksud, dapat
menggunakan NOT BETWEEN … AND …
Operator IN (set) digunakan untuk menunjukkan satu kumpulan himpunan
yang memenuhi. Jika tidak memenuhi yang berada dalam himpunan
tersebut, digunakan NOT IN (set).
Operator LIKE merupakan sebuah kondisi untuk melakukan pencarian
wildcard terhadap sebuah string dimana:
26
- Tanda % menunjukkan banyak karakter
- Tanda _ menunjukkan satu karakter
Operator IS NULL digunakan untuk mencari data yang tidak ada isinya
(kosong). Jika mencari yang isinya tidak kosong, dapat digunakan klausa IS
NOT NULL.
Logika Kondisi
Operator Arti
AND Menghasilkan TRUE apabila kedua komponen benar
OR Menghasilkan TRUE apabila salah satu komponen
benar
NOT Menghasilkan TRUE apabila kondisinya false
Semua operator yang telah dijelaskan di atas memiliki urutan tertentu dalam
pengerjaannya, yang ditunjukkan pada tabel di bawah ini. Urutan ini dapat
dilanggar dengan menggunakan tanda kurung pada bagian perintah yang akan
dikerjakan terlebih dahulu.
Urutan
Operator
Pengerjaan
1 Operator aritmetika
2 Operator penggabungan
3 Operator perbandingan
4 IS [NOT] NULL, LIKE, [NOT] IN
5 [NOT] BETWEEN
6 Kondisi logika NOT
7 Kondisi logika AND
8 Kondisi logika OR
27
- GROUP BY berisi field-field yang akan dikelompokkan (akan dibahas
kemudian)
- HAVING merupakan kondisi dari pengelompokan data (akan dibahas
kemudian)
- ORDER BY digunakan untuk mengurutkan data berdasarkan field tertentu.
Dapat berupa urut naik (ascending) atau urut turun (descending)
PRAKTIK
28
('MK13','PENGANTAR TEK INFORMASI',3,1,'W'),
('MK14','ALORITMA DAN PEMROGRAMAN',3,1,'W'),
('MK15','SISTEM OPERASI',2,1,'W'),
('MK21','SISTEM BASIS DATA',2,2,'W'),
('MK22','PRAK SISTEM BASIS DATA',2,2,'W'),
('MK23','PEMROGRAMAN WEB',3,2,'W');
29
7. Menampilkan Data Mahasiswa (NIM,NAMAMHS,KODE_JUR,JK) dengan
jurusan MI,TK dan KA.
SELECT NIM,NAMAMHS,KODE_JUR,JK
FROM MAHASISWA
WHERE KODE_JUR IN('MI','KA','TK');
LATIHAN
30
TUGAS
Kerjakan tugas berikut ini. Materi tugas didasarkan dari praktikum pertemuan
sebelumnya.
REFERENSI
31
MODUL 5
DATA MANIPULATION LANGUANGE
( QUERY BANYAK TABEL )
CAPAIAN PEMBELAJARAN
1. Mahasiswa mampu mengambil data dari banyak tabel dengan perintah join
2. Mahasiswa mampu menjelaskan dan membuktikan konsep relasional
database dengan perintah SQL
3. Memahami keterhubungan entitas di dalam basis data.
4. Memahami jenis-jenis operasi pengambilan data di beberapa entitas
KEBUTUHAN ALAT/BAHAN/SOFTWARE
5. Basis Data MySQL (versi apapun), boleh dalam bentuk paket seperti XAMPP
DASAR TEORI
1. Relationship
Relationship adalah suatu hubungan antara beberapa entitas. Konsep ini
sangat penting sekali di dalam basis data, di mana memungkinkan
entitas-entitas untuk saling berhubungan satu sama lain. Didalam sebuah
relationship, primary key memiliki peran penting untuk mengaitkan
entitas. Selain itu, primary key juga digunakan untuk mendefinisikan
batasan keterhubungan.
32
2. Join
Join merupakan salah satu kontruksi dasar dari SQL dan basis data. Join
dapat didefinisikan sebagai kombinasi record dari dua atau lebih table di
dalam basis data relasional dan menghasilkan sebuah tabel (temporary)
baru yang disebut sebagai joined tabel.
Join dapat diklasifikasikan ke dalam dua jenis, yaitu inner join dan outer
join.
a. Inner Join
Inner join pada dasarnya adalah menemukan persimpangan (intersection)
antara dua buah tabel.
Sintaks inner join diperlihatkan sebagai berikut :
Inner join juga dapat direpresentasikan dalam bentuk implisit sebagai berikut :
Misalkan terdapat table A dan B, maka hasil inner join dapat diperlihatkan
sebagai bidang terasir dalam diagram Venn seperti Gambar 1.
33
Gambar 1. Inner Join
b. Outer Join
Outer join dibagi ke dalam tiga jenis, yaitu :
- left outer join,
- right outer join dan
- full outer join.
1) Left Outer Join
Left outer join atau left join mengembalikan semua nilai dari table kiri ditambah
dengan nilai dari tabel kanan yang sesuai atau NULL jika tidak ada nilai yang
sesuai.
Sintaks left outer join diperlihatkan sebagai berikut :
Dimana :
A1,A2..An adalah nama field pada Tabel
r1 = Tabel Pertama yang akan di joinkan (Left Table)
r2 = Tabel kedua yang dijoinkan dengna table pertama
Left outer join antar tabel A dan B dapat diilustrasikan dalam diagram Venn
seperti Gambar 2.
34
2) Right Outer Join
Right outer join atau right join pada dasarnya sama seperti left join, namun dalam
bentuk terbalik, kanan dan kiri.
Sintaks right outer join diperlihatkan sebagai berikut :
Right outer join antara table A dan B dapat diilustrasikan dalam diagram Venn
seperti Gambar 3.
Bentuk visual dari full outer join dapat diperlihatkan menggunakan diagram Venn
seperti Gambar 4.
35
Gambar 4. Full Outer Join
Selain empat jenis join yang utama di atas, masih ada beberapa variasi join lainnya,
seperti CROSS JOIN (cartesian product), NATURAL JOIN dan sebagainya.
Perlu juga diperhatikan, join bisa diimplementasikan dalam bentuk bersarang
(nested join). Jadi, di dalam sebuah operasi join bisa terdapat operasi join lainnya.
PRAKTIK
36
('MK12','AGAMA',2,1,'W'),
('MK13','PENGANTAR TEK INFORMASI',3,1,'W'),
('MK14','ALORITMA DAN PEMROGRAMAN',3,1,'W'),
('MK15','SISTEM OPERASI',2,1,'W'),
('MK21','SISTEM BASIS DATA',2,2,'W'),
('MK22','PRAK SISTEM BASIS DATA',2,2,'W'),
('MK23','PEMROGRAMAN WEB',3,2,'W');
SELECT
37
KRS.NIM,
MAHASISWA.NAMAMHS,
KRS.KODE_MKUL,
MATAKULIAH.NAMA_MATAKULIAH,
MATAKULIAH.SKS,
KRS.NID,
DOSEN.NAMA_DOSEN,
KRS.SEMESTER,
KRS.TAHUN_AKADEMIK,
KRS.NILAI
FROM KRS JOIN MAHASISWA ON KRS.NIM=MAHASISWA.NIM
JOIN MATAKULIAH ON KRS.KODE_MKUL=MATAKULIAH.KODE_MKUL
JOIN DOSEN ON KRS.NID=DOSEN.NID;
SELECT
KRS.NIM,
MAHASISWA.NAMAMHS,
KRS.KODE_MKUL,
MATAKULIAH.NAMA_MATAKULIAH,
MATAKULIAH.SKS,
KRS.NID,
DOSEN.NAMA_DOSEN,
KRS.SEMESTER,
KRS.TAHUN_AKADEMIK,
KRS.NILAI
FROM KRS JOIN MAHASISWA ON KRS.NIM=MAHASISWA.NIM
JOIN MATAKULIAH ON KRS.KODE_MKUL=MATAKULIAH.KODE_MKUL
JOIN DOSEN ON KRS.NID=DOSEN.NID AND KRS.NIM=’19311001’;
11. Menampilkan Data Matakuliah yang belum diambil oleh mahasiswa dengan NIM
tertentu menggunakan LEFT JOIN :
SELECT
MATAKULIAH.KODE_MKUL,
MATAKULIAH.NAMA_MATAKULIAH,
KRS.NIM
FROM MATAKULIAH LEFT JOIN KRS
ON MATAKULIAH.KODE_MKUL=KRS.KODE_MKUL AND KRS.NIM=’19311001’;
38
Jalankan SQL diatas, hasil Query adalah sebagai berikut :
Dari hasil tersebut pada kolom NIM yang ada beberapa kode_Mkul berisi NULL,
yang artinya bahwa Kode_MKUL tersebut belum diambil/belum ada didalam KRS
mahasiswa.
LATIHAN
1. Lihat perintah SQL pada praktik No.7, gantilah join menggunakan perintah
WHERE, amati dan cetak hasilnya
2. Lihat perintah SQL pada praktik No.10, gantilah join menggunakan perintah
WHERE, amati dan cetak hasilnya
3. Tampilkan data mahasiswa yang mengambil matakuliah dengan kode
matakuliah MK11. ( data yang ditampilkan adalah
NIM,Nama_Mahasiswa,Nama_Jurusan,Kode_Mkul)
4. Tampilkan Daftar MK dengan status Wajib yang belum diambil oleh
mahasiswa dengan NIM=19311001
TUGAS
39
Kerjakan tugas berikut ini. Materi tugas didasarkan dari praktikum pertemuan
sebelumnya.
REFERENSI
40
MODUL 6
BUILT IN FUNCTION
( DATE,STRING,MATHEMATIC)
CAPAIAN PEMBELAJARAN
KEBUTUHAN ALAT/BAHAN/SOFTWARE
1. Basis Data MySQL (versi apapun), boleh dalam bentuk paket seperti
XAMPP
DASAR TEORI
1. FUNGSI DATE
1) Fungsi CURDATE() untuk menghasilkan tanggal hari ini
2) Fungsi CURTIME() untuk menghasilkan waktu saat ini
3) Fungsi NOW() untuk menghasilkan tanggal dan jam saat ini
4) Fungsi DATE() untuk menghasilkan hanya bagian tanggal dari tanggal dan
jam.
5) Fungsi DAYNAME(date) Untuk mendapatkan informasi nama hari dari
tanggal tertentu
6) Fungsi MONTH(date) untuk mendapatkan informasi hanya bulan saja
7) Fungsi YEAR() untuk menghasilkan tahun dari suatu tanggal
41
8) Fungsi ADDDATE() untuk menghasilkan tanggal beberapa HARI atau BULAN
kemudian.
9) Fungsi DATEDIFF() menghasilkan selisih tanggal
3. FUNGSI MATHEMATIC
1) Round()
Fungsi ini digunakan untuk membulatkan bilangan desimal menjadi
satu nilai diatasnya atau dibawahnya.
2) Ceiling
42
Fungsi ini digunakan untuk membulatkan bilangan desimal menjadi
satu nilai diatasnya.
3) Floor
Fungsi ini digunakan untuk membulatkan bilangan desimal menjadi
satu nilai dibawahnya.
4) Abs
Fungsi ini digunakan untuk mendapatkan nilai absolut atau nilai
positif dari suatu bilangan.
5) Div
Fungsi ini digunakan untuk mendapatkan nilai hasil pembagian dari
dua buah bilangan.
6) Mod
Fungsi ini digunakan untuk mendapatkan sisa pembagian.
7) Pow atau Power
Fungsi ini digunakan untuk mencari nilai pangkat dari suatu
bilangan.
8) Rand
Fungsi ini digunakan untuk menghasilkan susunan angka random.
Cara penggunaan:
9) Sqrt
Fungsi ini digunakan untuk mencari nilai akar kuadrat dari suatu
bilangan.
4. FUNGSI AGREGASI
PRAKTIK
43
3) SELECT NOW();
Apa perbedaan hasil perintah no 3 dengan perintah no 1 dan 2 ?
Amati hasilnya, cetak dan jelaskan didalam laporan saudara.
6) SELECT DATEDIFF('2020-02-01','2020-04-01');
Amati hasilnya, Mengapa ada tanda (minus) pada hasil ? cetak dan
jelaskan didalam laporan saudara.
7) SELECT DATEDIFF('2020-04-01','2020-02-01');
Apa perbedaan hasil perintah no 7 dengan perintah no 6 ?
Amati hasilnya, cetak dan jelaskan didalam laporan saudara.
9) SELECT DATEDIFF('2020-04-01','2020-02-01');
Apa perbedaan hasil perintah no 5 dengan perintah no 4 ?
Amati hasilnya, cetak dan jelaskan didalam laporan saudara.
3. Fungsi STRING
Praktik :
1) Buka Database Akademik;
2) Tampilkan data yang ada di tabel Mahasiswa dengan Perintah :
SELECT * FROM MAHASISWA;
Amati hasilnya.
3) Mengubah Nama Mahasiswa menjadi huruf kecil semua
SELECT
NIM,
LOWER(NAMA_MHS)
FROM MAHASISWA;
44
Amati data pada kolom Nama_Mhs, apakah ada perbedaan dengan isi
data pada perintah praktik 3.2 ? cetak dan jelaskan didalam laporan
saudara.
’KIM’ adalah bagian string yang akan dicari dari suatu String ’YOHAKIM
MARWANTA’ Hasilnya berupa posisi/letak urutan karakter KIM dihitung
dari Karakter pertama
SELECT CHAR(65);
45
9) Mengambil beberapa karakter dari suatu string menggunakan fungsi
SUBSTR.
4. Fungsi Mathematik
1) Membulatkan bilangan Pecahan dengan ROUND
SELECT ROUND(3,77);
Amati hasilnya, cetak dan jelaskan didalam laporan saudara
SELECT ROUND(3.778,2);
Apa perbedaan dengan perintah ROUND diatasnya? cetak hasilnya dan
jelaskan didalam laporan saudara
SELECT CEIL(2.38);
SELECT FLOOR(2.20);
SELECT ABS(-32.20);
46
5) Mendapatkan sisa pembagian
SELECT MOD(5,2);
SELECT POW(3,2);
SELECT SQRT(16);
LATIHAN
47
TUGAS
Kerjakan tugas berikut ini. Materi tugas didasarkan dari praktikum pertemuan
sebelumnya.
REFERENSI
48
MODUL 7
BUILT IN FUNCTION
Fungsi Agregasi
CAPAIAN PEMBELAJARAN
KEBUTUHAN ALAT/BAHAN/SOFTWARE
2. Basis Data MySQL (versi apapun), boleh dalam bentuk paket seperti
XAMPP
DASAR TEORI
A. FUNGSI AGREGASI
Selain Fungsi bawaan seperti fungsi Date, String dan Mathematik, Mysql
juga menyediakan fungsi bawaan untuk melakukan agregasi terhadap
data-data yang ada. Fungsi agregasi pada MySQL meliputi :
COUNT(expression)
2. Sum :Untuk mendapatkan nilai total suatu atribut numerik hasil query.
49
Fungsi Sum akan menjumlahkan isi dari kolom/field pada suatu table,
bisa kolom yang sama atau kolom yang berbeda.
Sintak :
SUM(expression)
Sintak :
AVG(expression)
Sintak :
MAX(expression)
5. Min :Untuk mendapatkan nilai terkecil suatu atribut numerik hasil query.
Sintak :
MAX(expression)
50
FROM nama_tabel
WHERE kondisi
GROUP BY nama_field_kelompok
HAVING kondisi_agregasi
ORDER BY nama_field_yang_diurutkan
Keterangan:
- SELECT (sudah dibahas pada modul sebelumnya)
- FROM (sudah dibahas pada modul sebelumnya)
- WHERE (sudah dibahas pada modul sebelumnya)
PRAKTIK
51
('B',3),
('C',2),
('D',1),
('E',0);
52
4. Menggunakan Fungsi Agregasi
1) COUNT
a. Menghitung Jumlah semua Mahasiswa pada tabel mahasiswa :
HASIL :
SELECT
COUNT(NIM) AS JUMLAH_MHS_MI
FROM MAHASISWA
WHERE KODE_JUR='MI';
Hasil :
53
o Dengan cara yang sama lakukan untuk menghitung mahasiswa
jurusan TI,SI,KA dan TK, cetak hasilnya dan berikan penjelasan
pada laporan.
o Dengan cara yang sama lakukan untuk menghitung mahasiswa
dengan jenis Kelamin Laki-laki (L) dan Perempuan (P)
2) SUM
a. Tampilkan Isi Tabel Matakuliah dengan perintah :
HASILNYA :
54
b. Menjumlahkan Total SKS untuk Matakuliah Semester 1.
HASIL :
3) MAX
a. Tampilkan NID,NAMA_DOSEN,JURUSAN DAN
TANGGAL_LAHIR dari Tabel Dosen dengan perintah :
SELECT
NID,
NAMA_DOSEN,
JURUSAN,
TANGGAL_LAHIR
FROM DOSEN;
HASILNYA :
55
b. Menampilkan NID,Nama_dosen, Jurusan dan Tanggal_Lahir
Dosen dengan Tahun Lahir Paling akhir (Dosen termuda)
SELECT
NID,
NAMA_DOSEN,
JURUSAN,
MAX(YEAR(TANGGAL_LAHIR)) AS TAHUN_LAHIR_DOSEN_TERMUDA
FROM DOSEN;
HASIL :
4) MIN
a. Menampilkan NID,Nama_dosen, Jurusan dan Tanggal_Lahir
Dosen dengan Tahun Lahir Paling Awal (Dosen Paling Tua)
SELECT
NID,
NAMA_DOSEN,
JURUSAN,
MIN(YEAR(TANGGAL_LAHIR)) AS TAHUN_LAHIR_DOSEN_TERMUDA
FROM DOSEN;
5. Group By
1) Tampilkan isi data tabel mahasiswa, amati hasilnya
2) Mengetahui Jurusan yang memilik Mahasiswa, Ketikkan
perintah berikut :
SELECT
56
KODE_JUR
FROM MAHASISWA
GROUP BY KODE_JUR;
HASIL :
SELECT
KODE_JUR,
COUNT(NIM) AS JUMLAH
FROM MAHASISWA
GROUP BY KODE_JUR;
57
6. Having
SELECT
J.NAMA_JURUSAN,
COUNT(M.NIM) AS JUMLAH_MAHASISWA
FROM MAHASISWA M JOIN JURUSAN J
ON M.KODE_JUR=J.KODE_JUR
GROUP BY J.KODE_JUR
HAVING JUMLAH_MAHASISWA >= 3;
Hasil :
7. ORDER BY
a. Mengurutkan data mahasiswa urut berdasarkan
Nama_Mahasiswa.
58
HASIL :
Hasil :
59
Amati pada kolom/field Nama_mhs perhatikan urutan nama
mahasiswa ( disajikan urut turun / Descending)
8. LIMIT
SELECT K.NIM,M.NAMA_MHS,J.NAMA_JURUSAN,
SUM(MK.SKS*BN.BOBOT)/SUM(SKS) AS IPK
FROM KRS K JOIN MAHASISWA M ON K.NIM=M.NIM
JOIN MATAKULIAH MK ON K.KODE_MKUL=MK.KODE_MKUL
JOIN JURUSAN J ON M.KODE_JUR=J.KODE_JUR
JOIN BOBOTNILAI BN ON K.NILAI=BN.NILAI
GROUP BY K.NIM
ORDER BY IPK DESC
LIMIT 3;
HASIL :
SELECT K.NIM,M.NAMA_MHS,J.NAMA_JURUSAN,
SUM(MK.SKS*BN.BOBOT)/SUM(SKS) AS IPK
FROM KRS K JOIN MAHASISWA M ON K.NIM=M.NIM
JOIN MATAKULIAH MK ON K.KODE_MKUL=MK.KODE_MKUL
JOIN JURUSAN J ON M.KODE_JUR=J.KODE_JUR
JOIN BOBOTNILAI BN ON K.NILAI=BN.NILAI
GROUP BY K.NIM
ORDER BY IPK DESC
LIMIT 3;
60
HASIL :
LATIHAN
TUGAS
Kerjakan tugas berikut ini. Materi tugas didasarkan dari praktikum pertemuan
sebelumnya.
61
REFERENSI
62
MODUL 8
KONSEP VIEW (SQL VIEW)
CAPAIAN PEMBELAJARAN
KEBUTUHAN ALAT/BAHAN/SOFTWARE
2. Notepad++
3. MySQL
DASAR TEORI
3. View
Merupakan salah satu objek database, yang secara logika mereprese ntasikan sub
himpunan dari data yang berasal dari satu atau lebih tabel. Kegunaan view adalah
untuk membatasi akses database, membuat query kompleks secara mudah,
mengijinkan independensi data dan untuk menampilkan view (pandangan) data
yang berbeda dari data yang sama. Views di MySQL mulai disediakan padaversi 5.0.
Views merupakan suatu tampilan tabel virtual. Views berisi perintah SELECT ke tabel
dalam database. Views dapat digunakan untuk mempermudah kita dalam
pembuatan laporan atau tampilan database yang diinginkan dengan cepat. Dengan
kata lain, views merupakan perintah SELECT yang disimpan, sehingga setiap saat kita
membutuhkannya, kita dapat langsung memanggilnya tanpa perlu mengetikkan
perintah SELECT kembali.
63
5. Tipe View
View memiliki dua tipe , yaitu simple view dan complex view. Perbedaan dari tipe
view tersebut terletak dari fitur query yang digunakan didalam pembuatan view,
untuk mendapatkan data aktual dari tabel dengan perbandingannya adalah sebagai
berikut :
Fitur Simple View Complex View
Jumlah tabel Satu Lebih dari 1
Berisi fungsi Tidak Ya
Berisi group Tidak Ya
DML Melalu view Ya Tidak selalu
6. Membuat View
View dibuat atau didefinisikan dengan menggunakan perintah CREATE VIEW.
Bentuk umum perintah untuk membuat (mendefinisikan) view, sebagai berikut:
CREATE [OR REPLACE] [<algorithm attributes>]
VIEW [database.]< name> [(<columns>)]
AS <SELECT statement> [<check options>];
Contoh:
CREATE VIEW mahasiswa AS
SELECT nim, nama, alamat
FROM mhs
ORDER BY nama;
7. Mengakses View:
Akses terhadapa sebuah view dapat dilakukan dengan menggunakan perintah
SELECT seperti halnya menampilkan data dari suatu tabel.
SELECT * FROM mahasiswa [nama view];
8. Mengubah View
View yang sudah dibuat, dapat diubah dengan perintah ALTER. Bentuk umum
perintah untuk mengubah view yang sudah ada, sebagai berikut:
ALTER VIEW nama_view AS select_statement
Contoh:
ALTER VIEW mahasiswa AS
select * from mhs order by nim
9. Menghapus View
View yang sudah dibuat, dapat dihapus dengan perintah DROP. Berikut ini bentuk
umum dan contoh perintah untuk menghapus view.
DROP VIEW nama_view;
Contoh :
DROP VIEW mahasiswa;
64
PRAKTIK
4. Mengakses view
Tampilkan data yang telah didefinisikan dalam sebuah view dengan perintah
berikut:
5. Mengubah view
65
Untuk mengubah view yang sudah dibuat, dapat dilakukan mengan menggunakan
perintah ALTER. Tuliskan perintah berikut:
Tampilkan view yang sudah diubah dan perhatikan hasilnya. Jelaskan dalam
laporan.
6. Menghapus view
Hapuslah view yang sudah berhasil dibuat dengan menggunakan perintah DROP
Perhatikan daftar view dan jelaskan dalam laporan apa yang terjadi.
66
Japankan view tersebut, perhatikan hasilnya dan tulislah dalam laporan
LATIHAN
3. Definisikan view untuk mendapatkan data mahasiswa yang hanya mengambil sks
lebih dari 2 sks!
4. Definisikan view dosen yang mengajar mahasiswa beserta jumlah mahasiswa yang
diajar!
5. Definisikan complex view dari tugas praktikum nomor 2 hanya dosen yang
mengajar mahasiswa terbanyak!
6. Ubah atau tambahkan data pada masing-masing tabel yang akan terlibat dalam
pembuatan view tersebut.
TUGAS
REFERENSI
67
MODUL 9
SUB QUERY
CAPAIAN PEMBELAJARAN
1. Mahasiswa Menguasai cara dan penerapan subquery sederhana di dalam basis data
2. Mahasiswa Menguasai cara dan penerapan subquery dengan menggunakan operator
komparasi
KEBUTUHAN ALAT/BAHAN/SOFTWARE
1. Notepad++
2. MySQL
DASAR TEORI
1. Sub Query
Subquery atau Inner query atau Nested query adalah query dalam query SQL lain
dan tertanam dalam klausa WHERE. Sebuah subquery digunakan untuk
mengembalikan data yang akan digunakan dalam query utama sebagai syarat untuk
lebih membatasi data yang akan diambil. Mulai versi 4.1, MySQL mendukung
perintah query subquery dimana memungkinkan untuk melakukan query di dalam
query. Misalnya kita akan menampilkan data yang kondisinya merupakan hasil dari
query lain. Subquery merupakan suatu query seperti halnya query biasa yang
berjalan di dalam query induk / master. Sub query dapat digunakan untuk
mengambil suatu data di field / kolom pada tabel lain,Ilustrasi sebagaimana gambar
berikut:
68
Perintah subquery memiliki banyak variasi. Berikut ini beberapa variasi bentuk
perintah.
SELECT ... WHERE col=[ANY|ALL] (SELECT ...);
SELECT ... WHERE col [NOT] IN (SELECT ...);
SELECT ROW(val1,val2,..) =[ANY] (SELECT col1,col2,..);
SELECT ... WHERE col = [NOT] EXISTS (SELECT ...);
SELECT ... FROM (SELECT ...) AS name WHERE ...;
Dalam aplikasi yang menggunakan database tidak akan pernah terlepas dalam
perolehan kembali data. Untuk memunculkan data yang dikemas lebih baik agar
memudahkan pengguna data untuk mengerti dan memahami data tentunya tidak
akan terlepas dari query-query sql yang lebih komplek apalagi data antara table satu
dengan table lainnya saling berhubungan. Sangat panjang jika kita menulis subquery
dalam satu baris(baris tunggal) dan multiple-row subqueris(banyak baris) dimana
hanya satu kolom saja yang ingin ditampilkan dengan perintah select dan ini
digunakan untuk mengevaluasi dari expression dalam induk perintah select. Jika kita
ingin membandingkan dua atau lebih kolom, kita harus menulis sebuah gabungan
klausa WHERE menggunakan operator logika. Menggunakan multiple-subqueries,
kita dapat mengkombinasikan duplikat kondisi where ke dalam satu klausa WHERE.
PRAKTIK
1. Scalar Subquery
Contoh subquery baris tunggal adalah mendapatkan data mahasiswa yang jenis
kelaminnya sama dengan mahasiswa dengan nama “Rahmat Umam”.
Tulislah perintah sub query berikut dan jalankan.
69
subquery tersebut menghasilkan data sebagai berikut.
Amati hasilnya proses yang terjadi dan dan jelaskan dalam laporan.
70
subquery tersebut menghasilkan data sebagai berikut.
Jalankan, amati hasil dan proses yang terjadi dan dan jelaskan dalam laporan.
2. Multiple-Row Subquery
Pada subquery ini, kita menggunakan operator komparasi IN, ANY / SOME,
atau ALL.
a. Operator IN
Operator IN memiliki arti : sama dengan member di dalam list. Sebagai
contoh, kita bisa menggunakan operator ini untuk mendapatkan data dosen
yang mengajar matakuliah.
b. Operator ANY/SOME
Operator ANY / SOME memiliki arti : membandingkan suatu nilai dengan
setiap nilai yang dikembalikan oleh subquery. Misalkan kita ingin
mendapatkan data matakuliah yang memiliki sks lebih besar dari sembarang
sks matakuliah di semester 3.
71
Perhatikan hasil tersebut dan jelaskan dalam laporan.
Cobalah perintah sub query diatas dengan mengganti operator ANY dengan
SOME. Lihat hasilnya dan jelaskan dalam laporan.
c. Operator ALL
Operator ALL memiliki arti: membandingkan suatu nilai dengan semua
nilai yang dikembalikan oleh sub query. Misal, kita ingin mendapatkan data
matakuliah yang memiliki sks lebih besar dari semua sks matakuliah di
semester 6.
Sebelumnya tambahkan sebuah data pada tabel matakuliah (Kode_mkul=TI99,
Nama_matakuliah=BIG Data, SKS=2, Semester=1 dan Status=P)
Selanjutnya berikan perintah sub query berikut:
3. Multiple-ColumnSubquery
Subquery kolom ganda (atau tabel) juga menggunakan operator komparasi IN,
ANY/ SOME, atau ALL. Pada query ini, nilai dari subquery dalam bentuk kolom
ganda dikomparasi main query. Sebagai contoh, misalkan kita ingin
menampilkan data matakuliah yang semester dan sksnya sesuai dengan
semester dan sks matakuliah dengan kode “KA02”.
Tulislah perintah sub query berikut:
72
Perhatikan hasil tersebut dan jelaskan pada laporan.
b. NOT EXISTS
Pernyataan berikut akan mendapatkan data matakuliah yang tidak diambil oleh
mahasiswa pada semester genap.
73
Perhatikan hasil tersebut dan jelaskan pada laporan.
LATIHAN
1. Dapatkan kode dan nama matakuliah dosen yang berasal dari kota Klaten
2. Dapatkan data mahasiswa yang tidak mengambil matakuliah.
3. Dapatkan data dosen yang mengajar matakuliah diatas semester ganjil tahun
2020.
4. Silahkan menambahkan data yang dibutuhkan untuk mendapatkan hasil dari
perintah yang diberikan
TUGAS
1. Dapatkan data dosen yang mengajar matakuliah dengan sks lebih besar dari
3 sks.
2. Dapatkan data mahasiswa yang tinggal satu kota dengan dosen
3. Dapatkan data mahasiswa yang diajar oleh dosen yang bernama “Indri”.
4. Silahkan menambahkan data yang dibutuhkan untuk mendapatkan hasil dari
perintah yang diberikan
REFERENSI
74
MODUL 10
STORED PROCEDURE DAN STORED FUNCTION
CAPAIAN PEMBELAJARAN
1. Mahasiswa Menguasai cara membuat dan menerapkan stored procedure pada sebuah
DBMS dengan benar
2. Menguasai cara membuat dan menerapkan stored function pada sebuah DBMS dengan
benar
KEBUTUHAN ALAT/BAHAN/SOFTWARE
1. Notepad++
2. MySQL
DASAR TEORI
1. PL/SQL
MySQL adalah bahasa prosedural yang digunakan untuk mengoptimalkan
pembuatanaplikasi database yang menggunakan database MySQL. Kata PL pada
PL/SQL merupakan singkatan dari Procedural Language. Dalam PL/SQL dapat
digunakan perintah untuk memanipulasi data yang ada dalam database MySQL.
PL/SQL MySQL membentuk pemrograman terstruktur dalam memproses data. Pada
PL/SQL ditambahkan beberapa hal yang dikenal pada dunia pemrograman, seperti
variabel, loop, pemrosesan kondisi, operasi cursor, modularisasai, dan hal-hal
lainnya. Semua tambahan itu bertujuan untuk meningkatkan kinerja operasi-operasi
SQL pada database MySQL sehingga manfaat dari kehandalannya menjadi
maksimal. Perbedaan SQL dan PL/SQL adalah sebagai berikut:
SQL adalah bahasa deklaratif untuk database yg sudah distandarkan secara
internasional (ANSI dan ISO), jadi seharusnya semua database yg menggunakan
SQL standar akan memiliki statement/syntax yg sama, baik di Oracle, MySQL
atau database lainnya. Tetapi beberapa database memang memiliki
statement/syntax proprietary yg hanya dikenali di database itu sendiri dan ini
tentu saja bukan standar SQL.
Sementara PL/SQL adalah ekstensi dari SQL dengan menambahkan fungsi
bahasa prosedural. Berbeda dengan SQL yg hanya mementingkan bagaimana
mendapatkan hasil, dengan PL/SQL juga akan diketahui bagaimana proses untuk
mendapatkan hasil tersebut. Karena PL/SQL merupakan bahasa prosedural,
75
maka statement/syntax yg digunakan sangat tergantung dari jenis bahasa yg
diadopsi.
PL/SQL dapat dibagi menjadi tiga, yaitu: prosedur, fungsi, dan trigger (dibahas lebih
lanjut pada pertemuan berikutnya). Prosedur dan fungsi bekerja berdasarkan
eksekusi langsung dari user/program, sedangkan trigger akan bekerja secara
otomatis apabila terjadi aktivitas insert, update atau delete data.
2. Storage Procedure
Stored Procedure adalah sebuah prosedur layaknya subprogram (subrutin) di dalam
bahasa pemrograman reguler yang tersimpan di dalam katalog basis data. Beberapa
kelebihan yang ditawarkan stored procedure antara lain : mengingkatakan
performa, mereduksi trafik jaringan, reusable, dan meningkatkan kontrol sekuriti.
Di balik kelebihan tersebut, stored procedure juga memiliki kekurangan. Di
antaranya adalah berpotensi meningkatkan beban server dan penulisnaya tidak
mudah (memerlukan pengetahuan yang spesifik).
Contoh sintaks stored procedure :
Untuk memanggil sotred preocedure, digunakan perintah CALL (beberapa DBMS
ada yang menggunakan EXECUTE). Dalam Implementasinya, penggunaan stored
procedure sering melibatkan parameter. Di MySQL, parameter stored procedure
dibedakan menjadi tiga mode yaitu IN, OUT, dan INOUT.
IN : Parameter yang merupakan mode default ini mengindikasikan bahwa sebuah
parameter dapat di-pass ke dalam stored procedure tetapi nilainya tidak dapat
diubah (dari dalam stored procedure
OUT : Mode ini mengindikasikan bahwa stored procedure dapat mengubah
parameter dan mengirimkan kembali ke program pemanggil
INOUT : Mode ini pada dasarnya merupakan kombinasi dari mode IN dan OUT.
Sintaks pendefinisan parameter diperlihatkan sebagai berikut :
Stored procedure dapat mencerminkan beragam operasi data, misalnya seleksi,
penambahan, pengubahan, penghapusan, dan juga operasi – oprasi DDL. Seperti
halnya procedure di dalam bahasa pemrograman, stored procedure juga dapat
melibatkan variabel, pernyataan kondisional, dan pengulangan. Bentuk umum
sebuah storage procedure adalah sebagai berikut:
CREATE PROCEDURE procedure1 /* name */
(IN|OUT|INOUT parameter1 INT) /* parameters */
BEGIN /*start of block*/
DECLARE variable1 CHAR(10); /* variables */
… /* statement */
SET variabel1 = 1; /* statement */
INSERT INTO table1 VALUES (variable1); /* statement */
… /* statement */
END /* end of block */
3. Stored Function
Dalam database server ada 2 ketegori fungsi: (1) fungsi aggregate adalah fungsi
fungsi bawaan yang terdapat pada sistem database tersebut, (2) fungsi yang
diciptakan oleh user sendiri.
76
Cara kerja fungsi fungsi “>hampir sama dengan Stored Procedure, namun fungsi
mempunyai ada yang parameter masukan ada yang tidak. Selain parameter fungsi
mengembalikan nilai balik lewat perintah RETURN. Bentuk umum sebuah stogare
function adalah sebagai berikut:
CREATE FUNCTION function1 /* name */
(parameter1 INTEGER) /* parameters */
RETURNS CHAR(10) /* returns value*/
BEGIN /*start of block*/
DECLARE variable1 CHAR(10); /* variables */
… /* statement */
SET variabel1 = “satu”; /* statement */
INSERT INTO table1 VALUES (variable1); /* statement */
… /* statement */
END /* end of block */
77
PRAKTIK
STORAGE PROCEDURE
1. Buatlah sebuah Stored Procedure berikut:
2. Melihat daftar storage procedure yang berhasil dibuat dapat dilakukan dengan
perintah berikut:
78
4. Menghapus sebuah stored procedure bernama MhsTK:
79
Amati hasil setiap percobaan penggunaan Procedure dan jelaskan dalam laporan
STORAGE FUNCTION
1. Buatlah sebuah Storage Function berikut:
2. Melihat daftar storage function yang berhasil dibuat dapat dilakukan dengan
perintah berikut:
80
4. Menghapus sebuah Stored Function bernama getNama
7. Fungsi HitungBobot juga dapat dipanggil dengan menyertakan perintah sql lainya.
cobalah perintah sql berikut:
81
Amati hasil setiap percobaan penggunaan Function dan jelaskan dalam laporan
LATIHAN
TUGAS
REFERENSI
82
MODUL 11
TRIGGER
CAPAIAN PEMBELAJARAN
KEBUTUHAN ALAT/BAHAN/SOFTWARE
3. Notepad++
4. MySQL
DASAR TEORI
1. Pengertian Trigger
Trigger digunakan untuk memanggil satu atau beberapa perintah SQL secara
otomatis sebelum atau sesudah terjadi proses INSERT, UPDATE atau DELETE dari
suatu tabel. Sebagai contoh misalnya kita ingin menyimpan id pelanggan secara
otomatis ke tabel ‘log’sebelum menghapus data di tabel pelanggan. Triggers mulai
dikenal di versi MySQL 5.0, dan di versi saat ini (5.0.4) fungsionalitasnya sudah
bertambah. Pada versi selanjutnya (5.1) pihak pengembang MySQL berjanji akan
lebih menguatkan (menambah) fitur trigger ini. Trigger sering digunakan, antara lain
untuk:
a. Melakukan update data otomatis jika terjadi perubahan. Contohnya adalah dalam
sistem penjualan, jika dientri barang baru maka stock akan bertambah secara
otomatis.
b. Trigger dapat digunakan untuk mengimplementasikan suatu sistem log. Setiap
terjadi perubahan, secara otomatis akan menyimpan ke tabel log.
c. Trigger dapat digunakan untuk melakukan validasi dan verifikasi data sebelum
data tersebut disimpan.
2. Membuat Trigger Baru
Berikut ini bentuk umum perintah untuk membuat triggers:
CREATE TRIGGER name
83
[BEFORE|AFTER] [INSERT|UPDATE|DELETE]
ON tablename
FOR EACH ROW statement
Dimana
BEFORE | AFTER digunakan untuk menentukan kapan proses secara otomatis akan
dieksekusi, sebelum atau sesudah proses.
INSERT | UPDATE | DELETE digunakan untuk menentukan event yang dijadikan
trigger untuk menjalankan perintah-perintah di dalam triggers.
Statement atau perintah dalam trigger dapat berupa satu perintah saja, dan dapat
juga beberapa perintahsekaligus. Jika terdapatbeberapa perintah dalam trigger,
maka gunakan perintah BEGIN dan ENDuntuk mengawali dan mengakhiri perintah.
Di dalam statement trigger, kita dapat mengakses record tabel sebelum atau sesudah
proses dengan menggunakan NEW dan OLD. NEW digunakan untuk mengambil
record yang akan diproses (insert atau update), sedangkan OLD digunakan untuk
mengakses record yang sudah diproses (update atau delete).
Berikut ini contoh trigger yang akan mencatat aktivitas ke tabel log setiap terjadi
proses insert ke tabel pelanggan:
DELIMITER $$
CREATE TRIGGER penjualan.before_insert BEFORE INSERT ON
penjualan.pelanggan
FOR EACH ROW BEGIN
INSERT INTO `log` (description, `datetime`, user_id)
VALUES (CONCAT('Insert data ke tabel pelanggan id_plg =
', NEW.id_pelanggan), now(), user());
END;
$$
DELIMITER ;
3. Menghapus Trigger
Untuk menghapus trigger, dapat menggunakan perintah DROP TRIGGER dengan
diikuti dengan nama tabel dan nama triggernya. Berikut ini bentuk umum dan contoh
perintah untuk menghapus trigger.
DROP TRIGGER tablename.triggername;
Contoh :
DROP TRIGGER penjualan.before_insert;
PRAKTIK
84
2. Buat sebuah trigger berikut
Dari hasi pembacaan tabel log_mhs, coba perhatikan dan jelaskan kegunaan Trigger
ins_Mhs
85
6. Ubahlah data Budi
Dari hasi pembacaan tabel log_mhs, coba perhatikan dan jelaskan kegunaan trigger
updt_mhs
Dari hasi pembacaan tabel log_mhs, coba perhatikan dan jelaskan kegunaan Trigger
del_mhs
86
11.Menghapus Trigger dapat dilakukan dengan perintah berikut:
LATIHAN
TUGAS
Buatlah sebuah trigger yang digunakan untuk menghitung jumlah sks yang diambil
seorang mahasiswa pada tahun_akademik dan semester tertentu. Buatlah catatan pada
tabel log_mhs yang berisi nim dan jumlah sks. Jika input data krs dilakukan lebih dari
satu kali oleh mahasiswa dengan nim yang sama, maka lakukan update pada tabel
log_mhs
REFERENSI
87
MODUL 12
TRANSACTION
CAPAIAN PEMBELAJARAN
Menguasai konsep ACID dan penerapannya ke dalam transaksi dalam sebuah basis data
KEBUTUHAN ALAT/BAHAN/SOFTWARE
5. Notepad++
6. MySQL
DASAR TEORI
1. Transaction/Traksaksi
MySQL merupakan software database berbasis client-server. Hal ini berarti bahwa
beberapa client dapat melakukan koneksi ke server MySQL secara bersamaan.
Masing-masing client dapat melakukan select, insert, update, maupun delete data di
server MySQL. Hal ini tentunya dapat menjadi masalah jika terjadi bentrok antar-
client.
Sebagai contoh dalam proses transaksi pemesanan barang. Jika terdapat 2 (dua)
pelanggan melakukan transaksi pada waktu yang sama, misalnya melakukan
pemesanan barang. Keduanya akan menambahkan data di tabel yang sama dan
mungkin saja data yang dimasukkan tertukar atau tidak valid. Hal ini tidak akan
terjadi jika pada saat satu pelanggan melakukan transaksi, pelanggan yang lain harus
menunggu sampai proses transaksi selesai. Untuk mengatur proses query yang
terjadi dalam suatu sistem yang memiliki user banyak (multi-user-system), kita dapat
memanfaatkan dua hal di MySQL. Pertamakita dapat mengunci tabel(table-locking).
Cara ini dapat dilakukan jika tipe tabel yang digunakan adalah MyISAM. Kedua, dapat
menggunakan perintah BEGIN, COMMIT dan ROLLBACK. Cara ini dapat dilakukan jika
tipe tabel adalah tabel transaksi, yaitu InnoDB.
Terdapat 4 (empat) prinsip dasar transaksi yang biasa disingkat sebagai ACID, yaitu:
a. Atomicity.
Atom merupakan komponen terkecil dari materi, atau sesuatu yang tidak dapat
dibagi-bagi lagi. Prinsip ini berlaku pada proses transaksi. Semua proses
(perintah) yang ada di dalam satu paket transaksi harus selesai semua atau tidak
selesai sama sekali. Dengan kata lain, dalam satu transaksi tidak boleh ada
proses (perintah) yang gagal dieksekusi.
b. Consistency.
88
Bahwa kegagalan satu proses dalam transaksi tidak akan mempengaruhi
transaksi lainnya.
c. Isolation.
Secara sederhana, bahwa data yang sedang digunakan dalam satu transaksi,
tidak dapat digunakan olehtransaksi lainnya sebelum seluruh proses transaksi
yang pertama selesai.
d. Durability.
Jika sebuah transaksi selesai dieksekusi, hasilnya tetap tercatat dengan baik.
2. Mengunci Tabel
Mengunci tabel (table-locking) dapat dilakukan untuk membatasi aksesterhadap
suatu tabel jika ada user yangsedang aktif mengakses tabel. Suatu tabel yang sedang
terkunci (locked), tidak dapat diakses dengan bebas oleh user lain. Untuk mengunci
tabel di MySQL dapat menggunakan kata kunci LOCK. Bentuk umum perintah LOCK :
LOCK TABLE table1 locktype, table2 locktype, ...;
Dimana tipe lock (locktype) yang dapat dipilih antara lain:
a. READ.
Semua user MySQL dapat membaca (mengakses) tabel, namun tabel tersebut
tidak dapat diubah oleh siapapun, termasuk user yang mengeksekusi perintah
LOCK. Dengan kata lain, tabel bersifat read-only.
b. READ LOCAL.
Sama seperti READ, tetapi perintah INSERT dapat dilakukan selama tidak
merubah record (data) yang ada.
c. WRITE.
User yang aktif diperbolehkan untuk membaca dan mengubah tabel (read-and-
write). User yang lain tidak dapat mengubah isi tabel, hanya dapat membaca
tabel (read-only).
d. LOW PRIORITY WRITE.
Seperti halnya WRITE, hanya saja user lain dapat melakukan READ LOCK. Untuk
membuka tabel yang terkunci, gunakan perintah UNLOCK TABLES;
Contoh table-locking:
> LOCK TABLES transREAD, customerWRITE;
> SELECT sum(value) FROM transWHERE customer_id=
some_id;
> UPDATE customerSET total_value=total WHERE
customer_id=some_id;
> UNLOCK TABLES;
89
Perintah transaksi diatur oleh client. Jika pada saat proses transaksi berlangsung,
koneksi client dengan server terputus, maka secara otomatis, MySQL akan
membatalkan semua perubahan yang sudah terjadi (seperti halnya mengeksekusi
perintah ROLLBACK).
Bentuk umum perintah transaksi :
BEGIN;
SELECT | INSERT | UPDATE | DELETE;
COMMIT;
Contoh :
> SET AUTOCOMMIT=0;
> BEGIN;
> INSERT INTO pesanVALUES(NULL,'P0001',now());
> SET @id:= LAST_INSERT_ID();
> INSERT INTO detil_pesanVALUES (@id,'B0001','2','2500');
> COMMIT;
4. Penanganan Kesalahan
Fasilitas penanganan kesalahan (error handling) biasa diperlukan untuk
mengantisipasi terjadinya kesalahan pada suatu proses transaksi, sehingga
programmer bisa mengatur skenario jika suatu operasi gagal sebagian atau
seluruhnya. Secara default skenario dari transaksi adalah AUTO COMMIT dimana
seluruh proses yang berhasil dilaksanakan akan secara otomatis secara fisik disimpan
dalam database. Jika diinginkan mulai dari posisi tertentu, maka AUTO COMMIT tidak
berfungsi, dapat digunakan perintah START TRANSACTION.
Selanjutnya suatu perintah sesudah pernyataan START TRANSACTION akan ditunda
untuk disimpan sampai bertemu pernyataan COMMIT yang akan menyimpan seluruh
proses yang tertunda, atau bertemu pernyataan ROLLBACK yang akan membatalkan
seluruh proses yang tertunda. Akan tetapi perlu diingat bahwa terdapat beberapa
perintah yang tidak dapat di ROLLBACK karena mengandung fungsi COMMIT secara
implisit. Perintah–peritah tersebut adalah sebagia berikut :
ALTER TABLE
BEGIN
CREATE TABLE
CREATE DATABASE
CREATE INDEX
DROP DATABASE
DROP TABLE
DROP INDEX
LOAD MASTER DATA
LOCK TABLES
SET AUTOCOMMIT = 1
START TRANSACTION
TRUNCATE TABLE
UNLOCK TABLES
90
PRAKTIK
12.Transaksi di MySQL
MySQL mendukung transaksi melaui storage engine InnoDB (full ACID compliance)
dan BDB (Berkeley DB) sejak versi 4.0. Oleh karena itu, untuk dapat
mengimplementasikan transaksi, DBMS MySQL harus mendukung salah satu atau
kedua engine transactional. Pengecekan dapat dilakukan dengan menggunakan
perintah:
14.Implementasi Transaksi
Transaksi di MySQL diinisiasi dengan perintah START TRANSACTION atau BEGIN dan
diakhiri dengan perintah COMMIT .
(1) Aktifkan transaksi basis data.
91
(4) Sekarang keluarlah dari command prompt MySQL lalu masuk kembali kemudian
periksalah isi tabel tbDemoTR
15.Autocommit Mode
Setelah menggunakan pernyataan START TRANSACTION, juga dapat menggunakan
pernyataan SET untuk mengatur nilai variabel autocommit. Nilai default autocommit
adalah 1, yang menyatakan bahwa transaksi basis data tidak aktif. Dengan kata lain,
setiap perintah akan langsung diterapkan secara permanen.
(1) Terlebih dahulu periksa nilai variabel autocommit,
92
(4) Keluar dari prompt mysql, kemudian login kembali dan periksa hasil
penambahan data. Seharusnya, hasil penambahan tidak akan diterapkan secara
permanen di basis data.
(6) Lakukan langkah nomor (3) dan (4), Amati saat autocommit berinilai 1 dan 0.
Perhatikan langkah-langkah tersebut dan jelaskan pada laporan.
16.Rollback Transaksi
Akhir dari pernyataan transaksi dapat berupa COMMITatau ROLLBACK, tergantung
pada kondisinya. Pernyataan ROLLBACKdigunakan untuk menggugurkan rangkaian
perintah. ROLLBACK akan dilakukan ketika ada satu atau lebih perintah yang gagal
dilaksanakan. Di samping itu, ROLLBACK juga dapat dilakukan secara eksplisit
dengan memanggil pernyataaan ROLLBACK.
(1) Aktifkan transaksi basis data.
93
(4) Tambahkan data yang sama.
(5) Berikan perintah ROLLBACK untuk membatalkan rangkaian perintah dalam satu
transaksi.
17.Checkpointing
ROLLBACKakan menggugurkan keseluruhan perintah dalam blok transaksi. Kondisi ini
terkadang tidak dikehendaki, misal terdapat tiga perintah, namun kita hanya ingin
menggugurkan perintah setelah perintah kedua (perintah pertama masih ada).
Dalam kasus ini, kita bisa memanfaatkan fitur checkpointing.
(1) Aktifkan transaksi basis data.
94
(7) Tambahkan lagi baris baru.
LATIHAN
TUGAS
Implementasikan 1 contoh dari fungsi commit, rollback, dan checkpoint pada data
yang ada pada basis data yang telah dibuat sebelumya (database akademik).
REFERENSI
95
MODUL 13
DATA CONTROL LANGUAGE (DCL)
CAPAIAN PEMBELAJARAN
KEBUTUHAN ALAT/BAHAN/SOFTWARE
7. Notepad++
8. MySQL
DASAR TEORI
96
Sintaks Umum :
SELECT, UPDATE, DELETE, INSERT, FLUSH
Contoh Penggunaan :
SELECT host, user, password FROM user;
DELETE FROM user WHERE user=’’;
UPDATE user SET password=password(‘xxx) WHERE user=’root’;
insert into user (User,Password) values(‘u1’,’p1’);
FLUSH PRIVILEGES;
Perintah FLUSH PRIVILEGES adalah suatu perintah untuk mengaktifkan perubahan-
perubahan yang terjadi pada user, seperti hak akses, penggantian password pada
user dan sebagainya. Perintah FLUSH PRIVILEGES ini hukumnya wajib dilaksanakan
setelah Anda melakukan perubahan (apapun juga) secara langsung ke dalam tabel
user atau ke dalam database mysql.
3. GRANT
Grant berfungsi untuk membuat user baru dan memberikan hak istimewa. Grant
97
adalah salah satu privilege untuk tabel. Grant digunakan untuk memberikan
privilege kepada tabel yang didefinisikan kepada pemakai lain. Privilege untuk
pemakai dalam perintah grant didefinisikan dengan menggunakan nama-nama
privilege. Nama privilege memudahkan administrator untuk dapat memberikan
priivilege tanpa harus tahu apa nama field dan tabel yang harus diisi. Perintah grant
secara otomatis akan menambah data pemakai apabila data nama pemakai yang
disertakan pada perintah tersebut belum ada dalam tabel user. Perintah grant
memudahkan administrator untuk tidak perlu melakukan perintah pendefinisian
privilege dengan menggunakan sql. Karena dengan menggunakan sql, kita harus
hafal nama tabel yang harus diisi, field apa saja yang harus diisi, jumlah field yang
harus diisi. Kesalahan mudah dilakukan dengan menggunakan perintah sql karena
38 ketidaktelitian atau ketidakhafalan nama tabel dan nama field yang harus diisi.
Sintaks umum :
GRANT hak_akses ON nama_tabel TO pemakai;
SHOW GRANTS FOR Admin;
4. REVOKE
Untuk menghapus batasan hak akses yang telah diatur dengan menggunakan
perintah GRANT, digunakan perintah REVOKE.
Sintaks Umum :
REVOKE hak_akses ON nama_tabel FROM namaAccount@namaHost;
REVOKE hak_akses ON nama_database.nama_tabel FROM user;
5. Show Processlist
Digunakan untuk menampilkan kegiatan apa saja yang terjadi pada MySQL server
atau menampilkan informasi mengenai thread yang dieksekusi di server. Bila
terdapat kegiatan yang membahayakan kita sebagai admin dapat menghentikan
dengan perintah KILL atau MySQLAdmin.
Sintaks Umum :
SHOW PROCESSLIST;
6. Kill
Kill berfungsi menghentikan thread server / untuk membunuh proses yang sedang
berjalan Sintaks Umum :
KILL nomor_Id;
Contoh Penggunaan :
KILL 2;
7. Optimize Table
Tabel yang sering mengalami proses penghapusan dan penambahan akan
menyebabkan struktur yang tidak teratur secara fisik atau telah terjadi fragmentasi.
Penghapusan data dalam jumlah besar mempunyai peluang terjadinya
fragmentasi. Terutama untuk data bertipe VARCHAR, TEXT atau BLOB. Tidak semua
DBMS dapat melakukan fragmentasi, kita dapat melihat dukungan setiap DBMS
Untuk mengatasi masalah fragmentasi solusinya adalah melakukan OPTIMIZE
TABLE Untuk MySQL versi 3.23 ke atas mendukung fasilitas OPTIMIZE TABLE. Perlu
diketahui pada saat OPTIMIZE TABLE dikerjakan, semua tabel akan di-lock
98
(terkunci) Proses fragmentasi sebaiknya dilakukan secara berkala, misalnya setiap
minggu atau setiap bulan.
Sintaks Umum :
OPTIMIZE TABLE tabel_1, tabel_2, tabel_3, tabel_n;
PRAKTIK
A. Praktik akan dilakukan dengan menggunakan Tabel USER pada database MySQL.
1. Ubah database aktif ke database MySQL dan lihat semua user yang terdafatar
99
4. Menampilkan user dan password tabel user
B. Mengatur PRIVILAGES, GRAND dan REVOKE dari Tables_Priv untuk akses terhadap
database MySQL
1. Tambahkan beberapa pengaturan hak terhadap beberapa user dengan hak akses
yang berbeda
100
2. Keluar command promp dan masuk kembali menggunakan user yang sudah di
definisikan, kemudian lakukan akses terhadap tabel yang sudah diatur pada
Tables_Priv
3. Masuklah menggunakan user dengan hak hanya melihat (SELECT), dan berikan
perintah untuk menghapus (DELETE) data dari tabel tertentu. Lihat hasilnya dan
Jelaskan dalam Laporan
4. Berikan Pengaturan GRANT pada user(pengguna) ‘dia’ terhadap tabel
.MySQL.User, setelah itu lihat hasil pengaturan tersebut
5. Ubahlah batasan yang sudah diatur pada user ‘dia’ menggunakan perintah REVOKE
6. Setelah langkah nomor 4 dan 5, lakukan eksekusi terhadap tabel user menggunakan
akun ‘dia’, lihat hasilnya dan berikan penjelasan dalam laporan
C. SHOW PROCESSLIST
1. Tampilkan daftar proses yang sudah dilakukan oleh sebuah user dengan perintah
2. Jika terkoneksi dalam sebuah jaringan dengan pengakses database pada sebuah
server lebih dari satu user, kita dapat menghentikan proses (akses) dengan
memberikan perintah KILL <diikuti> Id proses. Sebagai contoh dari nomor 1, kita
dapat memberikan perintah KILL 31.
3. Untuk mengurangi/menghindari terjadinya Fragmentasi terhadap sebuah tabel
yang sering mengalami proses (misalnya : penghapusan dan penambahan), kita
dapat memberikan solusi dengan perintah Optimize Table. Sebagai contoh
dilakukan pada Tabel User.
101
LATIHAN
TUGAS
REFERENSI
102
MODUL 14
STUDI KASUS
CAPAIAN PEMBELAJARAN
KEBUTUHAN ALAT/BAHAN/SOFTWARE
9. Notepad++
10. MySQL
DASAR TEORI
PRAKTIK
LATIHAN
TUGAS
103
REFERENSI
104