Anda di halaman 1dari 24

BAB I

LANDASAN TEORI

1.1 LANDASAN TEORI


Stored Procedure dan Function merupakan bentuk kumpulan perintah
SQL yang berisikan query–query yang bisa dieksekusi. Stored Procedure dan
Function ini digunakan untuk mempermudah kita dalam mengelola database
pada suatu kondisi dimana kita harus memasukkan query yang sangat banyak
dengan perintah yang kebanyakan sama.
Di dalam stored procedure atau function ini sendiri kita dapat
menggunakan operator didalamnya.

1.1.1 Fungsi Agregasi


Agregasi merupakan suatu fungsi yang disediakan oleh
MySQL untuk menghasilkan sebuah nilai berdasarkan sejumlah
data. Agregasi dapat digabungkan dengan operator WHERE agar
menghasilkan fungsi yang lebih kompleks lagi. Adapun beberapa
fungsi agregasi pada MySQL adalah:
Fungsi Agregasi Keterangan
Count Menghitung record dengan
kualifikasi tertentu dari suatu
field
Sum Menjumlahkan suatu nilai dari
suatu field
Min Mencari nilai terkecil dari suatu
field
Max Mencari nilai terbesar dari suatu
field
Avg Menghitung nilai rata-rata dari
suatu field
1.1.2 Fungsi Numerik
Fungsi operator aritmetika dasar yang dimiliki oleh MySQL
adalah; penjumlahan, pengurangan, perkalian, dan pembagian.
Operator aritmetika tersebut disertakan dalam perintah select yang
bertujuan untuk memanipulasi data yang sifatnya sederhana.
a. Penjumlahan (+)
Digunakan untuk menjumlahkan dua buah data numerik dengan
hasil data numerik juga.
Contoh: select 5+5;
Hasil: 10
b. Pengurangan (-)
Digunakan untuk operasi pengurangan data numerik, dimana
bilangan yang sebelah kiri dikurangkan dengan yang sebelah
kanan. Menghasilkan data numerik.
Contoh: select 5-2;
Hasil: 3
c. Perkalian (*)
Digunakan untuk melakukan operasi perkalian pada data
numerik dan menghasilkan data numerik.
Contoh: select 2*2;
Hasil: 4
d. Pembagian (/)
Digunakan untuk melakukan operasi pembagian data numerik,
dimana bilangan sebelah kiri dibagi dengan bilangan yang ada
disebelah kanan. Operasi aritmetika ini menghasilkan data
numerik.
Contoh: select 6/2;
Hasil: 3
e. Pembagian Sisa (%)
Digunakan untuk mendapatkan sisa bagi dari suatu operasi
pembagian, bilangan disebelah kiri dibagi dengan bilangan yang
disebelah kanan. Sisa dari hasil pembagian tersebut menjadi
hasil dari operasi ini yang biasa disebut Modulus.
Contoh: Select 3%2;
Hasil: 1

1.1.3 Fungsi String


a. Substring
Fungsi Substring mengembalikan sebagian baik karakter atau
string biner, atau string. Fungsi Substring terdiri atas tiga
peremeter :
1. Sebuah karakter atau string biner, nama kolom, atau string –
ekspresi bernilai yang mencakup nama kolom.
2. Posisi di mana substring harus dimulai.
3. Panjang (dalam jumlah karakter, atau dalam jumlah byte
untuk biner) dari string yang akan dikembalikan.
Contoh :
SELECT SUBSTRING (‘Sistem Basis Data 2’,14,4)
Keterangan :
Mengambil string dari karakter ke 14 sebanyak 4 karakter.
Hasilnya adalah ‘Data’.
b. Replace
Fungsi Replace digunakan untuk mengganti teks (satu atau
kumpulan karakter) tertentu.
Contoh:
REPLACE(<string_expression1>,<string_expression2>,<strin
g_expression3>)
c. Concat
Fungsi ini dapat menggabungkan beberapa string yang menjadi
parameter. Tetapi jika ada nilai NULL dalam parameter string,
maka hasil dari CONCAT adalah NULL.
Contoh: Select CONCAT('Satu', '2', 'Tiga');
Hasil: Satu2Tiga
Contoh: Select CONCAT('Satu', null, 'Tiga');
Hasil: (NULL)
d. Trim
Fungsi Trim untuk menghilangkan atau menghapus spasi dari
bagian kiri dan kanan suatu string.
e. Lower
Fungsi ini digunakan untuk meghasilkan tampilan huruf kecil
dari suatu karakter.
f. Upper
Digunakan untuk menghasilkan tampilan huruf kapital(huruf
besar) dari suatu karakter.
g. Ltrim dan Rtrim
LTRIM digunakan untuk memotong karakter spasi di kiri string
sedangkan Rtrim sebaliknya yaitu digunakan untuk memotong
karakter spasi di kanan string.
Selain fungsi string yang dijelaskan diatas , masih banyak fungsi
string yang lainnya.

1.1.4 Fungsi Tanggal


Format tanggal dan jam dalam MySQL adalah tahun, bulan,
tanggal, jam, menit dan detik. Berikut ini adalah daftar fungsi untuk
tanggal dan waktu yang disediakan oleh MySQL :
a. Now()
Menghasilkan tanggal dan waktu
Contoh : Select now()
Hasil : 2018-10-25 12:45:34
b. Getdate()
Digunakan untuk menampilkan tanggal sekarang.
Contoh : SELECT GETDATE ()
Hasil : 2018-10-25
c. Datediff()
Menghasilkan jarak atau selisih antara dua tanggal/waktu
Contoh : SELECT DATEDIFF('2018-10-22','2018-10-09') As
Selisih
Hasil : 13
d. Dateadd()
Digunakan untuk menambahkan jumlah hari, tanggal, atau
tahun yang ditentukan.
Sintaks : DATEADD (detepart, jumlah, tanggal)
Contoh : SELECT DATEADD (day, 9, getdate())
SELECT DATEADD (month, 9, getdate())
SELECT DATEADD (yeaer, 9, getdate())

Selain fungsi-fungsi tanggal diatas , masih banyak fungsi-fungsi


tanggal yang lainnya.
BAB II
PEMBAHASAN

Pada praktikum kali ini merupakan kelanjutan dari praktikum modul 1,


dengan menggunakan database yang sama, praktikum kali ini hanya menambahkan
beberapa procedure dan fungsi dari program yang lalu, praktikum kali ini dengan
topik menggunakan fungsi-fungsi agregasi dan fungsi-fungsi string, berikut
pembahasannya.
2.2 Membuat Procedure TampilNamaMenu
Langkah awal untuk membuat stored procedure adalah pada folder
Stored Procs klik kanan, pilih Create Store Procedure seperti gambar
dibawah ini :

Gambar 2.1 Langkah awal membuat Stored Procedure

Selanjutnya yaitu memasukkan nama Procedure


“TampilNamaMenu” pada kotak dialog Create Procedure kemudian klik
Create, seperti gambar dibawah ini :

Gambar 2.2 Memberi nama Stored Procedure ”TampilNamaMenu”


Setelah itu akan muncul tab baru untuk memasukkan kode program dan
isi procedure yaang dibuat.Berikut query / kode program yang diinputkan
pada stored procedure “TampilNamaMenu” :

Gambar 2.3 Kode program pada procedure “TampilNamaMenu”

Keterangan :
Pada gambar 2.3 diatas pada query terdapat perintah DELIMETER
dimana perintah tersebut berfungsi untuk memberi tahu kepada MySQL
delimiter yang digunakan, secara default menggunakan “;” (semicolon) jadi
bila ada tanda “;” MySQL akan mengartikan akhir dari statement, seperti di
atas delimiter yang digunakan $$, jadi akhir statementnya adalah $$.
Selanjutnya terdapat perintah DROP PROCEDURE IF EXISTS,
adalah perintah untuk menghapus jika procedure tersebut sudah ada, jika
belum ada maka akan diabaikan. Kemudian ada perintah CREATE
PROCEDURE ‘restoran`.`TampilNamaMenu` ( ) adalah sebagai header
untuk membuat stored procedure TampilNamaMenu. Isi dari procedurenya
terdapat pada bagian “Begin-End”
Pada isi procedure terdapat perintah SELECT Banyak, NamaMenu
FROM (SELECT SUM(banyak) AS Banyak, NamaMenu FROM
DetailPesan GROUP BY NamaMenu ORDER BY Banyak DESC) AS A
LIMIT 5;
Perintah Select adalah perintah untuk menampilkan isi dari kolom
NamaMenu, sedangkan fungsi SUM digunakan untuk menghitung jumlah
record dari field NamaMenu pada table DetailPesan. Jadi menu yang paling
banyak dipesan dari table DetailPesan merupakan Menu Favorite yang akan
ditampilkan dengan procedure “TampilNamaMenu”. Fungsi Group By
digunakan untuk menyatakan pengelompokan tuple hasil query, disini
pengelompokan hasil query berdasarkan NamaMenu.
Selanjutnya adalah melakukan run procedure “TampilNamaMenu”
dengan mengklik tombol “Execute All Queries”. Maka akan muncul
pemberitahuan bahwa eksekusi query berhasil atau error. Untuk
menampilkan hasil dari procedure yang telah dibuat adalah dengan cara
menggunakan perintah “Call TampilNamaMenu;” pada jendela query
database, adapun hasilnya adalah seperti berikut :

Gambar 2.4 Output dari procedure “TampilNamaMenu”

2.2 Membuat Procedure NoMeja


Sama seperti sebelumnya, untuk membuat procedure pertama pada
folder Stored Procs klik kanan, pilih Create Store Procedure seperti
gambar dibawah ini :

Gambar 2.5 Membuat stored procedure


Selanjutnya yaitu memasukkan nama Procedure “NoMeja” pada kotak
dialog Create Procedure kemudian klik Create, seperti gambar dibawah ini:

Gambar 2.6 Memberi nama procedure “NoMeja”

Setelah itu akan muncul tab baru untuk memasukkan kode program dan
isi procedure yaang dibuat.Berikut query / kode program yang diinputkan
pada stored procedure “NoMeja” :

Gambar 2.7 Kode program pada procedure “NoMeja”

Keterangan:
Pada gambar 2.7 diatas pada query terdapat perintah DELIMETER
dimana perintah tersebut berfungsi untuk memberi tahu kepada MySQL
delimiter yang digunakan, secara default menggunakan “;” (semicolon) jadi
bila ada tanda “;” MySQL akan mengartikan akhir dari statement, seperti di
atas delimiter yang digunakan $$, jadi akhir statementnya adalah $$.
Selanjutnya terdapat perintah DROP PROCEDURE IF EXISTS,
adalah perintah untuk menghapus jika procedure tersebut sudah ada, jika
belum ada maka akan diabaikan. Kemudian ada perintah CREATE
PROCEDURE ‘restoran`.`NoMeja` ( ) adalah sebagai header untuk
membuat stored procedure TampilNamaMenu. Isi dari procedurenya terdapat
pada bagian “Begin-End”.
Pada isi procedure terdapat perintah select NoMeja as 'meja paling
sering di dempati pengunjung', count(NoMeja) from Pembayaran group by
NoMeja;. Perintah Select digunakan untuk menampilkan isi dari field
NoMeja, sedangkan fungsi Count digunakan untuk menghitung jumlah
record dari field NoMeja pada table Pembayaran. Jadi Meja yang paling
sering ditempati pengunjung table Pembayaran merupakan NoMeja yang
akan ditampilkan dengan procedure NoMeja.
Selanjutnya adalah melakukan run procedure “NoMeja” dengan mengklik
tombol “Execute All Queries”. Maka akan muncul pemberitahuan bahwa
eksekusi query berhasil atau error. Untuk menampilkan hasil dari procedure
yang telah dibuat adalah dengan cara menggunakan perintah “Call NoMeja;”
pada jendela query database, adapun hasilnya adalah seperti berikut :

Gambar 2.8 Output dari procedure “NoMeja”

2.3 Membuat Function BuatNoFaktur


Pada tugas ketiga ini adalah membuat function untuk menampilkan
Fungsi bernama BuatNoFaktur untuk membuat NoFaktur pada tabel
Pembayaran, dengan format: thn (2 digit) + bln (2 digit) + tgl (2 digit) + “-“
+ No Urut(2 digit). Misalnya untuk pembayaran pertama pada tanggal 16
Oktober 2018 maka No Faktur adalah 181016-01. Sama seperti membuat
Stored Procedure,hanya saja pada pembuatan function pertama pada folder
Functions , klik kanan pilih Create Function seperti gambar dibawah ini :
Gambar 2.9 Membuat function

Selanjutnya yaitu memasukkan nama Function “BuatNoFaktur” pada


kotak dialog Create Function kemudian klik Create, seperti gambar
dibawah ini:

Gambar 2.10 Memberi nama function

Setelah itu akan muncul tab baru untuk memasukkan kode program dan
isi Function yang dibuat.Berikut query / kode program yang diinputkan pada
Function “BuatNoFaktur” :

Gambar 2.11 Kode program pada Function “BuatNoFaktur”

Keterangan:
Pada gambar 2.11 diatas pada query terdapat perintah DELIMETER
dimana perintah tersebut berfungsi untuk memberi tahu kepada MySQL
delimiter yang digunakan, secara default menggunakan “;” (semicolon) jadi
bila ada tanda “;” MySQL akan mengartikan akhir dari statement, seperti di
atas delimiter yang digunakan $$, jadi akhir statementnya adalah $$.
Kemudian ada perintah CREATE DEFINER=`root`@`localhost`
FUNCTION `BuatNoFaktur`(Tgl date) RETURNS varchar(10)
CHARSET latin1 adalah header untuk membuat function BuatNoFaktur.
Parameter dari function BuatNoFaktur adalah Tgl dengan tipe datanya date
yang menyimpan nilai berupa tanggal. Parameter adalah suatu nilai yang akan
dimasukan untuk diproses dalam function ini. Perintah Returns adalah
perintah untuk menentukan nilai yang akan dikembalikan oleh function, disini
nilai balik yang direturnkan adalah tipe data varchar yang berisi nilai string.
Isi dari functionnya terdapat pada bagian “Begin-End”.
Pada isi function terdapat query declare yang merupakan bagian
pendeklarasian variable Tahun yang bertipe data char , variable Bulan yang
bertipe data char , variable Tanggal yang bertipe data char dan variable
NoFak yang bertipe data int. Selanjutnya terdapat fungsi substring yang
digunakan untuk mengambil beberapa karakter (dari kanan, kiri atau tengah)
sebuah data string dari tabel. Sebagai contoh untuk query set Tahun =
substr(Tgl,3,2); artinya pada variable Tahun, misal data nya adalah “2018-
10-16” maka data yang akan diambil adalah string ke 3 sebanyak 2 karakter
,jadi yang akan diambil adalah 18 karena 1 adalah string ke-3 karena diambil
sebanyak 2 karakter saja maka yang akan diambil 18. Pada query set Bulan
= substr(Tgl,6,2); string yang akan diambil adalah string ke enam sebanyak
2 karakter maka yang diambil adalah 10,Pada query set Tanggal =
substr(Tgl,9,2); string yang akan diambil adalah string ke sembilan
sebanyak 2 karakter jadi yang diambil 16.
Selanjutnya terdapat query select count(NoFaktur) from Pembayaran
where NoFaktur like concat (Tahun,Bulan,Tgl,"-",'%') into NoFak; kode
program ini akan menampilkan nofaktur pada tabel pembayaran.
Selanjutnya terdapat query return concat(Tahun,Bulan,Tanggal,"-
","0",NoFak+1); kode program ini digunakan untuk menampilkan hasil dari
penggabungan Tahun,Bulan,Tanggal dan NoFak.
Selanjutnya adalah melakukan run function “BuatNoFaktur” dengan
mengklik tombol “Execute All Queries”. Maka akan muncul pemberitahuan
bahwa eksekusi query berhasil atau error. Untuk menampilkan hasil dari
function yang telah dibuat adalah dengan cara menggunakan perintah “Select
BuatNoFaktur (2018-10-16);” pada jendela query database, adapun hasilnya
adalah seperti berikut :

Gambar 2.12 Output dari function “BuatNoFaktur”

2.4 Membuat procedure HitungTotal


Pada tugas keempat ini membuat Procedure untuk menampilkan
Prosedur bernama HitungTotal untuk menghitung Total bagi tabel
Pembayaran (Total = Σ(DetailPesan.Harga x DetailPesan.Banyak)). Sama
seperti sebelumnya, untuk membuat procedure pertama pada folder Stored
Procs klik kanan, pilih Create Store Procedure seperti gambar dibawah ini:

Gambar 2.13 Membuat stored procedure


Selanjutnya yaitu memasukkan nama Procedure “HitungTotal”
pada kotak dialog Create Procedure kemudian klik Create, seperti
gambar dibawah ini

Gambar 2.14 Memberi nama procedure

Setelah itu akan muncul tab baru untuk memasukkan kode program
dan isi procedure yaang dibuat.Berikut query / kode program yang
diinputkan pada stored procedure “HitungTotal” :

Gambar 2.15 Kode program pada procedure “HitungTotal”

Keterangan:
Pada gambar 2.15 diatas pada query terdapat perintah DELIMETER
dimana perintah tersebut berfungsi untuk memberi tahu kepada MySQL
delimiter yang digunakan, secara default menggunakan “;” (semicolon) jadi
bila ada tanda “;” MySQL akan mengartikan akhir dari statement, seperti di
atas delimiter yang digunakan $$, jadi akhir statementnya adalah $$.
Selanjutnya terdapat perintah DROP PROCEDURE IF EXISTS,
adalah perintah untuk menghapus jika procedure tersebut sudah ada, jika
belum ada maka akan diabaikan. Kemudian ada perintah CREATE
DEFINER=`root`@`localhost` PROCEDURE `HitungTotal`(Faktur int)
adalah sebagai header untuk membuat stored procedure HitungTotal,
parameter nya adalah Faktur dengan tipe data int. Isi dari procedurenya
terdapat pada bagian “Begin-End”.
Pada isi procedure terdapat perintah select NoFaktur, SUM
(Banyak*Biaya) as 'Hitung Total' from DetailPesan where NoFaktur =
Faktur;Perintah Select digunakan untuk menampilkan isi dari field
NoFaktur, terdapat juga fungsi Sum yang digunakan untuk mendapatkan nilai
total dari field (Harga * Banyak) pada table DetailPesan. Sehingga pada table
Pembayaran dapat ditampilkan Totalnya berdasarkan NoFaktur dengan
procedure HitungTotal.

Selanjutnya adalah melakukan run procedure “HitungTotal” dengan


mengklik tombol “Execute All Queries”. Maka akan muncul pemberitahuan
bahwa eksekusi query berhasil atau error. Untuk menampilkan hasil dari
procedure yang telah dibuat adalah dengan cara menggunakan perintah “Call
HitungTotal (NoFaktur);” pada jendela query database, adapun hasilnya
adalah seperti berikut :

Gambar 2.16 Output dari procedure HitungTotal

2.5 Membuat function PendapatanPerHari


Sama seperti membuat Stored Procedure,hanya saja pada pembuatan
function pertama pada folder Functions , klik kanan pilih Create Function
seperti gambar dibawah ini :
Gambar 2.17 Membuat function

Selanjutnya yaitu memasukkan nama Function “PendapatnPerHari”


pada kotak dialog Create Function kemudian klik Create, seperti gambar
dibawah ini:

Gambar 2.18 Memberi nama function

Setelah itu akan muncul tab baru untuk memasukkan kode program dan
isi Function yang dibuat.Berikut query / kode program yang diinputkan pada
Function “PendapatanPerHari” :

Gambar 2.19 Kode program pada function “PendapatanPerHari”

Keterangan:

Pada gambar 2.19 diatas pada query terdapat perintah DELIMETER


dimana perintah tersebut berfungsi untuk memberi tahu kepada MySQL
delimiter yang digunakan, secara default menggunakan “;” (semicolon) jadi
bila ada tanda “;” MySQL akan mengartikan akhir dari statement, seperti di
atas delimiter yang digunakan $$, jadi akhir statementnya adalah $$.
Selanjutnya terdapat perintah DROP FUNCTION IF EXISTS, adalah
perintah untuk menghapus jika Function tersebut sudah ada, jika belum ada
maka akan diabaikan.
Kemudian ada perintah CREATE DEFINER=`root`@`localhost`
FUNCTION`PendapatanPerHari`(Tanggal date) RETURNS decimal
(10,0) adalah header untuk membuat function “PendapatanPerHari”.
Parameter dari function PendapatanPerHari adalah Tanggal dengan tipe
datanya date yang menyimpan nilai berupa tanggal. Parameter adalah suatu
nilai yang akan dimasukan untuk diproses dalam function ini. Perintah
Returns adalah perintah untuk menentukan nilai yang akan dikembalikan
oleh function, disini nilai balik yang direturnkan adalah tipe data decimal . Isi
dari functionnya terdapat pada bagian “Begin-End”.
Pada isi function terdapat query declare yang merupakan bagian
pendeklarasian variable Pendapatan yang bertipe data decimal.Selanjutnya
terdapat kode program select sum(TotalPembayaran) from Pembayaran
where Tanggal = Tanggal group by Tanggal into pendapatan; kode program
ini merupakan perintah untuk menampilkan output penghitungan total
pembayaran pada table pembayaran dengan penghitungan berdasarkan pada
tanggal pembayaran dan hasilnya disimpan kedalam table Pembayaran.
Selanjutnya adalah melakukan run function “PendapatanPerHari”
dengan mengklik tombol “Execute All Queries”. Maka akan muncul
pemberitahuan bahwa eksekusi query berhasil atau error. Untuk
menampilkan hasil dari function yang telah dibuat adalah dengan cara
menggunakan perintah “Select PendapatanPerHari (2018-10-16);” pada
jendela query database, adapun hasilnya adalah seperti berikut :

Gambar 2.20 Output dari function PendapatanPerHari


BAB III
KESIMPULAN

Setelah melakukan praktikum tentang bagaimana cara menggunakan fungsi-


fungsi agregasi dan fungsi-fungsi string dalam stored procedure dan function dapat
disimpulkan bahwa , fungsi agregasi digunakan untuk menampilkan nilai-nilai
atribut yang ada didalam tabel, sering pula ada kebutuhan untuk menampilkan data
–data agregasi. Seperti : Banyaknya record, total nilai suatu atribut, rata-rata nilai,
nilai atribut terbesar atau terkecil. Data agregasi tersebut dapat diperoleh dengan
fungsi-fungsi yang juga kita temukan pedanannya dalam bahasa query formal.
BAB IV
DAFTAR PUSTAKA

Dika.2011. fungsi-agregat-numerik-string-tanggal. http://dika. Blogspot.com/201


1 /06/fungsi-agregat-numerik-string-tanggal.html

(Diakses pada tanggal 27 oktober 2018)

Izza.2014. agregasi-mysql-dan-view. http://izzaluzzy.blogspot.com/ 2014/10/ agre


gasi-mysql-dan- view.html

(Diakses pada tanggal 27 oktober 2018)


BAB V
LAMPIRAN

Gambar 5.1 Langkah awal membuat Stored Procedure

Gambar 5.2 Memberi nama Stored Procedure ”TampilNamaMenu”


Gambar 5.3 Kode program pada procedure “TampilNamaMenu”

Gambar 5.4 Output dari procedure “TampilNamaMenu”

Gambar 5.5 Memberi nama procedure “NoMeja”

Gambar 5.6 Kode program pada procedure “NoMeja”

Gambar 5.7 Output dari procedure “NoMeja”

Gambar 5.8 Membuat function


Gambar 5.9 Memberi nama function

Gambar 5.10 Kode program pada Function “BuatNoFaktur”

Gambar 5.11 Output dari function “BuatNoFaktur”

Gambar 5.12 Memberi nama procedure


Gambar 5.13 Kode program pada procedure “HitungTotal”

Gambar 5.14 Output dari procedure HitungTotal

Gambar 5.15 Memberi nama function

Gambar 5.16 Kode program pada function “PendapatanPerHari”

Gambar 5.17 Output dari function PendapatanPerHari

Anda mungkin juga menyukai