Anda di halaman 1dari 107

MODUL

Sistem Manajemen Basis Data


PRODI

MANAJEMEN INFORMATIKA -D3

Disusun oleh :

Yohakim Marwanta, S.Kom., M.Cs

Edi Faizal, S.T., M.Cs

SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER

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.

Yogyakarta Januari 2020

Penyusun

ii
DAFTAR ISI

KATA PENGANTAR ...........................................................Error! Bookmark not defined.


DAFTAR ISI ..........................................................................Error! Bookmark not defined.
MODUL 1 TRANSFORMASI ENTITY RELATIONSHIP DIAGRAM (1) .. Error! Bookmark
not defined.
MODUL 2 DATA DEFINITION LANGUANGE(DDL) .......Error! Bookmark not defined.
MODUL 3 DML INSERT,UPDATE,DELETE,SELECT .........Error! Bookmark not defined.
MODUL 4 DML QUERY TABEL TUNGGAL ......................Error! Bookmark not defined.
MODUL 5 DML QUERY TABEL JAMAK(MULTIPLE TABLE) Error! Bookmark not
defined.
MODUL 6 BUILT IN FUNGCTION (DATE,STRING,MATHEMATIK) ... Error! Bookmark
not defined.
MODUL 7 AGREGATE FUNCTION,GROUP BY,HAVING,ORDER BY ...................... 25
MODUL 8 SQL VIEW ...........................................................Error! Bookmark not defined.
MODUL 9 SUB QUERY ......................................................Error! Bookmark not defined.
MODUL 10 STORE PROCEDURE DAN STORE FUNCTION .......... Error! Bookmark not
defined.
MODUL 11 TRIGGER...........................................................Error! Bookmark not defined.
MODUL 12 TRANSACTION.................................................Error! Bookmark not defined.
MODUL 13 DATA CONTROL LANGUAGE (DCL)............Error! Bookmark not defined.
MODUL 14 STUDI KASUS ...................................................Error! Bookmark not defined.

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

1. Komputer dengan Perangkat Lunak Aplikasi (DEA, DBMS (MySQL))

DASAR TEORI

1. ENTITY RELATIONSHIP DAGRAM (ERD)


A. Entitas
Entitas merupakan semua obyek yang memiliki makna dan merupakan
informasi yang perlu diketahui. Dalam pengertian yang lain, entitas merupakan
sesuatu yang ada di dunia nyata yang keberadaannya tidak bergantung pada
yang lain (dapat berupa orang, tempat, obyek, kejadian, ataupun konsep)

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

- Atribut, digambarkan dalam bentuk elips.

- Primary key (digambarkan dengan garis bawah tebal pada atribut yang
bersangkutan)

- Atribut komposit

- Atribut bernilai banyak, digambarkan dengan garis elips dobel.

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

Hubungan/relationship menyatakan keterkaitan antara entitas satu dengan yang


lain

Jenis-jenis hubungan:
- One-to-one
- One-to-many
- Many-to-one
- Many-to-many

Notasi-notasi ERD yang menyatakan hubungan antar tabel dapat dinyatakan


dalam bentuk diamond/wajik sebagai berikut:

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

- Binary: melibatkan 2 buah entitas.

- Tertiary: melibatkan 3 buah entitas

4
2. Transformasi ERD

Transformasi ERD ke Basis Data Fisik ( Tabel )


Aturan-aturan :
1. Setiap Himpunan Entitas ditransformasikan sebagai sebuah tabel
Contoh:

Transformasi Entitas Kuat

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

1. Transformasikan ERD Berikut


2. ........

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

1. Mahasiswa dapat mengimplementasikan rancangan table menggunakan tools


DBMS MySQL menggunakan Perintah SQL
2. Mahasiswa Mampu menerapkan pemilihan tipe data untuk masing-masing atribut
pada sebuah table dengan tepat
3. Mahasiswa Mampu menerapkan contraint dengan tepat

KEBUTUHAN ALAT/BAHAN/SOFTWARE

1. Komputer dengan Perangkat Lunak Aplikasi (DBMS (MySQL)), Editor SQL

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.

Beberapa tipe data pada MySQL :

1. Tipe Data Angka (Numerik).

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

2. Tipe Data Teks (String).

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

3. Tipe Data Date.

Tipe Data Date digunakan untuk menyimpan data tanggal dengan format
tahun, bulan, tanggal. Beberapa jenis tipe data date yang dapat
digunakan.

Table 3. Tipe data tanggal

4. Tipe Data BLOB.

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 kemampuan untuk menampilkan data dari database untuk


diolah lebih lanjut yang biasanya diambil dari tabel tabel dalam database.
Pengertian query yang lain adalah pertanyaan (question) atau permintaan
(order) informasi tertentu daru sebuah database yang tertulis dalam format
tertentu.

Defenisi lain terkait 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)

4. Data Difinition Language (DDL)


DDL adalah singkatan dari Data Definition Language yaitu kumpulan
perintah pada SQL untuk menggambarkan desain dari database secara
menyeluruh, selain itu DDL (Data Definition Language) juga digunakan
untuk membuat, merubah maupun menghapus struktur atau definisi tipe
data dari obyek yang ada pada database.

11
Fungsi utama DDL:

- Membuat (create) objek tabel


- Modifikasi (modify) objek tabel
- Menghapus (delete) objek tabel

Statement DDL adalah perintah-perintah yang digunakan untuk


menjelaskan objek dari database.

Berikut beberapa statement DDL:

Create : Perintah yang digunakan untuk membuat objek database


seperti Table, View, Index, Synonym, Sequence, Procedure,
Trigger, Function, Package, dan User Defined Data Types.

Alter : Perintah yang digunakan untuk memodifikasi struktur dari objek


objek database.

Drop : Perintah yang digunakan untuk menghapus objek database

Truncate : Perintah yang digunakan untuk menghapus secara


permanen baris (row) dari sebuah tabel atau dengan
kata lain mengosongkan kembali tabel tanpa menghapus
tabel itu sendiri.

Rename : Perintah yang digunakan untuk mengganti nama sebuah objek


database.

Perintah SQL DDL


1. CREATE DATABASE
Perintah ini berfungsi untuk menciptakan basis data dimana table-tabel nantinya
akan disimpan

Sintaks :

CREATE DATABASE IF NOT EXISTS NAMA_DATABASE;

2. CREATE TABEL
Perintah ini digunakan untuk membuat table-tabel yang ada pada basis data
lengkap dengan atribut , tipe data dan constraint.

12
Sintak :

CREATE TABLE IF NOT EXISTS NAMA_TABEL (

NAMA_FIELD_1 TIPE_DATA(UKURAN) KONSTRAINT,

NAMA_FIELD_2 TIPE_DATA(UKURAN) KONSTRAINT,

NAMA_FIELD_N TIPE_DATA(UKURAN) KONSTRAINT ) ;

Dimana kontraint dapat berupa :

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.

Gambar 1. Xampp Control Panel

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

8. Mengaktifkan database akademik

9. Menciptakan table Jurusan

10. Menciptakan Tabel MATAKULIAH

8. Menampilkan struktur table yang sudah dibuat menggunakan perintah DESCRIBE


(DESC)

16
LATIHAN

1. Buatlah perintah SQL untuk membuat table mahasiswa, dosen dan krs dengan
struktur table seperti pada gambar 3 pada database akademik :

Gambar 3. Struktur Tabel Mahasiswa, KRS dan Dosen

17
TUGAS

1. Apa fungsi penerapan Foreign Key pada pembuatan table


2. Dari databse akademik, pada table apa saja Foerign Key diterapkan ?

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

1. Komputer dengan Perangkat Lunak Aplikasi (DBMS (MySQL)), Editor SQL

DASAR TEORI

1. Data Manipulation Languange (DML)


Adalah kelompok perintah yang berfungsi untuk memanipulasi data
dalam basis data, misalnya untuk pengambilan, penyisipan,
pengubahan, dan penghapusan data. Perintah yang termasuk
dalam kelompok DML adalah SELECT, INSERT, DELETE, dan
UPDATE.

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.

2. UPDATE : Perintah yang digunakan untuk memodifikasi data pada


tabel.
Sintak :

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).

3. Delete : Perintah yang digunakan untuk menghapus data pada table.


Sintak :
DELETE FROM table_references
[WHERE where_condition]

20
Dimana :
Table_reference : nama table dimana data-datanya akan dihapus
Where_condition : kondisi/syarat yang harus dipenuhi untuk data yang
akan dihapus.

4. Select : Perintah yang digunakan untuk menampilkan isi tabel.


SELECT digunakan untuk mengambil data dari database.
• Bentuk umum pemanggilan SELECT adalah :

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

 Perintah SELECT lebih lanjut akan diterangkan pada bab-bab berikutnya

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

Tampilkan Data yang diisikan dengan perintah SELECT * FROM JURUSAN


Amati Hasilnya .
3. Isikan data berikut kedalam Tabel MATAKULIAH
Kode_MKul Nama Matakuliah SKS Semester Status
MK1 ALGORITMA PEMROGRAMAN 3 1 W
MK2 PENGANTAR TEKNOLOGI INFORMASI 2 1 W
MK3 PANCASILA 2 1 W
MK4 SISTEM BASIS DATA 3 2 W
MK5 PRAKTIKUM SISTEM BASIS DATA 2 2 W

Tampilkan Data yang diisikan dengan perintah SELECT * FROM MATAKULIAH


Amati Hasilnya .

4. Melakukan Update data pada table Jurusan


Mengubah Nama Jurusan dari TEKNIK INFORMATIKA menjadi INFORMATIKA .
UPDATE JURUSAN
SET NAMA_JURUSAN=’INFORMATIKA’
WHERE KODE_JUR=’TI’;

5. LIHAT perubahan data update dengan perintah SELECT * FROM JURUSAN


6. Dengan menggunakan perintah UPDATE lakukan perubahan terhadap data
Jurusan dengan jenjang D3 diubah semua akredditasinya menjadi A
menggunakan satu perintah UPDATE, kemudian tampilkan Hasil
perubahannya dengan perintah SELECT.

22
7. Menghapus DATA pada Tabel
Menghapus data jurusan dengan kode jurusan TK
DELETE FROM JURUSAN
WHERE KODE_JUR=’TK’;

Tampilkan data dengan perintah SELECT, amati dan Cetak Hasilnya

8. Menampilkan data dengan Perintah SELECT

Ketikkan Perintah berikut :

1) SELECT * FROM JURUSAN;


2) SELECT KODE_JUR,NAMA_JURUSAN, JENJANG FROM JURUSAN;
3) SELECT NAMA_JURUSAN, AKREDITASI FROM JURUSAN;
4) SELECT KODE_JUR, NAMA_JURUSAN, JENJANG FROM JURUSAN
WHERE JENJANG=’S1’;
5) SELECT KODE_JUR, NAMA_JURUSAN, JENJANG FROM JURUSAN
WHERE JENJANG=’D3’;
6) SELECT KODE_JUR, NAMA_JURUSAN, JENJANG,AKREDITASI FROM JURUSAN
WHERE AKREDITASI=’B’;
7) SELECT * FROM MATAKULIAH
8) SELECT * FROM MATAKULIAH
WHERE SKS=3;

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

Diberikan Oleh Dosen Pengampu Praktikum

REFERENSI

24
MODUL 4
DATA MANIPULATION LANGUANGE
( QUERY TABEL TUNGGAL )

CAPAIAN PEMBELAJARAN

1. Mahasiswa mampu memanggil data dari satu tabel dengan menggunakan


berbagai operator dan syarat

KEBUTUHAN ALAT/BAHAN/SOFTWARE

1. Basis Data MySQL (versi apapun), boleh dalam bentuk paket seperti XAMPP

DASAR TEORI

Sintaks dasar Query secara keseluruhan:

SELECT [DISTINCT] nama_field1, nama_field2, nama_field3, …


FROM nama_tabel
WHERE kondisi
GROUP BY nama_field_kelompok
HAVING kondisi_agregasi
ORDER BY nama_field_yang_diurutkan

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

Logika kondisi menggabungkan hasil dari dua komponen kondisi sehingga


menghasilkan satu kondisi. Operatornya seperti pada tabel berikut.

Daftar Operator Logika

Operator Arti
AND Menghasilkan TRUE apabila kedua komponen benar
OR Menghasilkan TRUE apabila salah satu komponen
benar
NOT Menghasilkan TRUE apabila kondisinya false

Tata Urutan Hak Pada Operator

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.

Daftar Tata Urutan Hak Pengerjaan Operator

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

Kerjakan langkah-langkah praktik berikut ini.

1. Jalankan MySQL, Buka database akademik (pertemuan ke-3) :


2. Tambahkan data kedalam tabel mahasiswa dengan perintah berikut :
INSERT INTO MAHASISWA VALUES
('19331001','DEWI SANTI','P','2019','MI'),
('19331002','RATNA SANIA','P','2019','MI'),
('19331003','EKO SANJAYA','L','2019','MI'),
('19311001','SANJAYA DEFA','L','2019','TK'),
('19311002','DENI WAHYUDI','L','2019','TK'),
('19321002','INDAH DIAN','P','2019','KA'),
('19321001','SISKA REFIANTI','P','2019','KA'),
('19541001','DEDI KAAN','L','2019','TI'),
('19541002','DIAN RISWANTI','P','2019','TI'),
('19541003','EKO SUDIBYO','L','2019','TI'),
('19561001','CICI PARAMIDA','P','2019','SI'),
('19561002','UMI SAODAH','P','2019','SI'),
('19561003','DIKI WIJAYA','L','2019','SI');

3. Tambahkan data ke dalam Tabel MATAKULIAH dengan perintah berikut :


INSERT INTO MATAKULIAH VALUES
('MK11','BAHASA INGGRIS 1',2,1,'W'),
('MK12','AGAMA',2,1,'W'),

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');

4. buatlah query berdasarkan permintaan berikut dan perhatikan hasil


keluarannya.

1. Menampilkan seluruh data pada tabel jurusan :


SELECT *
FROM jurusan;

2. Tampilkan seluruh isi tabel mahasiswa


SELECT *
FROM mahasiswa;
3. Tampilkan seluruh isi data dari tabel Matakuliah
SELECT nama
FROM Matakuliah;
4. Tampilkan NIM,NAMAMHS dari tabel mahasiswa yang dengan jurusan MI
(KODE_JUR=’MI’) :
SELECT NIM, NamaMhs
FROM Mahasiswa
WHERE KODE_JUR=’MI’;
5. Tampilkan NIM dan NamaMhs yang Jenis Kelamin Laki-Laki (L).
SELECT NIM,NamaMhs
FROM MAHASISWA
WHERE JK=’L’;
6. Tampilkan data MAHASISWA yang jurusan MI dan Jenis Kelamin
PEREMPUAN:
SELECT NIM,NAMAMHS,KODE_JUR,JK
FROM MAHASISWA
WHERE KODE_JUR='MI' AND JK='P';

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');

8. Tampilkan data Mahasiswa yang namanya diawali dengan huruf d.


SELECT * FROM MAHASISWA
WHERE NAMAMHS LIKE 'd%';

9. Tampilkan data Mahasiswa yang namanya diakhiri dengan huruf a.


SELECT * FROM MAHASISWA
WHERE NAMAMHS LIKE '%a';

10. Tampilkan data Mahasiswa yang namanya mengandung/terdapat unsur


huruf O.
SELECT * FROM MAHASISWA
WHERE NAMAMHS LIKE '%O%';

LATIHAN

1. Buka table Matakuliah, kemudian buatlah perintah SQL untuk :


a. Menampilkan Kode_MKUL,Nama_Matakuliah dan SKS
b. Menampilkan Kode_MKUL,Nama_Matakuliah,SKS,Semester,Status
untuk matakuliah semester 1
c. Menampilkan Kode_MKUL,Nama_Matakuliah,SKS,Semester,Status
untuk matakuliah semester 1 dengan SKS=3
d. Menampilkan Nip,Nama,Golongan dan Gapok untuk pegawai
dengan golongan selain Golongan 1

30
TUGAS

Kerjakan tugas berikut ini. Materi tugas didasarkan dari praktikum pertemuan
sebelumnya.

1. Buatlah query untuk menampilkan semua data dari tabel Dosen


2. Buatlah query untuk menampilkan NID,Nama_dosen dan
Pendidikan_Terakhir untuk dosen dengan pendidikan terakhir S3.
3. Buatlah query untuk menampilkan NID,Nama_dosen,Pendidikan_Terakhir
dan jurusan untuk dosen dengan pendidikan terakhir S3 dengan jenis
kelamin Laki-Laki (L).

REFERENSI

- Yohakim Y, Danny. 2020. Modul Praktikum Sistem Basis Data – KA-TK.


STMIK AKAKOM

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.

Gambar 2. Left Outer Join

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.

3) Full Outer Join


Full outer join atau full join pada hakikatnya merupakan kombinasi dari left dan
right join.
Sintaks full outer join diperlihatkan sebagai berikut :

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

Kerjakan langkah-langkah praktik berikut ini.

1. Jalankan MySQL, Buka database akademik :


2. Menguji Relasi antara tabel Mahasiswa dengan Tabel Jurusan (Tabel
Mahasiswa dengan Tabel Jurusan direlasikan dengan kunci Kode_jur
(Foreign Key dari tabel jurusan)

3. Menggambil Nama_jurusan dari tabel Jurusan dan di letakkan setelah


Kode_jur pada tabel mahasiswa, Ketikkan perintah SQL berikut ini :

SELECT MAHASISWA.NIM, MAHASISWA.NAMAMHS,MAHASISWA.KODE_JUR,


JURUSAN.NAMA_JURUSAN
FROM MAHASISWA JOIN JURUSAN
ON MAHASISWA.KODE_JUR=JURUSAN.KODE_JUR;

Jalankan dan amati hasilnya

4. Hapuslah Mahasiswa.Kode_jur pada SQL langkah ke-6, jalankan kembali dan


amati hasilnya.

5. Tambahkan data ke dalam Tabel MATAKULIAH dengan perintah berikut :

INSERT INTO MATAKULIAH VALUES


('MK11','BAHASA INGGRIS 1',2,1,'W'),

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');

6. Tambahkan data dosen dengan perintah berikut :


INSERT INTO DOSEN VALUES
('060001','YOHAKIM MARWANTA','YOGYAKARTA','1986-10-10','TI','JL.JANTI','YOGYAKARTA','0811122','S2'),
('060002','PULUT SURYATI','YOGYAKARTA','1979-05-25','TI','JL.PLERET','BANTUL','0813122','S2'),
('060003','HENRY NUGROHO','BANTUL','1982-07-15','MI','JL.PEMUDA','YOGYAKARTA','0813122','S2');

7. Ketikkan perintah berikut :


SELECT NID,NAMA_DOSEN,NAMA_JURUSAN
FROM DOSEN JOIN JURUSAN
ON DOSEN.JURUSAN=JURUSAN.KODE_JUR;

Amati Hasilnya, jelaskan dan cetak hasilnya pada laporan suadara

8. Tambahkan data kedalam table KRS :


INSERT INTO KRS VALUES
('19311001','MK11','060002','2019','GENAP','A'),
('19311001','MK12','060001','2019','GENAP','A'),
('19311001','MK21','060001','2019','GENAP','A'),
('19311001','MK22','060003','2019','GENAP','A'),
('19311002','MK11','060002','2019','GENAP','B'),
('19311002','MK12','060001','2019','GENAP','B'),
('19311002','MK21','060001','2019','GENAP','B'),
('19311002','MK22','060003','2019','GENAP','B');

9. Mengambil nama mahasiswa, nama matakuliah dan nama dosen untuk di


tampilkan pada table KRS.
Kunci penghubung :
- KRS dengan Mahasiswa  NIM
- KRS dengan Matakuliah  Kode_MKUL
- KRS dengan Dosen  NID

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;

Jalankan SQL diatas dan amati dan cetak hasilnya.

10. Menampilkan data KRS untuk mahasiswa dengan NIM=19311001

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’;

Jalankan SQL diatas dan amati dan cetak hasilnya.

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.

1. Buatlah query untuk menampilkan Dosen yang mengajar Mahasiswa


Jurusan Manajemen Informatika.
2. Diberikan oleh dosen pengampu

REFERENSI

- Yohakim Y, Danny. 2020. Modul Praktikum Sistem Basis Data – KA-TK.


STMIK AKAKOM

40
MODUL 6
BUILT IN FUNCTION
( DATE,STRING,MATHEMATIC)

CAPAIAN PEMBELAJARAN

1. Mahasiswa mampu menggunakan fungsi-fungi bawaan yang disediakan DBMS


MySQL untuk operasi Tanggal dan Waktu, String, Matematik dan Fungsi
Agregasi (COUNT,SUM,AVERAGE,MAX,MIN)

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

2. FUNGSI STRING, beberapa Fungsi String bawaan MySQL adalah :


1) fungsi LCASE atau LOWER digunakan untuk mengkonversi huruf kedalam
format huruf kecil
2) fungsi UCASE atau UPPER digunakan untuk mengkonversi huruf kecil
menjadi huruf besar
3) fungsi LENGTH atau CHAR_LENGTH digunakan untuk mengetahui panjang
suatu string
4) fungsi LOCATE digunakan untuk mengetahui letak suatu substring (bagian
string)
5) Untuk membalik susunan karakter (seakan dibaca dari belakang) digunakan
fungsi REVERSE
6) fungsi ASCII atau ORD digunakan untuk mengkonversi bilangan kedalam
kode ASCII
7) fungsi CHAR digunakan untuk mengkonversi suatu bilangan kedalam format
karakter
8) fungsi BIN digunakan untuk mengkonversi bilangan desimal kedalam
bilangan biner
9) fungsi LENGTH atau CHAR_LENGTH digunakan untuk mengetahui panjang
suatu string
10) Fungsi CONCAT ( ) digunakan untuk menggabungkan beberapa nilai
menjadi sat nilai. Namun bila ada nilai yang mengandung NULL, maka
hasilnya tetap NULL.

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

1) Count : Untuk mendapatkan nilai banyaknya record hasil query.


2) Sum :Untuk mendapatkan nilai total suatu atribut numerik hasil query.
3) Avg :Untuk mendapatkan nilai rata-rata suatu atribut numerik
hasil query.
4) Max :Untuk mendapatkan nilai terbesar suatu atribut numerik
hasil query.
5) Min :Untuk mendapatkan nilai terkecil suatu atribut numerik hasil query.

PRAKTIK

Kerjakan langkah-langkah praktik berikut ini.

1. Jalankan MySQL, Buka database akademik


2. Menggunakan Fungsi String, Ketikkan perintah berikut :
1) SELECT CURDATE();
Amati hasilnya, cetak dan jelaskan didalam laporan saudara.
2) SELECT CURTIME();
Amati hasilnya, cetak dan jelaskan didalam laporan saudara.

43
3) SELECT NOW();
Apa perbedaan hasil perintah no 3 dengan perintah no 1 dan 2 ?
Amati hasilnya, cetak dan jelaskan didalam laporan saudara.

4) SELECT DATE('2020-02-12 14:55:51');


Apa perbedaan hasil perintah no 4 dengan perintah no 1 ?
Amati hasilnya, cetak dan jelaskan didalam laporan saudara.

5) SELECT YEAR('2020-02-12 14:55:51');


Apa perbedaan hasil perintah no 5 dengan perintah no 4 ?
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.

8) Mengetahui Dosen yang lahir diatas tahun 1980


SELECT NID,NAMA_DOSEN,TANGGAL_LAHIR
FROM DOSEN
WHERE YEAR(TANGGAL_LAHIR) > 1980;

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.

4) Menghitung panjang karakter nama mahasiswa pada tabel mahasiswa


SELECT
NIM,
NAMA_MHS,
LENGTH(NAMA_MHS) AS PANJANG_NAMA
FROM MAHASISWA;

Amati hasilnya, cetak dan jelaskan didalam laporan saudara

5) Untuk mengetahui letak suatu substring (bagian string)


SELECT LOCATE('KIM','YOHAKIM MARWANTA');

’KIM’ adalah bagian string yang akan dicari dari suatu String ’YOHAKIM
MARWANTA’ Hasilnya berupa posisi/letak urutan karakter KIM dihitung
dari Karakter pertama

6) Membalik Nama Mahasiswa dengan perintah REVERSE


SELECT
NIM,
NAMA_MHS,
REVERSE(NAMA_MHS)
FROM MAHASISWA;

Amati hasilnya, cetak dan jelaskan didalam laporan saudara

7) Mengkonversi suatu bilangan kedalam format karakter menggunakan


fungsi CHAR.

SELECT CHAR(65);

Amati hasilnya, cetak dan jelaskan didalam laporan saudara

8) Menggabungkan beberapa nilai menjadi satu nilai dengan perintah


CONCAT.

SELECT CONCAT(NIM,NAMA_MHS,JK) AS NIM_NAMA_JK


FROM MAHASISWA;

Amati hasilnya, cetak dan jelaskan didalam laporan saudara

45
9) Mengambil beberapa karakter dari suatu string menggunakan fungsi
SUBSTR.

SELECT SUBSTR(NAMA_MHS, 1,3) AS 3_HURUFPERTAMA_NAMA


FROM MAHASISWA;

Amati hasilnya, Lakukan perubahan pada parameter 1,3 dengan 2,3,


cetak dan jelaskan didalam laporan saudara.

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

2) Mengembalikan nilai pecahan ke integer yang lebih tinggi


(pembulatan ke atas) dengan fungsi CEILING atau CEIL.

SELECT CEIL(2.38);

Amati hasilnya, cetak dan jelaskan didalam laporan saudara

3) Membulatkan nilai pecahan ke satu angka ke bawah (pembulatan


kebawah)

SELECT FLOOR(2.20);

Amati hasilnya, apa perbedaan dengan perintah ni 4.2, cetak dan


jelaskan didalam laporan saudara

4) Mendapatkan nilai absolut atau nilai positif dari suatu bilangan

SELECT ABS(-32.20);

Amati hasilnya, cetak dan jelaskan didalam laporan saudara

46
5) Mendapatkan sisa pembagian

SELECT MOD(5,2);

5 Adalah bilangan yang akan di bagi, 2 adalah bilangan pembagi.

6) Mencari nilai pangkat dari suatu bilangan.

SELECT POW(3,2);

3 adalah bilangan yang akan di pangkatkan, 2 adalah pangkat bilangan.

7) Mencari nilai akar kuadrat dari suatu bilangan

SELECT SQRT(16);

Amati hasilnya, cetak dan jelaskan didalam laporan saudara

LATIHAN

1. Hitunglah Umur Saudara/i Menggunakan Fungsi DATEDIFF()


2. Carilah karakter AKAKOM menggunakan fungsi CHAR
3. Buatlah perintah SQL untuk membuat password dimana password
berasal dari gabungan 4 karakter terakhir NIM, 4 charakter pertama
Nama_mhs  Gunakan substring dan concat
4. Hitunglah Rerata Umur Dosen kemudian bulatkan menggunakan fungsi
ROUND
5. Dengan menggunakan fungsi matematik yang saudara pelajari hitunglah
IPK dari data Mahasiswa yang ada pada tabel KRS, tampilkan informasi
NIM,Nama_Mhs,Nama_jur dan IPK

47
TUGAS

Kerjakan tugas berikut ini. Materi tugas didasarkan dari praktikum pertemuan
sebelumnya.

1. Apa fungsi SUBSTR() berikan contoh penggunaannya


2. Buatlah query untuk menggabungkan 4 no terakhir NIM, digabungkan
dengan 4 charater pertama Nama_Mahasiswa
3. Berikan minimal 5 fungsi matematik selain yang sudah ada didalam
praktik.

REFERENSI

- Yohakim Y, Danny. 2020. Modul Praktikum Sistem Basis Data – KA-TK.


STMIK AKAKOM

48
MODUL 7
BUILT IN FUNCTION
Fungsi Agregasi

CAPAIAN PEMBELAJARAN

1. Mahasiswa mampu menggunakan fungsi-fungi bawaan yang disediakan


DBMS MySQL untuk operasi Tanggal dan Waktu, String, Matematik dan
Fungsi Agregasi (COUNT,SUM,AVERAGE,MAX,MIN).
2. Mahasiswa

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 :

1. Count : Untuk mendapatkan nilai banyaknya record hasil query. Fungsi


count akan menghitung jumlah baris/record yang ada pada table.
Sintak :

COUNT(expression)

Dimana : expression adalah sebuah nilai (bisa nama field,


atau tanda * (semua) ) yang dibutuhkan untuk dijumlahkan

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)

Dimana : expression adalah nilai (bisa nama field atau


formula) yang dibutuhkan untuk dijumlahkan

3. Avg :Untuk mendapatkan nilai rata-rata suatu atribut numerik


hasil query.

Sintak :

AVG(expression)

Dimana : expression adalah nilai (bisa nama field atau


formula) yang dibutuhkan untuk dihitung reratanya

4. Max :Untuk mendapatkan nilai terbesar suatu atribut numerik


hasil query.

Sintak :

MAX(expression)

Dimana : expression adalah nilai (bisa nama field atau


formula) yang dibutuhkan untuk dicari nilai terbesarnya.

5. Min :Untuk mendapatkan nilai terkecil suatu atribut numerik hasil query.
Sintak :

MAX(expression)

Dimana : expression adalah nilai (bisa nama field atau


formula) yang dibutuhkan untuk dicari nilai terkecilnya.

B. Group By, Having, Order By dan Limit

Sintaks dasar Query secara keseluruhan:

SELECT [DISTINCT] nama_field1, nama_field2, nama_field3, …

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)

- GROUP BY berisi field-field yang akan dikelompokkan. Field yang


disebutkan setelah Group By wajib disebutkan dalam daftar SELECT.

- HAVING merupakan kondisi dari pengelompokan data. Klausa Having


merupakan kondisi didalam Group By.

- ORDER BY digunakan untuk mengurutkan data berdasarkan field


tertentu. Dapat berupa urut naik (ascending) atau urut turun (descending)

- LIMIT digunakan untuk membatasi jumlah Record yang akan


ditampilkan.

PRAKTIK

Kerjakan langkah-langkah praktik berikut ini.

1. Jalankan MySQL, Buka database akademik


2. Buat perintah SQL untuk membuat tabel BobotNilai Berikut :

CREATE TABLE BOBOTNILAI


(NILAI CHAR(1) NOT NULL,
BOBOT INT(1) NOT NULL);

Kemudian isikan dengan data sebagai berikut :

INSERT INTO BOBOTNILAI VALUES


('A',4),

51
('B',3),
('C',2),
('D',1),
('E',0);

Isikan data ke dalam tabel krs dengan PERINTAH sebagai berikut :

INSERT INTO KRS VALUES


('19331001','MK11','060002','2019','GENAP','A'),
('19331001','MK12','060001','2019','GENAP','B'),
('19331001','MK21','060001','2019','GENAP','B'),
('19331001','MK22','060001','2019','GENAP','A'),
('19331002','MK11','060002','2019','GENAP','A'),
('19331002','MK12','060001','2019','GENAP','A'),
('19331002','MK21','060001','2019','GENAP','C'),
('19331002','MK22','060003','2019','GENAP','C'),
('19341001','MK22','060003','2019','GENAP','C'),
(’19341001','MK21','060002','2019','GENAP','B'),
('19341001','MK11','060002','2019','GENAP','B'),
('19341001','MK12','060002','2019','GENAP','B');

3. Tampilkan isi dari tabel mahasiswa :


SELECT * FROM MAHASISWA;

52
4. Menggunakan Fungsi Agregasi
1) COUNT
a. Menghitung Jumlah semua Mahasiswa pada tabel mahasiswa :

SELECT COUNT(*) AS JUMLAH_MHS FROM MAHASISWA;

HASIL :

b. Menghitung Jumlah Mahasiswa untuk mahasiswa jurusan MI

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 :

SELECT * FROM MATAKULIAH;

HASILNYA :

54
b. Menjumlahkan Total SKS untuk Matakuliah Semester 1.

SELECT SUM(SKS) AS TOTAL_SKS_SEM1


FROM MATAKULIAH
WHERE SEMESTER='1';

HASIL :

o Dengan perintah yang sama hitunglang Total SKS untuk


Matakuliah Semester 2

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 :

Artinya : dari tabel mahasiswa dapat diketahui bahwa yang


memiliki mahasiswa adalah jurusan dengan kode_jur
KA,MI,SI,TI,TK

o Menghitung jumlah mahasiswa per jurusan, data diambil dari


tabel mahasiswa.

SELECT
KODE_JUR,
COUNT(NIM) AS JUMLAH
FROM MAHASISWA
GROUP BY KODE_JUR;

o Dengan menggunakan konsep JOIN dan Group By buatlah


Query untuk menghitung jumlah mahasiswa perjurusan
dengan tampilan seperti berikut :

57
6. Having

Menampilkan jumlah mahasiswa Per jurusan, Untuk Jurusan dengan


jumlah mahasiswa lebih dari atau sama dengan 3.

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.

SELECT * FROM MAHASISWA


ORDER BY NAMA_MHS;

58
HASIL :

Amati pada kolom/field Nama_mhs perhatikan urutan nama


mahasiswa ( disajikan urut naik / Ascending)

b. Mengurutkan Nama Mahasiswa Urut Turun (dimulai dari Z …


A)

SELECT * FROM MAHASISWA


ORDER BY NAMA_MHS DESC;

Hasil :

59
Amati pada kolom/field Nama_mhs perhatikan urutan nama
mahasiswa ( disajikan urut turun / Descending)

8. LIMIT

Menampilkan 3 urutan teratas dari IPK mahasiswa ( semua


jurusan)

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 :

KEMUDIAN tambahkan LIMIT 3 pada baris terakahir.

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

1. Hitunglah Umur termuda dari data seluruh Dosen, Gunakan Fungsi


DATEDIFF() dan Min();
2. Hitunglah Rerata IPK Mahasiswa Jurusan MI (gunakan fungsi AVG) lihat
contoh menghitung IPK pada praktik
3. Tampilkan data mahasiswa dengan Nilai IPK tertinggi untuk masing-
masing Jurusan.
4. Hitunglah Jumlah SKS yang sudah diambil Mahasiswa dikelompokkan
berdasarkan NIM

TUGAS

Kerjakan tugas berikut ini. Materi tugas didasarkan dari praktikum pertemuan
sebelumnya.

1. Buat Query untuk menghitung jumlah Dosen dikelompokkan


berdasarkan Pendidikan Terakhir.
2. Hitung rerata IPK mahasiswa, dikelompokkan per jurusan.

61
REFERENSI

- Yohakim Y, Danny. 2020. Modul Praktikum Sistem Basis Data – KA-TK.


STMIK AKAKOM

62
MODUL 8
KONSEP VIEW (SQL VIEW)

CAPAIAN PEMBELAJARAN

3. Menguasai cara membuat view pada basis data


4. Menguasai penerapan view pada basis data

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.

4. Tujuan dari view adalah:


a. Memudahkan pemahaman tehadap kolom penampung data yang mungkin
berbeda dengan definisi kolom pada tabel dasar.
b. Menyederhanakan pandangan user terhadap data
c. Menurunkan Network Traffic (beban Network).
d. Menyimpan suatu perintah SQL (terutama yang komplek) dimana perintah
tersebut sering digunakan dan diakses.
e. Membatasi akses sesuai otoritas user dan mencegah user untuk dapat
mengakses suatu tabel sepenuhnya.

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

3. Memebuat (mendefinisikan) dan menampilkan informasi view


Buatlah simple view untuk menampilkan data dosen yang terdisi dari NID,
Nama_dosen, Alamat dan Pendidikan_terakhir yang diurutkan berdasarkan NID.
Tuliskan perintah berikut:

Selanjutnya lihat pada daftar view, jika pembutan berhasil.

4. Mengakses view
Tampilkan data yang telah didefinisikan dalam sebuah view dengan perintah
berikut:

Perhatikan hasil tersebut dan jelaskan dalam laporan

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.

7. Membuat complex view


View dapat mendefinisikan suatu pernyataan yang kompleks, misalnya melibatkan
fungsi-fungsi agregat,join atau bahkan subquery. Sebagai ilustrasi view berikut
melibatkan join untuk mendapatkan dosen yang mengajar matakuliah pada
semester genap tahun 2019.

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

3. Definisikan complex view untuk mendapatkan data mahasiswa yang jenis


kelaminnya laki-laki dengan view utama berupa mahasiswa yang mengambil
sembarang matakuliah yang sksnya lebih dari sks terkecil !
4. Tambahkan data pada masing-masing tabel yang akan terlibat dalam pembuatan
view tersebut.

REFERENSI

MySQL reference manual 8.0 https://dev.mysql.com/doc/refman/8.0/en/

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.

2. Klasifikasi Sub Query


Subquery dapat diklasifikasikan ke dalam tiga jenis yaitu scalar, multiple-row, dan
multiple column.
a. ScalarSubquery
Subquery baris tunggal (scalar) hanya mengembalikan hasil satu baris data.
Subquery baris tunggal dapat menggunakan operator baris tunggal =, >,>=, <,
<=, atau <>.
b. Multiple-RowSubquery
Subquery baris ganda (multiple-row) mengembalikan lebih dari satu baris
data. Subquery baris ganda dapat menggunakan operator komparasi IN, ANY,
SOME, atau ALL.
c. Multiple-Column Subquery
Subquery kolom ganda (multiple-column) mengembalikan lebih dari satu baris
dan satu kolom data.

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.

Contoh lain seperti perintah sub query berikut:

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.

Jika perintah sub query diatas dijalankan maka hasilnya adalah

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:

Perhatikan hasil tersebut dan jelaskan dalam laporan

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:

Jika dijalankan perintah tersebut memberikan hasil sebagai berikut:

72
Perhatikan hasil tersebut dan jelaskan pada laporan.

4. Operator EXISTS dan NOT EXISTS


Operator EXISTS dan NOT EXISTS digunakan pada subquery untuk memeriksa
apakah subquery mengembalikan hasil atau tidak. Apabila subquery
mengembalikan hasil, EXIST akan mengembalikan nilai true. Begitu pula
sebaliknya, jika tidak mengembalikan hasil.
a. E
X
I
S
T
S
Pernyataan berikut akan mendapatkan data matakuliah yang pernah
diambil oleh mahasiswa pada semester genap. Tuliskan perintah sub query
berikut dan lihat hasilnya:

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

MySQL reference manual 8.0 https://dev.mysql.com/doc/refman/8.0/en/

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:

Ataubisa juga dengan menggunakan perintah berikut:

3. Mengeksekusi sebuah storage procedure dapat dilakukan dengan memberikan


perintah berikut, dan hasilnya seperti terlihat dibagian bawah perintah yang
diberikan.

78
4. Menghapus sebuah stored procedure bernama MhsTK:

5. Buatlah storage procedure berikut:

6. Berikan perintah untuk melakukan pengecekan terhadap isi tabel Jurusan

7. Tambahkan data pada tabel jurusan (Kode_jur=XX, Nama_jurusan=MTI, Jenjang=S2


dan Status_akreditasi=B) menggunakan perintah berikut:

Periksalah isi tabel Jurusan setelah di tambahkan datanya

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:

Ataubisa juga dengan menggunakan perintah berikut:

3. Berikan perintah berikut:

80
4. Menghapus sebuah Stored Function bernama getNama

5. Buat fungsi untuk menghitung bobot nilai.

6. Cara memanggil fungsi HitungBobot dapat dilakukan dengan menggunakan perintah


berikut :

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

1. Buatlah sebuah Procedure untuk menampilkan data mahasiswa berdasarkan kota


dan jurusan yang sama.
2. Buatlah sebuah Function untuk menghitung nilai IPK mahasiswa berdasarkan nilai
yang sudah didapat pada tabel KRS
3. Lengkapi data yang diperlukan

REFERENSI

MySQL reference manual 8.0 https://dev.mysql.com/doc/refman/8.0/en/

82
MODUL 11
TRIGGER

CAPAIAN PEMBELAJARAN

Menguasai pembuatan dan penerapan trigger di dalam sebuah DBMS

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

1. Untuk keperluan penggunaan Trigger, tambahkan sebuah tabel sebagai berikut:

84
2. Buat sebuah trigger berikut

3. Untuk melihat daftar trigger yang tersedia dapat menggunakan sintaks:

Tambahkan data pada tabel mahasiswa

4. Lihat isi tabel Log_mhs

Dari hasi pembacaan tabel log_mhs, coba perhatikan dan jelaskan kegunaan Trigger
ins_Mhs

5. Buatlah sebuah triger baru

85
6. Ubahlah data Budi

7. Lihat isi tabel Log_mhs

Dari hasi pembacaan tabel log_mhs, coba perhatikan dan jelaskan kegunaan trigger
updt_mhs

8. Buat trigger baru

9. Hapus data Budi

10.Lihat isi tabel Log_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

Buatlah triger untuk melakukan pengecekan sebelum melakukan penambahan


data. Jika data sudah ada, maka berikan catatan kejadian di tabel log dengan
keterangan “duplikasi data”.

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

MySQL reference manual 8.0 https://dev.mysql.com/doc/refman/8.0/en/

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;

3. BEGIN, COMMIT dan ROLLBACK


BEGIN atau START TRANSACTION digunakan untuk memulai transaksi, COMMIT
untuk mengakhiri transaksi dan menyimpan semua perubahan, sedangkan
ROLLBACK digunakan untuk menghentikan proses transaksi dan mengabaikan semua
perubahan yang telah dilakukan.
Pada tipe tabel InnoDB, tidak berlaku transaksi didalam transaksi (nested-
transaction), artinya jika perintah BEGIN dieksekusi sebelum transaksi selesai
dilakuka (perintah COMMIT), maka secara otomatis, perintah COMMIT akan
dieksekusi terlebih dahulu.

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:

13.Persiapan database dan table


Buatlah sebuah database dan tebel berikut untuk mempraktekan proses transaksi

14.Implementasi Transaksi
Transaksi di MySQL diinisiasi dengan perintah START TRANSACTION atau BEGIN dan
diakhiri dengan perintah COMMIT .
(1) Aktifkan transaksi basis data.

(2) Tambahkan data ke tabel tbDemoTR,

(3) Periksa hasil penambahan data

91
(4) Sekarang keluarlah dari command prompt MySQL lalu masuk kembali kemudian
periksalah isi tabel tbDemoTR

Terlihat bahwa tabel dalam posisi kosong padahal sebelumnya tabel


tbDemoTR sudah diisi data. Hal tersebut dikarenakan tidak diterapkannya
transaksi dengan memanggil COMMIT. Penutupan prompt mysql
mengakibatkan transaksi di-rollback secara eksplisit.
(5) Ulangi langkah nomor 2, namun pada langkah nomor 4, ketikkan pernyataan
COMMIT;

Perhatikan dan jelaskan hasilnya pada laporan

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,

(2) Tetapkan nilai autocommit menjadi 0 (mode transaksi on),

(3) Tambahkan data pada tabel tbDemoTR dan periksa hasilnya

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.

Amati hasil perintah pada langkah nomor (4).

(5) Periksa nilai variabel autocommit.

(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.

(2) Periksa isi tabel tbDemoTR.

(3) Tambahkan data berikut ini.

93
(4) Tambahkan data yang sama.

(5) Berikan perintah ROLLBACK untuk membatalkan rangkaian perintah dalam satu
transaksi.

(6) Lihat kembali isi tabel tbDemoTR.

Perhatikan perintah diatas dan jelaskan dalam laporan

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.

(2) Terlebih dahulu periksa nilai di tabel “trans_demo”.

(3) Tambahkan basis data berikut.

(4) Gunakan pernyataan SAVEPOINT untuk menandai perintah pertama.

(5) Tambahkan lagi baris baru.

(6) Berikan perintah ROLLBACK ke SAVEPOINT my_point1.

94
(7) Tambahkan lagi baris baru.

(8) Terapkan transaksi.

(9) Periksa data di tabel “trans_demo”.

Perhatikan langkah-langkah diatas, jelaskan analisisnya dalam laporan

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

MySQL reference manual 8.0 https://dev.mysql.com/doc/refman/8.0/en/

95
MODUL 13
DATA CONTROL LANGUAGE (DCL)

CAPAIAN PEMBELAJARAN

Menguasai penggunaan DCL dalam administrasi pengguna basis data

KEBUTUHAN ALAT/BAHAN/SOFTWARE

7. Notepad++
8. MySQL

DASAR TEORI

Data Control Language (DCL) merupakan perintah-perintah yang dapat digunakan


untuk menjaga keamanan basis data. Perintah tersebut dapat dipakai untuk
menentukan akses basis data hanya dapat dilakukan oleh orang-orang tertentu dan
dengan macam akses yang dibatasi pula. Adapun Objek-Objek DCL dalam Mysql
diantaranya :
1. Tabel User dari Database MySQL
Tabel user adalah tabel yang ada dalam database MySQL. Tabel user hanya
diperuntukkan bagi seorang Administrator (root). Tabel user bersifat global,
apapun perubahan yang terjadi pada tabel ini akan mempengaruhi jalannya
keseluruhan system MySQL. Tabel ini yang nantinya digunakan untuk
mendefinisikan user dari basis data. Adapun isi dari tabel tersebut adalah sebagai
berikut.

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.

2. Tabel Table_Priv dari database MySQL


Tabel_priv berfungsi mengatur tabel apa saja yang dapat diakses oleh seorang user,
berikut jenis izin aksesnya. Tingkat akses hanya untuk tabel. Pada prinsipnya hanya
bekerja seperti db table, kalau tidak digunakan untuk tabel sebagai ganti database.
Sintaks Umum :
SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT, REFERENCES, INDEX,
ALTER, CREATE VIEW, SHOW VIEW

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

2. Menghapus semua user tanpa identitas

3. Menambah beberapa user

99
4. Menampilkan user dan password tabel user

5. Mengubah password beberapa user (perhtikan perubahan pada user=’edi’)

6. Menampilkan user dan password tabel user

7. Berikan perintah FLUSH PRIVILEGES untuk mengaktifkan perubahan-perubahan


yang terjadi pada 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

1. Buatlah duplikat database akademik dengan menggunakan nama akd


2. Buatlah sebuah user baru untuk mengakses database tersebut
3. Aturlah pemberian hak akses dengan berbagai variasi.

REFERENSI

MySQL reference manual 8.0 https://dev.mysql.com/doc/refman/8.0/en/

102
MODUL 14
STUDI KASUS

CAPAIAN PEMBELAJARAN

Mahasiswa mampu merancang Basis Data dan mengimplementasikan dengan DBMS

KEBUTUHAN ALAT/BAHAN/SOFTWARE

9. Notepad++
10. MySQL

DASAR TEORI

Semua materi pertemuan 1 samapai pertemuan 13

PRAKTIK

18. Buatlah rancangan sebuah basis data (ERD)


19. Ubahlah rancangan kedalam struktur tabel
20. Transformasikan rancanagan basis data tersebut kedalam DBMS
21. Isikan data (dummy) pada masing-masing tabel dalam basis data tersebut
22. Berikan perintah-perintah dan dokumentasikan dalam sebuah laporan
23. Perintah yang diberikan minimal meliputi DDL, DML, View, Sub Query, PL, DCL dan
Transaction

LATIHAN

TUGAS

103
REFERENSI

104

Anda mungkin juga menyukai