Anda di halaman 1dari 31

LAPORAN HASIL PRAKTIKUM

BASIS DATA II

NAMA : ALFIAN RIZALDI


NIM : DBC 116 093
KELAS : C
MODUL : II (Menggunakan Fungsi-Fungsi
Agregasi dan Fungsi String)

JURUSAN TEKNIK INFORMATIKA


FAKULTAS TEKNIK
UNIVERSITAS PALANGKARAYA
2018
BAB I
TUJUAN DAN LANDASAN TEORI

1.1 Tujuan

Mahasiswa dapat menggunakan fungsi-fungsi agregasi dan fungsi-fungsi


string dalam Stored Procedure dan Function.
1.2 Landasan Teori

1.2.1 Aggregate Function


Fungsi adalah sebuah subprogram yang menghasilkan suatu nilai jika
dipanggil. Fungsi agregat adalah fungsi standar di dalam SQL, suatu fungsi
yang digunakan untuk melakukan summary, fungsi statistik standar yang
dikenakan pada suatu tabel atau query. Macam-macam fungsi agregasi dalam
SQL adalah sebagai berikut :
 AVG (Average / rata - rata)
AVG berfungsi untuk mengembalikan nilai rata – rata dari sekumpulan
nilai yang terdapat pada sekumpulan nilai record pada sebuah field.Contoh
:
SQL > SELECT AVG(donasi) Donasi FROM keuangan;
Donasi : merupakan alias dari hasil fungsi AVG(donasi)
Queri diatas digunakan untuk menampilkan donasi rata – rata mahasiswa
yang terdapat di dalam tabel keuangan.
 MAX (Maximum)
MAX berfungsi untuk mengembalikan nilai maksimum yang terdapat pada
sekumpulan nilai pada sebuah field.Contoh :
SQL > SELECT MAX(donasi) “Donasi Terbesar” FROM keuangan;
Donasi Terbesar : merupakan alias dari hasil fungsi MAX(donasi)
Queri diatas digunakan untuk menampilkan nilai donasi yang paling besar
di dalam tabel keuangan.
 MIN (Minimum)
MIN berfungsi untuk mengambil nilai minimum yang terdapat pada
sekumpulan nilai pada sebuah field.Contoh :
SQL > SELECT MIN(donasi) “Donasi Terkecil” FROM keuangan;
Donasi Terkecil : merupakan alias dari hasil fungsi MIN(donasi)
Queri diatas digunakan untuk menampilkan nilai donasi yang paling kecil
di dalam tabel keuangan.
 SUM (jumlah / sigma)
SUM berfungsi untuk menghitung jumlah total nilai pada sebuah kolom
tertentu.Contoh :
SQL > SELECT SUM(donasi) “Total donasi” FROM keuangan;
Queri diatas digunakan untuk menampilkan total jumlah donasi untuk
seluruh mahasiswa pada tabel keuangan.
 COUNT (banyak record)
COUNT berfungsi untuk menghitung jumlah record yang memenuhi
kondisi tertentu.Contoh :
SQL>SELECT COUNT(*) “Donasi Manajemen Informatika” FROM
keuangan WHERE nim like ‘3010%’;
Queri diatas digunakan untuk menampilkan jumlah mahasiswa
Manajemen Informatika yang memberikan donasi.
1.2.2 Fungsi String

1. ASCII()
Fungsi ASCII() adalah mengubah sebuah karakter menjadi nilai dari
sebuah ASCII-nya. Misalkan jika kita menjalankan SELECT ASCII('A'),
maka akan menghasilkan nilai 65, yang mana kita telah ketahui bersama
bahwa kode atau nilai ASCII dari 'A' adalah 65.

2. CHAR()
Fungsi CHAR() adalah berlawanan dari fungsi ASCII(), yang mana isi
parameter (argument) dari fungsi CHAR() adalah sebuah nilai ASCII-nya
dan kemudian akan menghasilkan sebuah karakter dari nilai ASCII
tersebut. Misalkan jika kita menjalankan SELECT CHAR('65'), maka
akan menghasilkan sebuah karakter 'A', yang mana kita telah ketahui
bersama bahwa karakter 'A' memiliki nilai ASCII 65.
3. FORMAT()
Fungsi FORMAT() adalah fungsi untuk mengatur jumlah digit di belakang
koma dari suatu nilai integer, decimal atau double. Pembulatannya adalah
menggunakan pembulatan ke atas. Misalkankita menjalankan SELECT
FORMAT(12345.678, 2), maka akan menghasilkan 12,345.68 yang
terbilang "Dua Belas Ribu Tiga Ratus Empat Puluh Lima Koma Enam
Puluh Delapan" dengan ketelitian 2 digit di belakang.

4. CONCAT()
Fungsi CONCAT() ini bisa dibilang adalah fungsi yang cukup sering
digunakan terkait perihal menyambungkan atau menggabunggkan dua
string atau lebih. Misalkan kita menjalankan SELECT CONCAT('Tio',' ',
'Satrio',' ', 'Wicaksono'), maka akan menghasilkan Tio Satrio Wicaksono.
Sebenarnya untuk masalah menggabungkan dua string atau lebih, kita juga
bisa melakukannya dengan tanpa fungsi ini, melainkan dengan cara seperti
ini.SELECT 'Tio' ' ' 'Satrio' ' ' 'Wicaksono', itu juga akan menghasilkan
hasil yang serupa yaitu Tio Satrio Wicaksono. Namun, semua kembali
kepada individu masing-masing, untuk sisi performa, saya pribadi belum
dapat merekomendasikan yang mana yang lebih baik.

5. REPEAT()
Fungsi REPEAT() adalah fungsi untuk mengulang karakter atau string
dengan sejumlah yang kita inginkan. Misalkan kita menjalankan SELECT
REPEAT('*', 3), maka akan menghasilkan "***".

6. REVERSE()
Fungsi REVERSE() adalah fungsi untuk memutar balik sebuah string.
Misalkan kita menjalankan SELECT REVERSE('zyxwvutsrq'), maka akan
menghasilkan qrstuvwxyz

7. SUBSTRING()
Fungsi SUBSTRING() adalah fungsi yang bisa dibilang paling sering
digunakan, fungsinya adalah untuk mengambil sebagian karakter dari
sebuah string, pertama ditentukan mulai dari mana posisi karakter
pengambilannya, kemudian seberapa banyak jumlah pengambilannya,
terhitung pengambilannya dari kiri ke kanan. Misalkan kita menjalankan
SELECT SUBSTRING('Satrio', 3, 4), maka akan menghasilkan trio.

8. TRIM(str)
Digunakan untuk menghapus spasi kosong dari sebelah kiri dan kanan
string.

9. REPLACE(x, y, z)
Mengganti semua string y yang ditemukan dalam string x menggunakan
string z.Contoh: Select REPLACE('Wempi Satria', 'i', 'e');
Hasil: Wempe Satrea

10. LEFT(x, y)
Fungsi ini untuk mengambil sejumlah y karakter dari string x, mulai dari
posisi awal.
Contoh: Select LEFT('Wempi Satria', 5);
Hasil: Wempi

11. LENGTH(x)
Untuk mengetahui panjang string x, kita dapat menggunakan fungsi ini.
Contoh: Select LENGTH('Wempi Satria');
Hasil: 12

12. LOCATE(x, y, z)
Untuk mengetahui posisi string x di dalam string y mulai dari posisi ke z.
Contoh: Select LOCATE('m', 'Wempi', 2);
Hasil: 3

13. RIGHT(x, y)
Mengambil y karakter dari string x dimulai dari posisi paling kanan
(akhir).
Contoh: Select RIGHT('Wempi Satria', 4);
Hasil: tria

14. RPAD(x, y, z)Menambahkan string z di sebelah kanan string x jika


panjang string x lebih kecil dari y.Contoh: Select RPAD('Wempi', 12,
'Sat');Hasil: WempiSatSatS
BAB II
LANGKAH KERJA

2.1 Bagian Contoh

1. Menghitung jumlah karyawan yang bekerja di suatu departemen dengan


fungsi Count pada prosedur HitungKaryawan.

Prosedur HitungKaryawan akan menghitung jumlah karyawan yang


berkerja pada departemen yang kode departemennya adalah 1.

2. Membuat fungsi NIPBaru yang akan digunakan untuk membuat nip baru
karyawan, yang terdiri atas gabungan dari Nip lama dengan tiga karakter
pertama dari nama karyawan.
Fungsi NIPBaru akan membuat Nip Baru bagi karyawan yang nip
lamanya adalah 12345, dengan caramenggabungkan nip lama karyawan
dengan 3 karakter pertama dari nama karyawan tersebut.

2.2 Tugas Praktikum

Kerjakan tugas-tugas berikut, dengan menggunakan database Restoran seperti


pada Modul I.
1. Buat Procedure untuk menampilkan NamaMenu yang paling banyak
dipesan.
2. Buat Procedure untuk menampilkan NoMeja yang paling sering ditempati
oleh pengunjung.
3. Buat Fungsi bernama BuatNoFaktur untuk membuat NoFaktur pada
tabel Pembayaran,dengan format: thn (2 digit) + bln (2 digit) + tgl (2
digit) + “-“ + No Urut(2 digit). Misalnyauntuk pembayaran pertama pada
tanggal 10 Oktober 2015 maka No Faktur adalah 151010-01.
4. Buat Prosedur bernama HitungTotal untuk menghitung Total bagi tabel

Pembayaran (Total =Σ(DetailPesan.Harga x DetailPesan.Banyak))

5. Buat Fungsi untuk menghitung pendapatan restoran dalam sehari.


BAB III
PEMBAHASAN

3.1 Bagian Contoh

Pada bagian belajar dari contoh ini,setiap praktikan diharapkan dapat mempelajari
bagaimana menggunakan fungsi-fungsi agregasi dan fungsi-fungsi string dalam
Stored Procedure dan Function.

3.1.1 Procedure HitungKaryawan

Pada langkah kerja, praktikan diminta untuk menghitung jumlah


karyawan yang bekerja di suatu departemen dengan fungsi Count pada
prosedur HitungKaryawan dengan menggunakan database
“personalia” yang telah dibuat pada bagian contoh modul sebelumnya
(modul 1). Berikut ini pembahasan query yang dipakai pada
procedureini :

Gambar 3.01 Procedure HitungKaryawan

DELIMITER $$
Delimiter adalah karakter atau string yang digunakan untuk menyatakan
akhir SQL statement. Default delemiter pada MySQL adalah semicolon
(;).Pada procedure di atas, delimiter $$ digunakan untuk menyatakan
awal dari SQL statement.
DROP PROCEDURE IF EXISTS `personalia`.`HitungKaryawan`$$
Perintah drop procedure artinya untuk menghapus procedure
‘HitungKaryawan’, if existsartinya bersifat optional yaitu jika
prosedurnya sudah pernah ada.
CREATE PROCEDURE `personalia`.`HitungKaryawan`(kodeDep
CHAR(1))
Perintah CREATE PROCEDURE digunakan untuk membuat procedure
pada database personaliayang diberi namaHitungKaryawan. Dalam
satu database tidak boleh ada procedure dengan nama yang sama, nama
procedure juga bersifat tidak case sensitive, yang artinya penggunaan
huruf besar dan huruf kecil tidak akan berpengaruh pada program.
Parameter yang digunakan adalah kodeDep dengan tipe data CHAR
dengan batas maksimum jumlah karakter 1. Parameter yang telah di
deskripsikan ini digunakan untuk menampung data yang akan di
inputkan ketika procedure dipanggil.

BEGIN
Perintah begin ini digunakan untuk mengawali badan procedure.

SELECT COUNT(NIP) AS 'Jumlah Karyawan' FROM Karyawan


WHERE kode_dep = kodeDep;
COUNTmerupakan fungsi yang digunakan untuk menghitung jumlah
record atau data (bisa semua, bisa juga hanya data tertentu) yang
terdapat pada suatu kolom dalam suatu tabel.Hasil penjumlahan dengan
fungsi COUNTakan ditampilkan dengan menggunakan statement
SELECT.Select count disini digunakan untuk menampilkan isi kolom
NIP dari tabel Karyawan yang kemudian dihitung berdasarkan nilai
kode departemen yang ingin diketahui jumlah karyawannya. Dengan
menggunakan statement AS,data akan ditampilkan diberi nama
kolomJumlah Karyawan.

END$$
Statement END$$ digunakan untuk mengakhiri badan procedure.
DELIMITER ;
StatementDELEMITER; digunakan untuk mengembalikan delimiter
menjadi semicolon (;) lagi. Eksekusi procedure dengan menekan
tombol F9 atau dengan mengklik Execute All.

Setelah selesai membuat procedure HitungKaryawan seperti di atas,


lalu lakukan pemanggilan procedure HitungKaryawan dengan query
berikut:

CALL HitungKaryawan(1);
CALL merupakan perintah panggil diikuti dengan nama
procedureHitungKaryawan kemudian diikuti nilai(1) adalah kode
departemen yang ingin diketahui jumlah karyawannya.

Berikut hasil pemanggilan procedure HitungKaryawan yang


menghitung jumlah karyawan dengan kode departemen 1 :

Gambar 3.02 Jumlah Karyawan Kode Departemen 1

3.1.2 Function NIPBaru

Pada langkah kerja, praktikan diminta untuk membuat fungsi NIPBaru


yangmampu membuat nip baru karyawan, yang terdiri atas gabungan
dari Nip lama dengan tiga karakter pertama dari nama karyawan dengan
menggunakan database “personalia” yang telah dibuat pada bagian
contoh modul sebelumnya (modul 1). Berikut ini pembahasan query
yang dipakai pada fungsi ini :
DELIMITER $$
Delimiter adalah karakter atau string yang digunakan untuk menyatakan
akhir SQL statement. Default delemiter pada MySQL adalah semicolon
(;).Pada fungsi di atas, delimiter $$ digunakan untuk menyatakan awal
dari SQL statement.
DROP FUNCTION IF EXISTS `personalia`.`NIPBaru`$$
Perintah drop function artinya untuk menghapus function ‘NIPBaru’, if
existsartinya bersifat optional yaitu jika functionnya sudah pernah ada.

CREATE FUNCTION `personalia`.`NIPBaru`(NipLama CHAR(5))


Perintah CREATE FUNCTION digunakan untuk membuat
functionpada database personaliayang diberi namaNIPBaru. Dalam
satu database tidak boleh ada function dengan nama yang sama, nama
function juga bersifat tidak case sensitive, yang artinya penggunaan
huruf besar dan huruf kecil tidak akan berpengaruh pada program.
Parameter yang digunakan adalah NipLama dengan tipe data CHAR
dengan batas maksimum jumlah karakter 5. Parameter yang telah di
deskripsikan ini digunakan untuk menampung data yang akan di
inputkan ketika function dipanggil.

RETURNS CHAR(9)
Merupakan statement untuk mendeskripsikan bahwa nilai balikan yang
dihasilkan pada function ini bertipe data CHAR dengan batas
maksimum karakter 9.
DETERMINISTIC
Statement DETERMINISTICdigunakan untuk menentukan siapa saja
yang boleh mengakses/menggunakan function ini, apakah hanya user
selaku pembuatnya saja (deterministic) atau boleh diakses oleh siapa
saja (not deterministic).

BEGIN
Perintah begin ini digunakan untuk mengawali badan function.

DECLARE tempNip CHAR(5);


Statement di atas digunakan untuk mendeklarasikan variabel lokal
tempNip yang akan digunakan untuk menampung data NIPuntuk
membuat NIP baru.
DECLARE tempNama CHAR(3);
Statement di atas digunakan untuk mendeklarasikan variabel lokal
tempNama yang akan digunakan untuk menampung data 3 karakter
Nama karyawan untuk membuat NIP baru.
SELECT TRIM(SUBSTRING(nama,1,3)) FROM Karyawan
WHERE nip=niplama INTO tempNip;

Query diatas digunakan untuk membuat dan menampilkan NIP baru


karyawan tertentu yang NIP lamanya kita inputkan saat dilakukan
pemanggilan function. Ketika function NIPBaru dipanggil, data NIP
lama karyawan yang kita inputkan akan ditampung dalam parameter
niplama. Kemudian nip lama tersebutakan digunakan sebagai data
patokan yang digunakan untuk menyeleksi data yang dimaksud saat
pemanggilan function dilakukan dengan membandingkan data yang
diinputkan (niplama) dengan data-data NIP karyawan dalam kolom nip
pada tabel Karyawan. Jika data yang diinputkan nip=niplama, maka
data itulah yang diproses. (SUBSTRING(nama,1,3)) digunakan untuk
mengambil 3 karakter pada data nama karyawan dari kolom nama
dimulai dari karakter ke-1. Dengan menggunakan fungsi TRIM,
karakter spasi yang mungkin terdapat pada awal maupun akhir dari
string nama akan dipotong. Data nama yang telah diproses akan
ditampilkan pada variabel tempNip dengan menggunakan statement
SELECT.

RETURN CONCAT(niplama,tempNip);

RETURN digunakan untuk mengembalikan hasil penggabungan data


yang telah diproses dalam function, sehingga nip baru karyawan dapat
ditampilkan. StatementCONCAT(niplama,tempNip); digunakan untuk
menggabungkan data yang ditampung dalam variabel niplama dengan
data yang disimpan pada variabel tempNip.

END$$
Statement END$$ digunakan untuk mengakhiri badan function.

DELIMITER ;
StatementDELEMITER; digunakan untuk mengembalikan delimiter
menjadi semicolon (;) lagi. Eksekusi function dengan menekan tombol
F9 atau dengan mengklik Execute All.

Gambar 3.03 Fungsi NIPBaru

Setelah selesai membuat function NIPBaru seperti di atas, lalu lakukan


pemanggilan function NIPBaru dengan query berikut:

SELECT NIPBaru(12345) AS 'Nip Baru Pegawai';


SELECT digunakan untuk memilih, NIPBaru adalah nama function
yang ingin dipanggil diikuti nip lama ‘12345’ yang kemudian akan
ditampilkan sebagai Nip Baru Pegawai.

Gambar 3.04 NIPBaru Karyawan dengan niplama 12345


Karyawan yang memiliki NIP 1234 adalah Rusli Duchan. Dengan
menggunakan function tersebut, maka NIP barunya yang terbentuk
adalah 12346Rus.

3.2 Tugas Praktikum

Pada bagian tugas praktikum ini,setiap praktikan diharapkan lebih paham


bagaimana menggunakan fungsi-fungsi agregasi dan fungsi-fungsi string dalam
Stored Procedure dan Function.

1. Membuat Procedure untuk menampilkan NamaMenu yang paling banyak


dipesan.

Gambar 3.05 Procedure MenuTerlaris


DELIMITER $$
Delimiter adalah karakter atau string yang digunakan untuk menyatakan
akhir SQL statement. Default delemiter pada MySQL adalah semicolon
(;).Pada procedure di atas, delimiter $$ digunakan untuk menyatakan
awal dari SQL statement.

DROP PROCEDURE IF EXISTS `MenuTerlaris`$$Perintah drop


procedure artinya untuk menghapus procedure ‘NamaMenu’ pada
database restoran, if existsartinya bersifat optional yaitu jika
prosedurnya sudah pernah ada.
CREATE DEFINER=`root`@`localhost` PROCEDURE
`MenuTerlaris`()
Perintah CREATE PROCEDURE digunakan untuk membuat
procedure pada database restoranyang diberi namaMenuTerlaris.
Dalam satu database tidak boleh ada procedure dengan nama yang
sama, nama procedure juga bersifat tidak case sensitive, yang artinya
penggunaan huruf besar dan huruf kecil tidak akan berpengaruh pada
program. Tidak ada parameter yang digunakan pada procedure ini.
BEGIN
Perintah begin ini digunakan untuk mengawali badan procedure.

SELECT MAX(NamaMenu) AS 'Berapa Banyak' FROM


DetailPesan;
Perintah di atas digunakan untuk menampilkan nama menu yang paling
banyak dipesan oleh pengunjung restoran sebagai Nama Menu yang
Paling Banyak Dipesan. Statement MAX digunakan untuk
menampilkan data dengan nilai yang tertinggi dari kolom NamaMenu
dari tabel DetailPesan.

END$$
Statement END$$ digunakan untuk mengakhiri badan procedure.

DELIMITER ;
StatementDELEMITER; digunakan untuk mengembalikan delimiter
menjadi semicolon (;) lagi. Eksekusi procedure dengan menekan
tombol F9 atau dengan mengklik Execute All.

Setelah selesai membuat procedure NamaMenu seperti di atas, lalu


lakukan pemanggilan procedure NamaMenu dengan query berikut:

CALL NamaMenu;
CALL merupakan perintah panggil diikuti dengan nama
procedureNamaMenu.
Gambar 3.06 MenuTerlaris

2. Membuat Procedure untuk menampilkan NoMeja yang paling sering


ditempati oleh pengunjung.

Gambar 3.07 Procedure MejaTerlaris

DELIMITER $$
Delimiter adalah karakter atau string yang digunakan untuk menyatakan
akhir SQL statement. Default delemiter pada MySQL adalah semicolon
(;).Pada procedure di atas, delimiter $$ digunakan untuk menyatakan
awal dari SQL statement.

DROP PROCEDURE IF EXISTS `MejaTerlaris`$$Perintah drop


procedure artinya untuk menghapus procedure ‘MejaTerlaris’ pada
database restoran, if existsartinya bersifat optional yaitu jika
prosedurnya sudah pernah ada.
CREATE DEFINER=`root`@`localhost` PROCEDURE
`MejaTerlaris`()
Perintah CREATE PROCEDURE digunakan untuk membuat procedure
pada database restoranyang diberi namaMejaTerlaris. Dalam satu
database tidak boleh ada procedure dengan nama yang sama, nama
procedure juga bersifat tidak case sensitive, yang artinya penggunaan
huruf besar dan huruf kecil tidak akan berpengaruh pada program.
Tidak ada parameter yang digunakan pada procedure ini.
BEGIN
Perintah begin ini digunakan untuk mengawali badan procedure.

SELECT NoMeja, COUNT(NoMeja) AS 'Berapa Kali di tempati'

FROM Pembayaran GROUP BY NoMeja ORDER BY


COUNT(NoMeja) DESC;

Perintah di atas digunakan untuk menampilkan nomor meja yang paling


banyak ditempati oleh pengunjung restoransebagai “Berapa Kali
Ditempati’. Statement COUNT digunakan untuk menghitung jumlah
meja(record) yang banyak ditempati oleh pengunjung sebagai “Jumlah
Ditempati” berdasarkan data-data yang terdapat pada kolom NoMeja
dari tabel Pembayaran.

END$$
Statement END$$ digunakan untuk mengakhiri badan procedure.

DELIMITER ;
StatementDELEMITER; digunakan untuk mengembalikan delimiter
menjadi semicolon (;) lagi. Eksekusi procedure dengan menekan
tombol F9 atau dengan mengklik Execute All.

Setelah selesai membuat procedure NoMeja seperti di atas, lalu lakukan


pemanggilan procedure NoMeja dengan query berikut:

CALL NoMeja;
CALL merupakan perintah panggil diikuti dengan nama
procedureNoMeja.
Gambar 3.08 Meja yang Paling Banyak Ditempati

3. Membuat Fungsi bernama BuatNoFaktur untuk membuat NoFaktur pada


tabel Pembayaran,dengan format: thn (2 digit) + bln (2 digit) + tgl (2
digit) + “-“ + No Urut(2 digit).

Gambar 3.09 Function BuatNoFaktur

DELIMITER $$
Delimiter adalah karakter atau string yang digunakan untuk menyatakan
akhir SQL statement. Default delemiter pada MySQL adalah semicolon
(;).Pada fungsi di atas, delimiter $$ digunakan untuk menyatakan awal
dari SQL statement.

DROP FUNCTION IF EXISTS `BuatNoFaktur`$$


Perintah drop function artinya untuk menghapus function
‘BuatNoFaktur’ pada database restoran, if exists artinya bersifat
optional yaitu jika functionnya sudah pernah ada.
CREATE DEFINER=`root`@`localhost` FUNCTION `
BuatNoFaktur`(Tanggal DATE)
Perintah CREATE FUNCTION digunakan untuk membuat
functionpada database restoranyang diberi namaBuatNoFaktur.
Dalam satu database tidak boleh ada function dengan nama yang sama,
nama function juga bersifat tidak case sensitive, yang artinya
penggunaan huruf besar dan huruf kecil tidak akan berpengaruh pada
program.
Parameter yang digunakan adalah Tanggal dengan tipe data DATE.
Parameter yang telah di deskripsikan ini digunakan untuk menampung
data yang akan di inputkan ketika function dipanggil.

RETURNS CHAR(10)
Merupakan statement untuk mendeskripsikan bahwa nilai balikan yang
dihasilkan pada function ini bertipe data CHAR dengan batas
maksimum karakter 10.
DETERMINISTIC
Statement DETERMINISTICdigunakan untuk menentukan siapa saja
yang boleh mengakses/menggunakan function ini, apakah hanya user
selaku pembuatnya saja (deterministic) atau boleh diakses oleh siapa
saja (not deterministic).

BEGIN
Perintah begin ini digunakan untuk mengawali badan function.

DECLARE vThn CHAR(2);


Statement di atas digunakan untuk mendeklarasikan variabel lokal
vThn yang akan digunakan untuk menampung data 2 karakter dari
tahun.

DECLARE vBln CHAR(2);


Statement di atas digunakan untuk mendeklarasikan variabel lokal vBln
yang akan digunakan untuk menampung data 2 karakter dari bulan.
DECLARE vTgl CHAR(2);
Statement di atas digunakan untuk mendeklarasikan variabel lokal vTgl
yang akan digunakan untuk menampung data 2 karakter daritanggal.

DECLARE nomor_urut INT;


Statement di atas digunakan untuk mendeklarasikan variabel lokal
nomor_urut yang akan digunakan untuk menampung data no urut
pesanan.

SET vThn=SUBSTRING(vTanggal, 3, 2);


Statemen SET pada query di atas digunakan untuk memberikan atau
mendefinisikan nilai ke variabel vThn. Sedangkan statement
SUBSTRING digunakan untuk mengambil beberapa karakter dari
sebuah string. Query SUBSTRING(vTanggal, 3, 2) berarti bahwa dari
string yang diinputkan pada parameter vTanggal, akan diambil 2
karakter mulai dari karakter yang ke-3. 2 karakter yang diambil itu akan
diisikan pada variabel vThn.

SET vBln=SUBSTRING(vTanggal, 6, 2);

Statemen SET pada query di atas digunakan untuk memberikan atau


mendefinisikan nilai ke variabel vBln. Sedangkan statement
SUBSTRING digunakan untuk mengambil beberapa karakter dari
sebuah string. Query SUBSTRING(vTanggal, 6, 2) berarti bahwa dari
string yang diinputkan pada parameter vTanggal, akan diambil 2
karakter mulai dari karakter yang ke-6. 2 karakter yang diambil itu akan
diisikan pada variabel vBln.

SET vTgl=SUBSTRING(vTanggal, 9, 2);

Statemen SET pada query di atas digunakan untuk memberikan atau


mendefinisikan nilai ke variabel vTgl. Sedangkan statement
SUBSTRING digunakan untuk mengambil beberapa karakter dari
sebuah string. Query SUBSTRING(vTanggal, 9, 2) berarti bahwa dari
string yang diinputkan pada parameter vTanggal, akan diambil 2
karakter mulai dari karakter yang ke-9. 2 karakter yang diambil itu akan
diisikan pada variabel vTgl.
SELECT COUNT(NoFaktur) FROM Pembayaran WHERE
NoFaktur LIKE CONCAT(vThn, vBLn, vTgl, "-", '%') INTO
nomor_urut;
Query di atas digunakan untuk menampilkan nomor faktur dari tabel
Pembayaran, dimana nomor faktur dibuat dengan menggabungkan data
tahun, bulan, tanggal dan nomor urut pesanan.

RETURN CONCAT(vThn, vBLn, vTgl, "-" , nomor_urut+1);

RETURN digunakan untuk mengembalikan hasil penggabungan data


yang telah diproses dalam function, sehingga no faktur baru dapat
ditampilkan. StatementCONCAT(vThn, vBLn, vTgl, "-" ,
nomor_urut+1); digunakan untuk menggabungkan data yang
ditampung dalam variabel vThn, vBLn, vTgl, nomor_urut.

END$$
Statement END$$ digunakan untuk mengakhiri badan function.

DELIMITER ;
StatementDELEMITER; digunakan untuk mengembalikan delimiter
menjadi semicolon (;) lagi. Eksekusi function dengan menekan tombol
F9 atau dengan mengklik Execute All.

Setelah selesai membuat function BuatNoFaktur seperti di atas, lalu


lakukan pemanggilan function BuatNoFaktur dengan query berikut:

SELECT BuatNoFaktur('2018-10-15');
SELECT digunakan untuk memilih, BuatNoFaktur adalah nama
function yang ingin dipanggil diikuti tanggal ‘2018-10-15’ yang
kemudian akan ditampilkan sebagai nomor faktur baru.

Gambar 3.10 Function BuatNoFaktur


Di atas adalah hasil dari pemanggilan fungsi BuatNoFaktur untuk
pembayaran pertama pada tanggal 15 Oktober 2018.

4. Membuat Prosedur bernama HitungTotal untuk menghitung Total bagi

tabel Pembayaran (Total =Σ(DetailPesan.Harga x DetailPesan.Banyak))

Gambar 3.11Procedure HitungTotal


DELIMITER $$
Delimiter adalah karakter atau string yang digunakan untuk menyatakan
akhir SQL statement. Default delemiter pada MySQL adalah semicolon
(;).Pada procedure di atas, delimiter $$ digunakan untuk menyatakan
awal dari SQL statement.

DROP PROCEDURE IF EXISTS `HitungTotal`$$

Perintah drop procedure artinya untuk menghapus procedure


‘HitungTotal’ pada database restoran, if exists artinya bersifat optional
yaitu jika prosedurnya sudah pernah ada.

CREATE DEFINER=`root`@`localhost` PROCEDURE


`HitungTotal`()
Perintah CREATE PROCEDURE digunakan untuk membuat procedure
pada database restoranyang diberi namaHitungTotal. Dalam satu
database tidak boleh ada procedure dengan nama yang sama, nama
procedure juga bersifat tidak case sensitive, yang artinya penggunaan
huruf besar dan huruf kecil tidak akan berpengaruh pada program.
Parameter yang digunakan adalah iNoFakturdengan tipe data CHAR.
Parameter yang telah di deskripsikan ini digunakan untuk menampung
data yang akan di inputkan ketika fungsi dipanggil.

BEGIN
Perintah begin ini digunakan untuk mengawali badan procedure.

SELECT SUM(DetailPesan.Biaya*DetailPesan.Banyak) AS 'Total'


FROM DetailPesan;
Prosedur ini tidak memiliki parameter, karena, hanya menampilkan
total biaya dari tabel DetailPesan.Untuk menghitung total pada tabel
pembayaran melibatkan perkalian dari 2 field dari tabel DetailPesan.
Fungsi SUM digunakan untuk menghitung total keseluruhan biaya yang
dikeluarkan.Nilai total diperoleh dengan mengalikan data dari kolom
Harga dari tabel Menu dengan kolom Banyak dari tabel DetailPesan.
END$$
Statement END$$ digunakan untuk mengakhiri badan procedure.

DELIMITER ;
StatementDELEMITER; digunakan untuk mengembalikan delimiter
menjadi semicolon (;) lagi. Eksekusi procedure dengan menekan
tombol F9 atau dengan mengklik Execute All.

Setelah selesai membuat procedure HitungTotal seperti di atas, lalu


lakukan pemanggilan procedure HitungTotal dengan query berikut:

CALL HitungTotal ();

Setelah CALL HitungTotal() di panggil, maka akan menampilkan Total


biaya dari tabel DetailPesan yaitu sebagai berikut.

Gambar 3.12 Hitung Total


5. Membuat Fungsi untuk menghitung pendapatan restoran dalam sehari.

Gambar 3.13Function PendapatanRestoran

DELIMITER $$
Delimiter adalah karakter atau string yang digunakan untuk menyatakan
akhir SQL statement. Default delemiter pada MySQL adalah semicolon
(;).Pada fungsi di atas, delimiter $$ digunakan untuk menyatakan awal
dari SQL statement.

DROP FUNCTION IF EXISTS `PendapatanRestoran`$$Perintah


drop function artinya untuk menghapus function ‘PendapatanHarian’
pada database restoran, if exists artinya bersifat optional yaitu jika
functionnya sudah pernah ada.

CREATE DEFINER=`root`@`localhost` FUNCTION


`PendapatanRestoran`(Tgl DATE)
Perintah CREATE FUNCTION digunakan untuk membuat
functionpada database restoranyang diberi namaPendapatanHarian.
Dalam satu database tidak boleh ada function dengan nama yang sama,
nama function juga bersifat tidak case sensitive, yang artinya
penggunaan huruf besar dan huruf kecil tidak akan berpengaruh pada
program. Parameter yang digunakan adalah Tgl dengan tipe data
DATE. Parameter yang telah di deskripsikan ini digunakan untuk
menampung data yang akan di inputkan ketika function dipanggil.
RETURNS VARCHAR
Merupakan statement untuk mendeskripsikan bahwa nilai balikan yang
dihasilkan pada function ini bertipe data VARCHAR.

DETERMINISTIC
Statement DETERMINISTICdigunakan untuk menentukan siapa saja
yang boleh mengakses/menggunakan function ini, apakah hanya user
selaku pembuatnya saja (deterministic) atau boleh diakses oleh siapa
saja (not deterministic).

BEGIN
Perintah begin ini digunakan untuk mengawali badan function.

DECLARE Lapor VARCHAR(20);


Statement di atas digunakan untuk mendeklarasikan variabel lokal
lapor yang akan digunakan untuk menyimpan data total pemasukan
harian.

SELECT SUM(TotalPembayaran) AS 'Pendapatan' FROM


Pembayaran WHERE Tanggal=Tgl INTO Lapor;

Prosedur ini tidak memiliki parameter, karena hanya menampilkan total


biaya dari tabel Pembayaran. Fungsi SUM digunakan untuk
menghitung total keseluruhan biaya yang dikeluarkan.Nilai total
diperoleh dengan mengalikan data dari kolom Tanggal dari tabel
Pembayaran.
RETURN Lapor;
RETURN digunakan untuk mengembalikan hasil penggabungan data
yang telah diproses dalam function, sehingga pendapatan harian dapat
ditampilkan.

END$$
Statement END$$ digunakan untuk mengakhiri badan function.
DELIMITER ;
StatementDELEMITER; digunakan untuk mengembalikan delimiter
menjadi semicolon (;) lagi. Eksekusi function dengan menekan tombol
F9 atau dengan mengklik Execute All.

Setelah selesai membuat function BuatNoFaktur seperti di atas, lalu


lakukan pemanggilan function BuatNoFaktur dengan query berikut:

SELECT PendapatanRestoran('2018-10-17');
Setelah SELECT PendapatanRestoran() di panggil, maka akan
menampilkan jumlah Total Pembayaran sesuai tanggal yang di
panggil dari tabel Pembayaran yaitu sebagai berikut.

Gambar 3.14Function PendapatanRestoran


BAB IV
KESIMPULAN

Function hampir sama dengan stored procedure. Function mempunyai sejumlah


parameter input dan hanya mengembalikan satu output, standar perintah yang
digunakan menggunakan perintah standar SQL.Perbedaan utama function dengan
procedure terletak pada nilai yang dikembalikannya (return value). Function
memiliki suatu nilai yang dikembalikan (direturn), sedangkan procedure tidak.
Pada umumnya, procedure hanya berisi suatu kumpulan proses (blok program)
tetapi tidak menghasilkan nilai (value), melainkan hanya menampilkannya
saja.Function dituliskan dalam dapat dipanggil dengan menggunakan statement
SELECT. Function memiliki kekurangan yaitu hanya dapat menampilkan 1 buah
field dan satu buah record saja.

Fungsi agregat merupakan fungsi standar pada SQL yang digunakan untuk
summary dan merupakan fungsi statistik dasar yang dikenakan pada suatu tabel
atau query. Fungsi agregat terdiri dari 5 jenis, yaitu : MAX yang digunakan untuk
menentukan nilai tertinggi dalam sebuah kolom, MIN yang digunakan untuk
menentukan nilai terendah dalam sebuah kolom, SUM yang digunakan untuk
mendapatkan nilai total dari sebuah kolom, AVG yang digunakan untuk mancari
nilai rata-rata dalam sebuah kolom dan COUNT yang digunakan untuk
menghitung jumlah data/record pada kolom.

Fungsi string adalah merupakan fungsi yang digunakan untuk melakukan


manipulasi terhadap data-data dengan tipe string (char, varchar atau text). Pada
modul ini digunakan beberapa fungsi string seperti REPLACE yang digunakan
untuk mengganti satu atau kumpulan karakter tertentu, SUBSTRING yang
digunakan untuk mengambil beberapa karakter dari sebuah string, CONCAT
digunakan untuk menggabungkan satu atau lebih string dan TRIM yang
digunakan untuk menghapus/menghilangkan spasi pada bagian awal atau akhir
suatu string.
BAB V
DAFTAR PUSTAKA

Sherly Christina, S.Kom., M.Kom,Modul Basis Data II. 2018.

Dian Ayunita. Fungsi-Fungsi pada SQL. 09 Januari 2011.


http://dianayun30207013.blogspot.co.id/2011/01/pengantar-dasar-database-
2.htmldi akses pada tanggal 03 November 2018.

Satrio Wicaksono. Mengenal Fungsi String MySQL. 28 Maret 2015.


http://digitalsains.blogspot.co.id/2015/03/mengenal-fungsi-string-mysql.html#di
akses pada tanggal 03 November 2018.

Nursalim. Mengenal Dan Menggunakan Built-in String Function Di MySQL. 08 Januari


2015. http://naura-lab.blogspot.co.id/2015/01/string-builtin-function-mysql.htmldi
akses pada tanggal 04 November 2018.

Agus Prasetyo. Fungsi-Fungsi pada MySQL. 01 Juni 2012.


http://neonevz.blogspot.co.id/2012/06/fungsi-fungsi-pada-mysql.htmldi akses pada
tanggal 04 November 2018.
BAB VI
LAMPIRAN

6.1 Bagian Contoh

Gambar 6.1.1 Procedure JumlahKaryawan

Gambar 6.1.2Function NIPBaru

6.2 Tugas Praktikum

Gambar 6.2.1 Procedure MenuTerlaris

Gambar 6.2.2 Procedure MejaTerlaris


Gambar 6.2.3Fungsi BuatNoFaktur

Gambar 6.2.4ProcedureHitungTotal

Gambar 6.2.5 Fungsi PendapatanRestoran