Anda di halaman 1dari 130

HALAMAN PENGESAHAN

Laporan Praktikum
Basis Data 2

Disusun oleh:
Sakinah (32601700023)
Telah di setujui sebagai syarat untuk memenuhi mata kuliah Praktikum Basis
Data 2. Jurusan Teknik Informatika Fakultas Teknologi Industri Universitas Islam
Sultan Agung Semarang

Hari :
Tanggal :

Asisten Praktikum
1. Hisnan Faudan Azmia 1...........

Mengetahui

Laboran Dosen Praktikum

Werdha Wilubertha H, S.Kom Badie’ah, ST, M.Kom

ii
KATA PENGANTAR

Puji syukur penulis panjatkan kepada Allah SWT, yang telah melimpahkan
rahmat, taufik serta hidayah-Nya, sehingga laporan Praktikum Basis Data 2 dapat
terselesaikan.
Tak lupa penulis mengucapkan terimakasih kepada :
1. Rektor UNISSULA Bapak Ir. Prabowo Setiyawan, MT, Ph.D yang telah
mengijinkan penulis untuk menimba ilmu di kampus ini.
2. Dekan Fakultas Teknologi Industri Ibu Dr. Hj. Sri Arttini Dwi Prasetyowati,
M.Si.
3. Dosen pengampu penulis Badie’ah, ST, M.Kom yang telah memberikan ilmu
mengenai Basis Data 2.
4. Asisten dosen yang telah membantu dalam memberikan penjelasan mengenai
praktikum Basis Data 2.
5. Orang tua penulis yang telah mengijinkan untuk menyelesaikan laporan ini.
6. Dan kepada semua pihak yang tidak dapat disebutkan satu persatu.
Penulis menyadari sepenuhnya bahwa dalam penyusunan laporan ini masih
terdapat banyak kekurangan, untuk itu penulis mengharap kritik dan saran dari
pembaca untuk sempurnanya laporan ini. Semoga dengan ditulisnya laporan ini
dapat menjadi sumber ilmu bagi setiap pembacanya.

Semarang, 25 Januari 2019

Penulis

iii
DAFTAR ISI

HALAMAN PENGESAHAN ..................................................................................... ii

KATA PENGANTAR ................................................................................................ iii

DAFTAR ISI ............................................................................................................... iv

DAFTAR GAMBAR ................................................................................................. vii

DAFTAR TABEL ...................................................................................................... xii

BAB I SELEKSI RELASIONAL ............................................................................... 1

1.1. Tujuan ................................................................................................................. 1

1.2. Dasar Teori .......................................................................................................... 1

1.2.1. Relationship .............................................................................................. 1

1.2.2. Operator untuk melakukan klausa where ................................................. 1

1.3. Latihan................................................................................................................. 2

1.3.1. Membuat Database Relasional ................................................................ 2

1.3.2. Seleksi Relasional..................................................................................... 7

1.4. Tugas ................................................................................................................. 11

1.5. Kesimpulan ....................................................................................................... 14

BAB II JOIN DAN UNION ...................................................................................... 16

2.1. Tujuan ............................................................................................................... 16

2.2. Dasar Teori ........................................................................................................ 16

2.2.1. Join ......................................................................................................... 16

2.2.2. Union ...................................................................................................... 20

2.3. Latihan............................................................................................................... 20

2.3.1. Membuat Tabel Alumni ......................................................................... 20

iv
2.3.2. Join ......................................................................................................... 22

2.3.3. UNION.................................................................................................... 27

2.4. Tugas ................................................................................................................ 31

2.5. Kesimpulan ...................................................................................................... 36

BAB III STORED PROCEDURE & FUNCTION ................................................... 37

3.1. Tujuan ............................................................................................................... 37

3.2. Dasar Teori ........................................................................................................ 37

3.2.1. Stored Procedure .................................................................................... 37

3.2.2. Pengertian Stored Procedure.................................................................. 38

3.2.3. Stored Function ...................................................................................... 39

3.2.4. Pengertian Stored function ..................................................................... 39

3.3. Latihan............................................................................................................... 41

3.4. Tugas ................................................................................................................. 64

3.5. Kesimpulan ....................................................................................................... 84

BAB IV VIEW ........................................................................................................... 84

4.1. Tujuan ............................................................................................................... 84

4.2. Dasar Teori ........................................................................................................ 84

4.2.1. Database view ....................................................................................... 84

4.2.2. Fungsi View........................................................................................... 85

4.3. Latihan............................................................................................................... 85

4.4. Tugas ................................................................................................................. 88

4.5. Kesimpulan ..................................................................................................... 100

BAB V TRIGGER ................................................................................................... 101

5.1. Tujuan ............................................................................................................. 101

5.2. Dasar Teori ...................................................................................................... 101

v
5.2.1. Trigger .................................................................................................. 101

5.2.2. Referensi Trigger : NEW dan OLD ...................................................... 102

5.3. Latihan............................................................................................................. 103

5.4. Tugas ............................................................................................................... 107

5.5. Kesimpulan ..................................................................................................... 114

DAFTAR PUSTAKA

LAMPIRAN

vi
DAFTAR GAMBAR
Gambar 1.1 Queri untuk membuat database universitas2 ............................................. 3
Gambar 1.2 Queri menggunakan database universitas2 ................................................ 3
Gambar 1.3 Queri untuk membuat tabel fakultas .......................................................... 3
Gambar 1.4 Queri untuk memasukkan data pada tabel fakultas ................................... 4
Gambar 1.5 Queri untuk membuat tabel prodi .............................................................. 5
Gambar 1.6 Queri utnuk memasukkan data pada tabel prodi........................................ 5
Gambar 1.7 Queri untuk membuat tabel mahasiswa ..................................................... 6
Gambar 1.8 Queri untuk memasukkan data mahasiswa ................................................ 7
Gambar 1.9 Queri untuk menampilkan seleksi nama dan nama prodi .......................... 8
Gambar 1.10 Queri untuk menampilkan daftar nama, jurusan, dan fakultas ................ 8
Gambar 1.11 Queri untuk menampilkan nama,jurusan, dan fakultas ........................... 9
Gambar 1.12 Menampilkan nama fakultas dan prodi .................................................. 10
Gambar 1.13 Menampilkan nama prodi, fakultas dan mahasiswa .............................. 11
Gambar 1.14 Queri untuk menampilkan nilai yang di atas 3.5 .................................. 12
Gambar 1.15 Menampilkan data fti ............................................................................. 13
Gambar 1.16 Menampilkan data mahasiswa yang gratis makan ................................ 14
Gambar 2. 1 Ilustrasi ................................................................................................... 16
Gambar 2. 2 Inner join .......................................................................................... 17
Gambar 2. 3 Left join ............................................................................................ 17
Gambar 2. 4 Left outer join ............................................................................... 18
Gambar 2. 5 Right join .......................................................................................... 18
Gambar 2. 6 Right outer join ............................................................................. 19
Gambar 2. 7 Full outer join ............................................................................... 19
Gambar 2. 8 Union and Union All ........................................................................ 20
Gambar 2. 9 Membuat tabel alumni ............................................................................ 21
Gambar 2. 10 Menambahkan data pada tabel alumni ................................................. 22
Gambar 2. 11 Menampilkan semua data dengan inner join ................................. 23
Gambar 2. 12 Menampilkan semua data dengan left join.................................... 24
Gambar 2. 13 Menampilkan semua data dengan left outer join....................... 25

vii
Gambar 2. 14 Menampilkan semua data dengan menggunakan right join .......... 26
Gambar 2. 15 Menampilkan semua data dengan menggunakan ................................. 27
Gambar 2. 16 Menampilkan data gabungan union ................................................... 28
Gambar 2. 17 Menampilkan data gabungan union all tabel .................................. 29
Gambar 2. 18 Menampilkan data gabungan union ................................................... 30
Gambar 2. 19 Menampilkan data dengan inner join ............................................ 32
Gambar 2. 20 Menampilkan nama mahasiswa dan alumni ......................................... 33
Gambar 2. 21 Menampilkan fakultas, prodi dan jumlah alumni ................................. 34
Gambar 2. 22 Menampilkan data prodi dengan jumlah paling banyak hingga sedikit 35
Gambar 3. 1 Output Membuat stored procude jumlah_kota ................................. 41
Gambar 3. 2 Output pemanggil ................................................................................... 41
Gambar 3. 3 Output Membuat stored procedure test_mysql_while_loop ...... 43
Gambar 3. 4 Output Pemanggilan ............................................................................... 43
Gambar 3. 5 Output membuat prosedur test_mysql_repeat_loop................. 45
Gambar 3. 6 Output pemanggilan ................................................................................ 45
Gambar 3. 7 Output membuat prosedur test_mysql_loop ................................. 47
Gambar 3. 8 Output pemanggilan ................................................................................ 47
Gambar 3. 9 Output membuat prosedur letakkota ................................................ 49
Gambar 3. 10 Output pemanggilan .............................................................................. 49
Gambar 3. 11 Output membuat prosedur jumlah negara .................................... 50
Gambar 3. 12 Output pemanggilan .............................................................................. 51
Gambar 3. 13 Output membuat prosedur jumlah negara .................................... 53
Gambar 3. 14 Output pemanggilan .............................................................................. 53
Gambar 3. 15 Output membuat stored function cek_populasi ............................ 55
Gambar 3. 16 Output pemanggilan .............................................................................. 55
Gambar 3. 17 Output membuat stored function umur_negara ............................... 57
Gambar 3. 18 Output pemanggilan .............................................................................. 57
Gambar 3. 19 Output membuat stored function .......................................................... 60
Gambar 3. 20 Output pemanggilan .............................................................................. 60
Gambar 3. 21 Output semua prosedur dan stored functiondi database world ............. 62

viii
Gambar 3. 22 Output menampilkan prosedur terdapat kata jumlah negara ................ 63
Gambar 3. 23 Output menampilkan stored functionterdapat kata status harapan hidup
............................................................................................................................... 63
Gambar 3. 24 Output membuat prosedur tampil_benua....................................... 64
Gambar 3. 25 Output pemanggil ................................................................................. 64
Gambar 3. 26 Output membuat prosedur tampil_negara_bahasa ................... 67
Gambar 3. 27 Output pemanggil ................................................................................. 67
Gambar 3. 28 Output membuat prosedur contipop ............................................... 69
Gambar 3. 29 Output pemanggilan .............................................................................. 69
Gambar 3. 30 Output membuat stored functionnilai .............................................. 71
Gambar 3. 31 Output membuat stored function statek ........................................... 71
Gambar 3. 32 Ouput pemanggilan ............................................................................... 71
Gambar 3. 33 Output membuat stored functionkepadatan ..................................... 73
Gambar 3. 34 Output membuat stored function statkepadatan .......................... 74
Gambar 3. 35 Ouput pemanggilan ............................................................................... 74
Gambar 3. 37 Output membuat stored function popprov ........................................ 77
Gambar 3. 38 Output pemanggilan .............................................................................. 77
Gambar 3. 39 Output membuat stored function bahasa ........................................... 80
Gambar 3. 40 Output membuat stored functionjbhasa ............................................ 80
Gambar 3. 41 Output pemanggilan .............................................................................. 80
Gambar 3. 42 Output membuat stored function regis ............................................. 83
Gambar 3. 43 Output pemanggilan .............................................................................. 83
Gambar 4. 1 virtual tabel ............................................................................................. 84
Gambar 4. 2 Kueri untuk view negara ....................................................................... 85
Gambar 4. 3 output latihan 1 ....................................................................................... 86
Gambar 4. 4 output latihan 2 ....................................................................................... 87
Gambar 4. 5 Output pemanggilan ................................................................................ 87
Gambar 4. 6 Kueri membuat view negara ................................................................. 88
Gambar 4. 7 Memanggil view kota ........................................................................... 88
Gambar 4. 8 Mengubah kondisi view .......................................................................... 89

ix
Gambar 4. 9 Memanggil view kota ........................................................................... 90
Gambar 4. 10 Membuat view negara2 ....................................................................... 91
Gambar 4. 11 Memanggil view negara2 .................................................................... 91
Gambar 4. 12 Membuat view negara3......................................................................... 92
Gambar 4. 13 memanggil view negara3 ................................................................... 93
Gambar 4. 14 Membuat view negara4......................................................................... 94
Gambar 4. 15 Menampilkan view negara4 .................................................................. 94
Gambar 4. 16 Membuat view negara4......................................................................... 96
Gambar 4. 17 Memanggil view negara5 .................................................................... 96
Gambar 4. 18 Membuat view negara5 ....................................................................... 97
Gambar 4. 19 Memanggil view negara5 .................................................................... 98
Gambar 4. 20 output tugas 8 ........................................................................................ 99
Gambar 5. 1 hasil tabel mahasiswa_keluar ............................................................... 103
Gambar 5. 2 data tabel mahasiswa ............................................................................ 104
Gambar 5. 3 data tabel mahasiswa sesudah diisi ....................................................... 104
Gambar 5. 4 Pembuatan Trigger hapus_mhs ......................................................... 106
Gambar 5. 5 tabel mahasiswa .................................................................................... 106
Gambar 5. 6 Tabel mahasiswa_keluar ...................................................................... 106
Gambar 5. 7 Menampilkan data tabel prodi sebelum diperbaharui ........................... 108
Gambar 5. 8 Menampilkan data tabel fakultas sebelum diperbaharui....................... 108
Gambar 5. 9 Menampilkan data tabel prodi sesudah diperbaharui ........................... 108
Gambar 5. 10 Menampilkan data tabel fakultas sesudah diperbaharui ..................... 108
Gambar 5. 11 Kueri untuk menampilkan data mahasiswa ........................................ 109
Gambar 5. 12 Kueri untuk menampilkan aumni. ...................................................... 110
Gambar 5. 13 Kueri untuk menampilkan data stok ................................................... 111
Gambar 5. 14 Kueri untuk menampilkan penjulan_laptop........................................ 111
Gambar 5. 15 Kueri untuk menampilkan data catatan sebelum update .................... 112
Gambar 5. 16 Kueri untuk menampilkan data catatan sebelum update .................... 112
Gambar 5. 17 Kueri untuk menampilkan stok barang ............................................... 114
Gambar 5. 18 Kueri untuk menampilkan stok barang setelah insert ................... 114

x
xi
DAFTAR TABEL

xii
BAB I
SELEKSI RELASIONAL

1.1. Tujuan
Adapun tujuan praktikum ini adalah :
1. Dapat mengimplementasikan seleksi tunggal 2 tabel.
2. Dapat mengimplementasikan seleksi 2 tabel dengan operator AND.
3. Dapat mengimplementasikan pengurutan data dengan operator ORDER
BY pada seleksi 2 tabel.
4. Dapat mengimplementasikan statement NOT pada seleksi 2 tabel.
5. Dapat mengimplementasikan seleksi 3 tabel.
6. Dapat membuat nama alias (AS) pada seleksi tabel.

1.2. Dasar Teori


1.2.1. Relationship
Relationship adalah suatu hubungan antara beberapa entitas. Konsep
ini sangat penting sekali di dalam basis data, dimana 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. Adapun pendapat lain, relasi merupakan sebuah tabel
dengan baris dan kolom. Digunakan untuk menyimpan informasi tentang
objek yang digambarkan dalam database. (Connolly, T; Begg, C;, 2010 hal.
144-146)
1.2.2. Operator untuk melakukan klausa where
a. Operator AS
Operator AS dalam bahasa inggris artinya adalah "Sebagai" dalam
query biasanya digunakan untuk menampilkan kolom dengan nama lain
sehingga akan muncul dalam hasil query bukan nama asli kolom, tetapi
nama yang mungkin lebih sesuai dan mudah dimengerti oleh orang awam
sekalipun.

1
2

Operator ini hanya merubah nama panggilan suatu kolom sendiri,


dan nama panggilan kolom beserta nama kolom tersebut sama-sama
dapat diakses. Querinya yakni :
SELECT [nama_kolom] AS [nama_kolom_pengganti] FROM
[nama_tabel];
Jika tabel yang ingin ditampilkan nama aliasnya merupakan tabel
berelasi, queri yang dipakai adalah:
SELECT [nama_kolom1] AS [nama_kolom_pengganti],
[nama_kolom2] AS [nama_kolom_pengganti2]FROM [nama_tabel1],
[nama_tabel2]WHERE
[nama_tabel1.primary_key_nya]=[nama_tabel2.foreign_key_nya]
;
b. Operator AND
Kegunaan operator ini adalah untuk melakukan pencarian dan
menampilkan data yang lebih akurat . Dengan operator AND akan
ditampilkan data yang hanya memenuhi kedua syarat yang ditentukan.
Strukur querinya :
SELECT * FROM [nama_tabel] WHERE [nama_kolom1] =
‘[pencarian1]’ AND [nama_kolom2] = ‘[pencarian2]’;
c. Operator OR
Fungsi operator OR mirip dengan operator AND, namun jika operator
AND menampilkan data yang harus memenuhi kedua syarat yang
dibutuhkan, operator OR tetap akan menampilkan data yang hanya
memenuhi salah satu dari kedua syarat yang ditentukan. Querinya yakni :
SELECT * FROM [nama_tabel] WHERE [nama_kolom] =
‘[pencarian1]’ OR [nama_kolom] = ‘[pencarian2]’; (Nugroho,
2005)

1.3. Latihan
1.3.1. Membuat Database Relasional
1. Membuat database Universitas2
a. Query
Create database universitas2;
3

b. Output Query

Gambar 1.1 Queri untuk membuat database universitas2


c. Penjelasan
Pada gambar 1.1 ditampilkan queri untuk membuat database
universitas2.
2. Mengaktifkan database universitas2
a. Query
use universitas2;
b. Output Query

Gambar 1.2 Queri menggunakan database universitas2

c. Penjelasan
Pada gambar 1.2 ditampilkan queri untuk menggunakan
database universitas2 yang telah dibuat pada langkah pertama
(pada gambar 1.1).
3. Membuat tabel dengan nama fakultas
a. Query
Create table fakultas (
id_fakultas int (2) primary key,
nama char (30),
jumlah_mahasiswa int (2));
b. Output Query

Gambar 1.3 Queri untuk membuat tabel fakultas


4

c. Penjelasan
Pada gambar 1.3 ditampilkan queri untuk membuat tabel
fakuktas. kolom yang terdapat pada tabel diantaranya: id_fakultas,
kolom ini bertipe data integer dengan panjang data 2 dan
merupakan primary key atau kunci utama. Nama bertipe data char
dengan panjang data 30. Jumlah_mahasiswa bertipe data integer
dengan panjang data 2.
4. Memasukan data ke dalam tabel fakultas
a. Query
Insert into fakultas values (1,'Fakultas Agama
Islam',4), (2,'Fakultas Teknologi Industri',3);
b. Output Query

Gambar 1.4 Queri untuk memasukkan data pada tabel fakultas


c. Penjelasan
Pada gambar 1.4 ditampilkan queri untuk memasukkan data
pada tabel fakultas. Data yang dimasukkan pada id_fakultas bertipe
data integer, dan merupakan kunci utama pada kolom id_fakultas.
Data yang dimasukkan pada kolom nama adalah daftar fakultas
yang bertipe data char, dan yang terakhir jumlah_mahasiswa. Data
yang dimasukkan bertipe data integer.
5. Membuat tabel dengan nama prodi
a. Query
create table prodi (
id_prodi int (2) primary key,
nama char (20),
jumlah_mahasiswa int(2),
id_fakultas int(2), foreign key (id_fakultas) references
fakultas (id_fakultas));
5

b. Output Query

Gambar 1.5 Queri untuk membuat tabel prodi


c. Penjelasan
Pada gambar 1.5 ditampilkan queri untuk membuat tabel
prodi. Kolom yang terdapat pada tabel tersebut diantaranya:
id_prodi bertipe data integer dengan panjang data 2, nama bertipe
data character dengan panjang data 20, jumlah_mahasiswa bertipe
data integer dengan panjang data 2, id_fakultas bertipe data
integer dengan panjang data 2. Pada kolom id_fakultas merupakan
foreign key yang merujuk pada tabel fakultas dan id_prodi
merupakan primary key pada tabel prodi.
6. Memasukan data ke dalam tabel prodi
a. Query
insert into values(‘1’,'Syariah',’2’,’1’),
(‘2’,'Tabriyah',’2’,’1’),(‘3’,'Elektro',’1’,’2’),
(‘4’,'Informatika',’2’,’2’);
b. Output Query

Gambar 1.6 Queri utnuk memasukkan data pada tabel prodi

c. Penjelasan
6

Pada gambar 1.6 ditampilkan queri untuk memasukkan data


pada tabel prodi. Data yang dimasukkan meliputi id_prodi yang
merupakan kunci utama tabel ini, nama yang berisikan jurusan.
Jumlah_mahasiswa yang berisikan jumlah mahasiswa tiap jurusan,
id_fakultas yang merupakan kunci tamu yang merujuk pada kunci
utama pada tabel fakultas.
7. Membuat tabel dengan nama mahasiswa
a. Query
Create table mahasiswa (
id_mhs int(2)primary key,
nama char (10),
Ip float(5),
id_prodi int(2),foreign key (id_prodi)references
prodi(id_prodi));
b. Output Query

Gambar 1.7 Queri untuk membuat tabel mahasiswa


c. Penjelasan
Pada gambar 1.7 ditampilkan queri untuk membuat tabel
mahasiswa. Kolom yang terdapat pada tabel tersebut diantaranya:
id_mhs bertipe data integer dengan panjang data 2, kolom ini
merupakan kunci utama tabel mahasiswa, kolom nama bertipe data
character dengan panjang data 10, ip bertipe data varchar dengan
panjang data 5, id_prodi bertipe data integer dengan panjang data
7

2. Dan pada id_mhs merupakan primary key dari tabel mahasiswa


dan pada kolom id_prodi merupakan foreign key yang ada pada
tabel mahasiswa yang merujuk dan dijadikan kunci utama pada
tabel prodi.
8. Memasukan data ke dalam tabel mahasiswa
a. Query
insert into mahasiswa values (1,'Ani','3.22',4),
(2,'Budi','3.15',2),(3,'Cindi','3.44',1),
(4,'Doni','3.36',4), (5,'Edi','3.75',3),
(6,'Fredi','3.69',1),(7,'Gani','3.51',1);
b. Output Query

Gambar 1.8 Queri untuk memasukkan data mahasiswa

c. Penjelasan
Pada gambar 1.8 ditampikan queri untuk menambahkan data
pada tabel mahasiswa. Data yang dimasukkan adalah id_mhs, nama
mahasiswa, ip, dan id_prodi.
1.3.2. Seleksi Relasional
1. Membuat query untuk menampilkan data mahasiswa beserta jurusan.
a. Query
select mahasiswa.nama, prodi.nama from mahasiswa,prodi
where mahasiswa.id_prodi = prodi.id_prodi;

b. Output Query
8

gambar 1.9 Queri untuk menampilkan seleksi nama dan nama prodi
c. Penjelasan
Pada gambar 1.9 ditampilkan queri untuk seleksi dua tabel
yaitu pada kolom nama pada tabel mahasiswa dan kolom nama pada
prodi. Agar tidak terjadi penggandaan, maka tambahkan klausa
where pada queri. Cari kunci utama dan tamu yang berhubungan
antara kedua tabel. Pada kasus ini kunci yang dimaksud adalah
id_prodi karena terdapat pada kedua tabel.
2. Membuat query untuk menampilkan data mahasiswa, jurusan dan
fakultas.
a. Query
select mahasiswa.nama, prodi.nama,
fakultas.nama from mahasiswa, prodi, fakultas
where mahasiswa.id_prodi = prodi.id_prodi and
fakultas.id_fakultas = prodi.id_fakultas;
b. Output Query

Gambar 1.10 Queri untuk menampilkan daftar nama, jurusan, dan fakultas
c. Penjelasan
Pada gambar 1.10 ditampilkan queri untuk menampilkan daftar
nama jurusan dan fakultas yang ada pada tabel mahasiswa, prodi dan
fakultas. Agar tidak terjadi penggandaan maka ditambahkan klausa
where dan kunci yang sama. Dalam hal ini, karena menggunakan
9

relasi tiga tabel, maka menggunakan kondisi dengan ditambahkan


operator and. Kunci yang saling berhubungan adalah id_prodi yang
merupakan kunci utama pada tabel prodi, dan merupakan kunci tamu
pada tabel mahasiswa. Kunci selanjutnya yang saling berhubungan
adalah id_fakultas yang merupakan kunci utama pada tabel fakultas
dan merupakan kunci tamu pada tabel prodi.
3. Dengan Menggunakan query yang sama, menampilkan data dengan
label yang berbeda.
a. Query
Select mahasiswa.nama, prodi.nama as prodi,
fakultas.nama as fakultas from mahasiswa, prodi,
fakultas where mahasiswa.id_prodi = prodi.id_prodi
and fakultas.id_fakultas = prodi.id_fakultas;
b. Output Query

Gambar 1.11 Queri untuk menampilkan nama,jurusan, dan fakultas


c. Penjelasan
Pada gambar 1.11 ditampilkan queri untuk menampilkan data
nama, jurusan dan fakultas namun dengan label yang berbeda, yaitu
dengan menggunakan operator as. Kolom yang menggunakan
operator as pada gambar 1.11 adalah prodi yang default-nya adalah
‘nama’, dan kolom fakultas yang default-nya adalah ‘nama’. Agar
tidak terjadi penggandaan tambahkan klausa where dan kunci yang
sama antara tabel. Dalam hal ini kunci yang digunakan adalah
id_prodi yang merupakan kunci utama pada tabel prodi dan
merupakan kunci tamu pada tabel mahasiswa. Dan id_fakultas yang
merupakan kunci utama pada tabel fakultas dan merupakan kunci
utama pada tabel prodi.
10

4. Menampilkan nama prodi, nama fakultas, dan mengurutkan datanya


dari besar ke kecil.
a. Query
select prodi.nama, fakultas.nama from prodi, fakultas
where fakultas.id_fakultas = prodi.id_fakultas order by
prodi.nama desc;
b. Output Query

Gambar 1.12 Menampilkan nama fakultas dan prodi


c. Penjelasan
Pada gambar 1.12 ditampilkan queri utnuk menampilkan data
nama mahasiswa, prodi dan fakultas dengan urutan nama
mahasiswa dari abjad terbesar ke kecil (descending) berdasarkan
kolom nama dengan menggunakan order by desc pada klausa
where. Kunci yang saling berhubungan pada queri ini adalah
id_fakultas yang merupakan kunci utama pada tabel fakultas, dan
merupakan kunci tamu ada tabel prodi.
5. Menyeleksi data dengan menggunakan keyword NOT.
a. Query
select mahasiswa.nama, prodi.nama,
fakultas.nama from prodi, fakultas, mahasiswa
where fakultas.id_fakultas = prodi.id_fakultas
and prodi.id_prodi = mahasiswa.id_prodi and
(not prodi.nama='elektro');
11

b. Output Query

Gambar 1.13 Menampilkan nama prodi, fakultas dan mahasiswa


c. Penjelasan
Pada gambar 1.13 ditampilkan queri untuk menampilkan
nama, prodi dan fakultas dengan kondisi prodi yang tidak berakhiran
elektro. Untuk melakukan hal tersebut, maka tambahkan operator
not pada kondisi like ‘%elektro’ dan jangan lupa sertakan kunci
yang sama antar tabel agar tidak terjadi penggandaan. Pada queri ini
kunci yang saling berhubungan adalah id_prodi yang merupakan
kunci utama pada tabel prodi dan merupakan kunci tamu pada tabel
mahasiswa. Dan id_fakultas yang merupakan kunci utama pada tabel
fakultas dan merupakan kunci utama pada tabel prodi.

1.4. Tugas
Panduan tugas : isi tabel mahasiswa, sehingga untuk mahasiswa, sehingga
untuk mahasiswa jurusan syariah berjumlah 6, tarbiyah berjumlah 7, dan
informatika berjumlah 10.
1. Rektorat UNISSULA akan memberikan beasiswa kepada mahasiswa
yang memiliki nilai ip diatas 3.5. tampilkanlah mahasiswa-mahasiswa
yang akan mendapatkan beasiswa tersebut dengan data yang diperlukan
yakni nama mahasiswa, nama jurusa, nama fakultas, dan nilai ip.
Jawab :
a. Query
select mahasiswa.nama, prodi.nama as jurusan,
fakultas.nama as fakultas, mahasiswa.ip from prodi,
mahasiswa, fakultas where mahasiswa.id_prodi =
12

prodi.id_prodi and prodi.id_fakultas =


fakultas.id_fakultas and mahasiswa.ip>3.5;
b. Output Query

Gambar 1.14 Queri untuk menampilkan nilai yang di atas 3.5

c. Penjelasan
Pada gambar 1.14 ditampilkan queri untuk menampilkan daftar
mahasiswa yang memiliki ip lebih dari 3.5. data yang ditampilkan
meliputi nama, jurusan fakultas dan ip. Dalam hal ini maka
menggunakan kunci yang sama antar tabel agar tidak terjadi
penggandaan dan menggunakan tanda lebih dari untuk menampilkan
ip yang lebih dari 3.5. dalam queri ini yang saling menghubungkan
adalah id_prodi yang merupakan kunci utama pada tabel prodi dan
merupakan kunci tamu pada tabel mahasiswa. Dan id_fakultas yang
merupakan kunci utama pada tabel fakultas dan merupakan kunci
utama pada tabel prodi.
2. Biro administrasi FTI ingin memeriksa mahasiswa aktif di lingkungan
fakultas teknologi industri, bantulah biro adminitrasi tersebut dengan
menampilkan nama nama mahasiswa FTI yang terurut berdasarkan nama
mahasiswa secara naik dengan sajian data berupa nama mahasiswa dan
nama jurusan.
Jawab :
13

a. Query
select mahasiswa.nama, prodi.nama from mahasiswa, prodi
where prodi.id_prodi = mahasiswa.id_prodi and
prodi.id_fakultas=2 order by mahasiswa.nama desc;
b. Output Query

Gambar 1.15 Menampilkan data fti

c. Penjelasan
Pada gambar 1.15 ditampilkan queri untuk menampilkan nama
dan jurusan yang berada pada fakultas teknologi industri dengan
urutan dari besar ke kecil. Untuk mengurutkannya dengan
menambahkan order by berdasarkan nama dari besar ke kecil
(desc). Kunci yang digunakan pad queri ini adalah id_prodi yang
merupakan kunci utama pada tabel prodi dan merupakan kunci tamu
pada tabel mahasiswa. Dan id_fakultas yang merupakan kunci utama
pada tabel fakultas dan merupakan kunci utama pada tabel prodi.
3. Pada bulan November, kedai goyang lidah di pumanisa akan memberikan
gratis makan siang bagi yang selain berakhiran nama ‘di’. Sajikanlah data
mahasiswa yang akan mendapatkan makan gratis tersebut dengan data
berupa nama, dan fakultasnya.
a. Query
select mahasiswa.nama, fakultas.nama from mahasiswa,
fakultas where mahasiswa.nama not like '%di';
14

b. Output Query

Gambar 1.16 Menampilkan data mahasiswa yang gratis makan


c. Penjelasan
Pada gambar 1.16 ditampilkan queri untuk menampilkan daftar
mahasiswa, dan fakultas yang memiliki nama yang tidak
mengandung suku kata ‘di’. Dalam hal ini ditambahkan operator not.
Pada queri ini kunci dan tabel yang berhubungan adalah id_prodi
yang merupakan kunci utama pada tabel prodi dan merupakan kunci
tamu pada tabel mahasiswa. Dan id_fakultas yang merupakan kunci
utama pada tabel fakultas dan merupakan kunci utama pada tabel
prodi.

1.5. Kesimpulan
Pada bab 1 ini dapat dirtarik kesimpulan bahwa relasi antara dua tabel
memiliki beberapa aspek penting yaitu, harus memilik kunci yang dapat
menghubungkan antara tabel. Hal ini dilakukan agar tidak terjadi
penggandaan data pada saat di eksekusi.
Selain itu, untuk memudahkan dalam menampilkan data yang
diinginkan, maka dapat digunakan operator pada klausa where, seperti and,
or, not, like order by. Untuk operator and berfungsi untuk menggunakan
dua kondisi yang dua duanya harus dipenuhi(bernilai benar), operator or
15

berfungsi untuk menggunakan dua kondisi yang jika salah satu saja yang
benar maka tidak masalah(benar). Not berfungsi untuk menandakan ‘tidak’
pada suatu kondisi. Dan order by berfungsi untuk pengurutan data, baik dari
kecil ke besar(ascending) atau besar ke kecil(descending).
BAB II
JOIN DAN UNION

2.1. Tujuan
Adapun tujuan praktikum ini adalah :
7. Dapat mengimplementasikan Inner Join
8. Dapat mengimplementasikan Left Outer Join (Left Join)
9. Dapat mengimplementasikan Right Outer Join (Right Join)
10. Dapat mengimplementasikan UNION
11. Dapat mengimplementasikan UNION dengan kondisi where
12. Dapat mengimplementasikan UNION ALL

2.2. Dasar Teori


2.2.1. Join
Join merupakan salah salah satu kontruksi dasar dari SQL dan basis
data data. Join dapat di definisikan sebagai kombinasi record dari dua
atau lebih table didalam basis data relasional dan menghasilkan sebuah
tabel (temporary) baru yang disebut sebagai joined tabel. Join dapat
diklasifikasikan ke dalam empat jenis, yaitu inner join, left join, right join
dan outer join.

Gambar 2. 1 Ilustrasi

1. Inner Join
Inner join pada dasarnya adalah menemukan persimpangan
(intersection) antara dua buah tabel. Sintaks inner join diperlihatkan
sebagai berikut :

16
17

Select A1, A2, ... , An FROM r1 INNERJOIN r2 ON


r1.Join_key = r2.Join_key
INNER JOIN juga dapat direpresentasikan dalam bentuk implisit
sebagai berikut :
Select A1, A2, … , An FROM r1, r2 WHERE r1.Join_key =
r2.Join_key
Misalkan terdapat table A dan B, maka hasil Inner join dapat
diperlihatkan sebagai bidang terasir dalam diagram Venn seperti
gambar 2.2.
INNER JOIN

Gambar 2. 2 Inner join


2. Left Join
Left join mengembalikan semua nilai dari table kiri ditambah
dengan nilai dari tabel kanan yang sesuai atau NULL jika tidak ada
nilai yang sesuai. Perintah left join diperlihatkan sebagai berikut :
SELECT A1, A2, ... , An FROM r1 LEFT JOIN r2 ON
r1.join_key = r2.join_key;
Left join antara tabel A dan B dapat diilustrasikan dalam diagram
Venn seperti Gambar 2.3.
LEFT JOIN

Gambar 2. 3 Left join


18

Sedangkan untuk left outer join Mengembalikan Data Yang


Berada Di tabel Kiri yang tidak sama dengan tabel kanan, Jika terdapat
tabel yang sama maka menampilkan NULL.
LEFT OUTER JOIN

Gambar 2. 4 Left outer join

SELECT A1, A2, ... , An FROM r1 LEFT OUTER JOIN r2 ON


r1.join_key = r2.join_key where r1 is null;
3. Right Join
Right join mengembalikan semua nilai dari table kanan ditambah
dengan nilai dari tabel kanan yang sesuai atau NULL jika tidak ada
nilai yang sesuai. Perintah left outer join diperlihatkan sebagai
berikut :
SELECT A1, A2, ... , An FROM r1 RIGHT JOIN r2 ON
r1.join_key = r2.join_key
Right outer join table A dan B dapat diilustrasikan dalam
diagram Venn seperti Gambar 2.5.
RIGHT JOIN

Gambar 2. 5 Right join


Sedangkan right outer join Mengembalikan Data Yang Berada Di
tabel kanan yang tidak sama dengan tabel kiri, Jika terdapat tabel yang
sama maka menampilkan NULL. (informatika, 2018)
19

RIGHT OUTER JOIN

Gambar 2. 6 Right outer join

SELECT A1, A2, ... , An FROM r1 RIGHT OUTER JOIN r2 ON


r1.join_key = r2.join_key where r1 is NULL;
4. 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 :
SELECT A1, A2, ... , An FROM r1 LEFT OUTER JOIN r2 ON
r1.join_key = r2.join_key union
SELECT A1, A2, … , An FROM r1 RIGHT OUTER JOIN r2 ON
r1.join_key = r2.join_key;
Bentuk visual dari full outer join dapat diperlihatkan
menggunakan diagram venn seperti Gambar 2.7.
FULL OUTER JOIN

Gambar 2. 7 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. (fajri, 2017)
20

2.2.2. Union
Mysql Union adalah statement yang mengkombinasikan dua buah
atau lebih resulset dari beberapa table dengan statement SELECT sehingga
menjadi satu buah resulset. Union statemen memiliki beberapa ketentuan
sebagai berikut :
a. Jumlah kolom/field dari setiap statement SELECT harus sama.
b. Tipe data kolom/field dari setiap statement SELECT harus compatibel.
Secara default statement union akan menghapus semua record
duplikat dari resulset. Apabila anda ingin record duplikat tetap di
tampilkan maka pada resulset tuliskan secara explicit union all. (fajri,
2017)
Perbedaan Union dan Union All dapat di jelaskan pada gambar
diagram venn gambar 2.8.

Gambar 2. 8 Union and Union All


Fungsi Union dapat dijalankan dengan sintaks sebagai berikut :
SELECT A1, A2, … .An FROM r1 UNION
SELECT A1, A2, … .An FROM r2;

SELECT A1, A2, … .An FROM r1 UNION ALL


SELECT A1, A2, … .An FROM r

2.3. Latihan
2.3.1. Membuat Tabel Alumni
9. Membuat tabel dengan nama Alumni
d. Query
create table alumni(
id_alumni int(2) primary key,
nama char(20),
21

id_prodi int(2),
foreign key (id_prodi) references prodi(id_prodi));
e. Output Query

Gambar 2. 9 Membuat tabel alumni


f. Penjelasan
Pada gambar 2.9 ditampilkan kueri untuk membuat tabel
alumni. Tabel yang ditambahkan adalah id_alumni yang bertipe
data integer dengan panjang 2, dan merupakan kunci utama. Nama
bertipe data character dengan panjang 2, id_prodi bertipe integer
dengan panjang 2 dan merupakan kunci tamu yang merujuk pada
tabel prodi.
10. Memasukan data ke dalam tabel Alumni
d. Query
Insert into alumni values
(‘1’,’ani’,’4’),(‘2’,’kodi’,’3’),
(‘3’,’lala’,’1’),(‘4’,’mina’,’4’),(‘5’,’neni’,’2’),
(‘6’,’opi’,’4’),(‘7’,’rani’,’3’);
22

e. Output Query

Gambar 2. 10 Menambahkan data pada tabel alumni

f. Penjelasan
Pada gambar 2.10 ditampilkan kueri untuk menambahkan
data pada tabel alumni. Data yang ditambahkan antara lain
id_alumni, nama alumni, dan id_prodi. Tabel ini berhubungan
dengan tabel prodi, hal yang menghubungkan adalah adanya kunci
yang sama antara dua tabel, yaitu id_prodi. Pada tabel alumni,
id_prodi merupakan kunci tamu yang merujuk pada tabel prodi
yang merupakan kunci utama.
2.3.2. Join
6. Menggunakan tabel mahasiswa dan tabel prodi pada bab 1, tampilkan
semua data dengan menggunakan INNER JOIN
a. Query
Select*from mahsiswa inner join prodi on
mahasiswa.id_prodi=Prodi.id_prodi;
b. Output Query
23

Gambar 2. 11 Menampilkan semua data dengan inner join


c. Penjelasan
Pada gambar 2.11 ditampilkan kueri untuk menampilkan
semua data yang berada pada tabel mahsiswa dan prodi namun
hanya yang beririsan saja, atau lebih tepatnya terdapat pada tabel
mahasiswa tapi juga ada pada tabel prodi untuk melakukannya
maka gunakan inner join. Kunci yang menghubungkan adalah
id_prodi yang merupakan kunci tamu yang berada pada tabel
mahasiswa, dan merujuk pada tabel prodi yang merupakan kunci
utama.
7. Menggunakan tabel mahasiswa dan tabel prodi pada bab 1, tampilkan
semua data dengan menggunakan LEFT JOIN
a. Query
Select*from mahsiswa left join prodi on
mahasiswa.id_prodi=Prodi.id_prodi;
b. Output Query
24

Gambar 2. 12 Menampilkan semua data dengan left join


c. Penjelasan
Pada gambar 2.12 ditampilkan kueri untuk menampilkan
semua data yang berada pada tabel mahasiswa dan prodi yang
beracuan pada tabel kiri, atau lebih tepatnya terdapat pada tabel
mahasiswa tapi yang beririsan pada tabel prodi juga ditampilkan.
Maka pada tabel mahasiswa yang tidak bersinggungan akan
ditampilkan null. Untuk melakukan hal ini maka digunakan left
join. Kunci yang menghubungkan adalah id_prodi yang
merupakan kunci tamu yang berada pada tabel mahasiswa, dan
merujuk pada tabel prodi yang merupakan kunci utama.
25

8. Menggunakan tabel mahasiswa dan tabel prodi pada bab 1, tampilkan


semua data dengan menggunakan LEFT OUTER JOIN
a. Query
Select*from mahasiswa left outer join prodi on
mahasiswa.id_prodi=Prodi.id_prodi;
b. Output Query

Gambar 2. 13 Menampilkan semua data dengan left outer join


c. Penjelasan
Pada gambar 2.13 ditampilkan kueri untuk menampilkan
semua data yang berada pada tabel mahasiswa dan prodi yang
beracuan pada tabel kiri, atau lebih tepatnya terdapat pada tabel
mahasiswa tapi yang beririsan pada tabel prodi tidak ditampilkan.
Untuk melakukan hal ini maka digunakan left outer join. Kunci
yang menghubungkan adalah id_prodi yang merupakan kunci tamu
yang berada pada tabel mahasiswa, dan merujuk pada tabel prodi
yang merupakan kunci utama.
9. Menggunakan tabel mahasiswa dan tabel prodi pada bab 1, tampilkan
semua data dengan menggunakan RIGHT JOIN
a. Query
Select*from mahsiswa right join prodi on
mahasiswa.id_prodi=Prodi.id_prodi;
26

b. Output Query

Gambar 2. 14 Menampilkan semua data dengan menggunakan right join


c. Penjelasan
Pada gambar 2.14 ditampilkan kueri untuk menampilkan
semua data yang berada pada tabel mahasiswa dan prodi yang
beracuan pada tabel kanan, atau lebih tepatnya terdapat pada tabel
prodi tapi yang beririsan pada tabel mahasiswa juga ditampilkan,
maka pada tabel prodi yang tidak bersinggungan akan ditampilkan
null. Untuk melakukan hal ini maka digunakan right join. Kunci
yang menghubungkan adalah id_prodi yang merupakan kunci tamu
yang berada pada tabel mahasiswa, dan merujuk pada tabel prodi
yang merupakan kunci utama
10. Menggunakan tabel mahasiswa dan tabel prodi pada bab 1, tampilkan
semua data dengan menggunakan RIGHT OUTER JOIN
a. Query
Select*from mahsiswa right outer join prodi on
mahasiswa.id_prodi=Prodi.id_prodi;
27

b. Output Query

Gambar 2. 15 Menampilkan semua data dengan menggunakan


right outer join
c. Penjelasan
Pada gambar 2.15 ditampilkan kueri untuk menampilkan
semua data yang berada pada tabel mahasiswa dan prodi yang
beracuan pada tabel kanan, atau lebih tepatnya terdapat pada tabel
prodi tapi yang beririsan pada tabel mahasiswa tidak ditampilkan.
Untuk melakukan hal ini maka digunakan right outer join.
Kunci yang menghubungkan adalah id_prodi yang merupakan
kunci tamu yang berada pada tabel mahasiswa, dan merujuk pada
tabel prodi yang merupakan kunci utama

2.3.3. UNION
1. Menampilkan hasil penyeleksian data nama mahasiswa dan nama
prodi, kemudian mengabungkan dengan hasil penyeleksian data nama
alumni dan nama prodi dengan menggunakan UNION
a. Query
Select mahasiswa.nama,prodi.nama as prodi from
mahasiswa inner join prodi on mahasiswa
id_prodi=prodi.id_prodi union select
alumni.nama,prodi.nama as prodi from alumni inner join
prodi on alumni.id_prodi=prodi.id_prodi;
28

b. Output Query

Gambar 2. 16 Menampilkan data gabungan union


tabel mahasiswa dan alumni
c. Penjelasan
Pada gambar 2.16 ditampilkan kueri untuk menampilkan
gabungan nama alumni dan mahsiswa, serta prodinya. Untuk
menampilkannya dengan menggunakan union. Namun union
hanya untuk kolom yang bertipe data sama dan panjang datanya
juga sama, selain itu jika ada data yang sama maka tidak terjadi
duplikasi. Pada klausa select pertama berfungsi untuk
menampilkan data nama mahasiswa dan nama prodi, kunci yang
digunakan adalah id_prodi yang merupakan kunci utama pada tabel
prodi, dan merupakan kunci tamu pada tabel mahasiswa. Klausa
select kedua berfungsi untuk menampilkan data nama alumni dan
nama prodinya, kunci yang digunakan adalah id_prodi yang
merupakan kunci utama pada tabel prodi, dan merupakan kunci
tamu pada tabel mahasiswa.
2. Menampilkan hasil penyeleksian data nama mahasiswa dan nama
prodi, kemudian mengabungkan dengan hasil penyeleksian data nama
alumni dan nama prodi dengan menggunakan UNION ALL
29

a. Query
Select mahasiswa.nama,prodi.nama as prodi from
mahasiswa inner join prodi on mahasiswa
id_prodi=prodi.id_prodi union select
alumni.nama,prodi.nama as prodi from alumni inner
join prodi on alumni.id_prodi=prodi.id_prodi;
b. Output Query

Gambar 2. 17 Menampilkan data gabungan union all tabel

mahasiswa dan alumni


c. Penjelasan
Pada gambar 2.17 ditampilkan kueri untuk menampilkan
gabungan nama alumni dan mahsiswa, serta prodinya. Untuk
menampilkannya dengan menggunakan union all. Namun union
all hanya untuk kolom yang bertipe data sama dan panjang
datanya juga sama, selain itu jika ada data yang sama maka dapat
terjadi duplikasi.. Pada klausa select pertama berfungsi untuk
menampilkan data nama mahasiswa dan nama prodi, kunci yang
digunakan adalah id_prodi yang merupakan kunci utama pada tabel
prodi, dan merupakan kunci tamu pada tabel mahasiswa. Klausa
select kedua berfungsi untuk menampilkan data nama alumni dan
nama prodinya, kunci yang digunakan adalah id_prodi yang
30

merupakan kunci utama pada tabel prodi, dan merupakan kunci


tamu pada tabel mahasiswa.
3. Menampilkan hasil penyeleksian data nama mahasiswa dan nama
prodi yang prodinya ‘Informatika’, kemudian mengabungkan dengan
hasil penyeleksian data nama alumni dan nama prodi yang prodinya
‘Informatika’ dengan menggunakan UNION
a. Query
Select mahasiswa.nama,prodi.nama as prodi from
mahasiswa inner join prodi on
mahasiswa.id_prodi=prodi.id_prodi where
prodi.nama=’informatika’ union select
alumni.nama,prodi.nama as prodi from alumni inner join
prodi on alumni.id_prodi=prodi.id_prodi where
prodi.nama=’informatika’;
b. Output Query

Gambar 2. 18 Menampilkan data gabungan union

nama mahasiswa dan prodi


c. Penjelasan
Pada gambar 2.18 ditampilkan kueri untuk menampilkan data
nama mahasiswa, yang digabungkan dengan alumni dan data prodi
yang diambil. Untuk melakukannya dengan menggunakan relasi
dua tabel yang menghubungkan kunci utama dan tamu, selain itu
juga untuk melakukan penggabungan maka digunakan union.
Untuk penggunaan union ini, bila terdapat hasil yang sama, maka
31

hanya salah satu saja yang ditampilkan. Fungsi dari operator union
sendiri untuk menggabungkan antara tampilan dari tabel mahasiswa
dan tabel prodi dengan kondisi tertentu dengan tabel alumni dan
tabel prodi dengan kondisi tertentu. Pada klausa select pertama
berfungsi untuk menampilkan nama mahasiswa dan nama prodi
dengan menggunakan inner join yang berfungsi menampilkan
irisan dari tabel mahasiwa dan prodi. Ditambahkan juga kondisi
klausa where pada nama prodi yang berfungsi untuk menampilkan
prodi data mahasiswa yang memiliki prodi ‘informatika’. Kunci
yang digunakan adalah id_prodi yang merupakan kunci tamu pada
tabel mahasiswa, dan merupakan kunci utama pada tabel prodi.
Sedangkan untuk klausa select kedua berfungsi untuk
menampilkan nama alumni dan nama prodi dengan menggunakan
inner join yang berfungsi menampilkan irisan dari tabel alumni
dan prodi. Ditambahkan juga kondisi klausa where pada nama
prodi yang berfungsi untuk menampilkan prodi data alumni yang
memiliki prodi ‘informatika’. Kunci yang digunakan adalah
id_prodi yang merupakan kunci tamu pada tabel mahasiswa, dan
merupakan kunci utama pada tabel prodi.

2.4. Tugas
4. Dengan menggunakan operator JOIN, menampilkan nama mahasiswa,
prodi, dan fakultas di unissula.
Jawab :
d. Query
Select mahasiswa.nama,prodi.nama as
prodi,fakultas.nama as fakultas from mahasiswa,prodi
inner join fakultas fakultas.id_fakultas
=prodi.id_fakultas where prodi.id_prodi
=mahasiswa.id_prodi;
32

e. Output Query

Gambar 2. 19 Menampilkan data dengan inner join


f. Penjelasan
Pada gambar 2.19 ditampilkan kueri untuk menampilkan
kolom daftar nama pada tabel mahasiswa, kolom prodi pada tabel
prodi, dan kolom fakultas pada tabel fakultas yang saling beririsan.
Dalam hal ini maka digunakan inner join, dan relasi antar tabel
dengan menghubungkan kunci antar tabel. Kunci yang digunakan
untuk hubungan tabel prodi dan mahasiswa adalah id_prodi yang
merupakan kunci utama pada tabel prodi dan merupakan kunci
tamu pada tabel mahasiswa. Sedangkan kunci yang digunakan
untuk hubungan tabel fakultas dan prodi adalah id_fakultas yang
merupakan kunci utama pada tabel fakultas dan merupakan kunci
tamu pada tabel prodi.
5. Menampilkan mahasiswa dan alumni dari program studi teknik
informatika.
Jawab :
d. Query
Select mahasiswa.nama from mahsiswa inner join prodi
on mahasiswa.id_prodi =prodi.id_prodi where
prodi.nama=’informatika’ unoin select alumni.nama from
alumniinner join prodi on alumni.id_prodi
=prodi.id_prodi where prodi.nama=’informatika’;
33

e. Output Query

Gambar 2. 20 Menampilkan nama mahasiswa dan alumni

f. Penjelasan
Pada gambar 2.20 ditampilkan kueri untuk menampilkan
data nama mahasiswa yang digabung dengan data nama alumni
yang berkondisi memiliki nama prodi ‘informatika’. Dalam hal ini
digunakan operator union. Untuk penggunaan union ini, bila
terdapat hasil yang sama, maka hanya salah satu saja yang
ditampilkan. Fungsi dari operator union sendiri untuk
menggabungkan antara tampilan dari tabel mahasiswa dan tabel
prodi dengan kondisi tertentu dengan tabel alumni dan tabel prodi
dengan kondisi tertentu. Pada klausa select pertama ditampilkan
data nama mahasiswa pada tabel mahasiswa yang
beririsan(digunakan inner join) dengan tabel prodi, kemudian
ditambahkan klausa where yang berkondisi hanya nama prodi
‘informatika’ yang akan ditampilkan. Kunci yang menghubungkan
antara tabel mahasiswa dan tabel prodi adalah id_prodi yang
merupakan kunci utama pada tabel prodi dan merupakan kunci tamu
pada tabel mahasiswa. Untuk klausa select kedua ditampilkan data
nama alumni pada tabel alumni yang beririsan(digunakan inner
join) dengan tabel prodi, kemudian ditambahkan klausa where
kondisi hanya nama prodi ‘informatika’ yang akan ditampilkan.
Kunci yang menghubungkan antara tabel alumni dan tabel prodi
adalah id_prodi yang merupakan kunci utama pada tabel prodi dan
merupakan kunci tamu pada tabel mahasiswa
34

6. Menampilkan nama fakultas, nama prodi dan jumlah alumni dari


masing-masing prodi.
a. Query
Select fakultas.nama as fakultas, prodi.nama as prodi,
count(alumni.id_prodi) as jumlah alumni from fakultas
right outer join prodi on
fakultas.id_fakultas=prodi.id_fakultas right outer
join alumni on alumni.id_prodi=prodi.id_prodi group by
prodi.id_prodi;
b. Output Query

Gambar 2. 21 Menampilkan fakultas, prodi dan jumlah alumni

c. Penjelasan
Pada gambar 2.21 ditampilkan kueri untuk menampilkan
kolom data jumlah alumni pada tabel alumni dalam setiap prodi,
kolom nama pada tabel prodi dan kolom nama pada tabel fakultas.
Dalam hal ini maka digunakan klausa count pada kolom id_prodi
yang ada pada tabel alumni untuk menghitung jumlah alumni yang
kemudian diganti nama kolomnya menjadi jumlah_alumni dengan
operator as. Digunakan juga group by untuk mengelompokkan
jumlah alumni untuk setiap prodi. Kolom yang digunakan sebagai
acuan untuk pengelompokan yaitu id_prodi pada tabel prodi.
Selain itu digunakan right outer join, untuk mendapatkan
kondisi tabel kanan sebagai acuan( terdapat pada tabel kanan tidak
termasuk irisan).
Untuk relasi antar tabel, kunci yang menghubungkan antara
tabel fakultas dan prodi adalah id_fakultas yang merupakan kunci
utama pada tabel fakultas, dan kunci tamu pada tabel prodi.
35

Sedangkan kunci yang menghubungkan tabel prodi dan alumni


adalah id_prodi yang merupakan kunci utama pada tabel prodi dan
kunci tamu pada tabel alumni.
7. Menampilkan prodi yang memiliki jumlah alumni paling banyak hingga
paling sedikit
a. Query
Select prodi.nama as prodi,count(alumni.id_prodi) as
jumlah_alumni from prodi inner join alumni on
prodi.id_prodi=alumni.id_prodi group by
prodi.id_prodi;
b. Output Query

Gambar 2. 22 Menampilkan data prodi dengan jumlah paling banyak hingga


sedikit
c. Penjelasan
Pada gambar 2.22 ditampilkan kueri untuk menampilkan
kolom nama prodi pada tabel prodi dan kolom data jumlah alumni
dari yang terbesar hingga kecil berdasarkan prodi. Dalam hal ini
digunakan klausa count pada kolom id_prodi yang ada pada tabel
alumni untuk menghitung jumlah alumni yang kemudian diganti
nama kolomnya menjadi jumlah_alumni dengan operator as, group
by untuk mengelompokkan jumlah alumni untuk setiap prodi.
Kolom yang digunakan sebagai acuan untuk pengelompokan yaitu
id_prodi pada tabel prodi, order by desc(descending) untuk
pengurutan data dari besar ke kecil yang beracuan pada kolom
jumlah_alumni dan inner join untuk menampilkan hasil irisan
antara tabel prodi dan alumni. Kunci yang digunakan adalah
id_prodi yang merupakan kunci urtama pada tabel prodi dan
merupakan kunci tamu pada tabel alumni.
36

2.5. Kesimpulan
Pada praktikum bab 2 ini dapat disimpulkan bahwa untuk mencari
temporary tabel antara 2 tabel dapat digunakan operasi join. Ada
beberapa join yang dapat dipelajari, yaitu inner join yang merupakan
irisan antara dua tabel. Right join yang merupakan himpunan tabel
bagian kanan (termasuk irisan). Right outer join yang merupakan
himpunan tabel bagian kanan namun tidak termasuk irisan antara tabel a
dan b. Left join yang merupakan himpunan tabel bagian kiri (termasuk
irisan). Dan Left outer join yang merupakan himpunan tabel bagian kiri
namun tidak termasuk irisan antara tabel a dan b. Adapun union, yang
merupakan gabungan antara dua tabel, namun jika terdapat data yang sama
tidak ditampilkan, untuk union all merupakan gabungan antara dua tabel,
namun jika terdapat data yang sama maka akan ditampilkan.
Selain itu ada beberapa penggunaan operator, seperti count yang
berfungsi untuk menghitung jumlah data, dan group by yang berfungsi
untuk pengelompokan data berdasarkan salah satu kolom
BAB III
STORED PROCEDURE & FUNCTION

3.1. Tujuan
1. Dapat membuat stored procedure dan stored function
2. Dapat memanggil dan menjalankan stored procedure dan stored
function
3. Dapat menghapus stored procedure dan stored function.

3.2. Dasar Teori


3.2.1. Stored Procedure
Stored Procedure atau prosedur tersimpan adalah suatu modul yang
berisi kumpulan pernyataan SQL yang ditujukan untuk melaksanakan
tugas tertentu dan letaknya ada pada server. Modul ini bisa di panggil oleh
klien, sedangkan pengeksekusianya dilakukan di server. Hal ini
mempermudah operasi pengelolaan suatu aksi vandilakukan. Dalam stored
procedure berisi kumpulan sintaks-sintaks SQL yang menghasilkan luaran
tertentu.
Penggunaan prosedur akan mengurangi trafik network dan overhead.
Disamping itu alasan keamanan menjadi salah satu poin dimana akses
langsung pada database dapat dibatasi. Prosedur dapat pula menjamin
integritas data dan konsistensi. Karena beberapa perintah SQL yang harus
dilakukan sekaligus, seperti pada transaksi. Jika satu prosedur gagal
dilakukan, maka seluruh transaksi akan gagal dilakukan. Bandingkan jika
menggunakan beberapa perintah SQL secara umum dalam transaksi.jika I
perintah gagal, masih akan tetap menjalankan perintah yang lain.

37
Format pembuatan Stored Procedure adalah:
DELIMITER //
CREATE PROCEDURE NAMA_PROSEDUR()
BEGIN
#PERNYATAAN PROSEDUR
END //
DELIMITER ;

Setiap akan memulai kueri stored function diawali dengan keyword BEGIN dan
mengetikkan keyword END jika statement stored procedure telah selesai.
Kedua statement tersebut berguna untuk membatasi statement procedure.
(informatika, 2018)
Format pemanggilan stored procedure adalah :
Call NAMA_PROSEDUR;

Sedangkan format menghapus stored procedure adalah :


DROP PROCEDURE NAMA_PROSEDUR;

3.2.2. Pengertian Stored Procedure


Stored procedure adalah salah satu objek routine yang tersimpan
pada database MySQL dan dapat digunakan untuk menggantikan berbagai
kumpulan perintah yang sering kita gunakan, seperti misalkan sejumlah
row ke table lain dengan filter tertentu. Stored procedure sangat berguna
ketika kita tidak ingin user mengakses table secara langsung, atau dengan
kata lain membatasi hak akses user dan mencatat operasi yang dilakukan.
Dengan demikian resiko kebocoran dan kerusakan data dapat lebih
diminalisir.
Syntax:
CREATE
[DEFINER = { user | CURRENT_USER }]
PROCEDURE sp_name (proc_parameter[,...])
[characteristic ...] routine_body
Keterangan:
sp_name : nama stored procedure.
proc_parameter : parameter input / output dari stored procedure tersebut
(opsional).
Characteristic : menjelaskan karakteristik dari stored procedure
(COMMENT, LANGUAGE SQL, dan lain-lain).
routine_body : kumpulan perintah pada stored procedure tersebut.
Jika DEFINER dispesifikasikan maka kita memutuskan trigger tersebut
dijalankan hanya oleh user tertentu (dalam format penulisan user@host).
Jika tidak dispesifikasikan, maka user yang melakukan perubahan
(CURRENT_USER) adalah pilihan default. (kristiono, 2015)
3.2.3. Stored Function
Stored function merupakan sekumpulan perintah SQL yang memiliki
nama, tugas,dan nilai balik. Stored function hampir sama dengan stored
procedure, hanya saja stored function memiliki nilai balik (return value)
(informatika, 2018)

Format pembuatan stored function adalah :


DELIMITER //
CREATE FUNCTION NAMA_FUNCTION (paraml, param2,...)
RETURN DATA_TYPE
BEGIN
#statement stored function
END //
DELIMITER ;

Cara pemanggilan atau penggunaan stored functionadalah :


Select nama_function(param1, param2, …)

Sedangkan untuk menghapus stored functionadalah :


Drop function nama_function;
3.2.4. Pengertian Stored function
Dalam database server ada 2 kategori stored function yang pertama
adalah stored function aggregate adalah stored function stored function
bawaan yang terdapat pada sistem database tersebut, yang kedua stored
function yang diciptakan oleh user sendiri.
Pada bagian ini akan dibahas tentang cara menciptakan, dan
menggunakan stored function yang dibuat oleh user sendiri.
Cara kerja stored function stored function “> hampir sama dengan
Stored Procedure, namun stored function mempunyai ada yang parameter
masukan ada yang tidak. Selain parameter stored function mengembalikan
nilai balik lewat perintah RETURN.
Syntax:
CREATE FUNCTION nama_stored function (parameter[,...])
RETURNS tipe_data_nilai_balik
/* COMMENT keterangan_string */
BEGIN
Deklasi variabel;
isi_perintah_stored function;

RETRUN data_nilai_balik;
Stored function di Stored function:
1. Parameter adalah nilai masukkan, yang akan diproses dalam stored
function, biasanya cara memanggilnya seperi perintah berikut.
Syntax:
SELECT Nama_stored function(param_1, param_2, param_3,
param_N);
2. Stored function Dikombinasikan dengan SELECT
Secara umum penulisan program dalam stored function menggunakan
bahasa PL/SQL, yaitu standar bahasa SQL. Oleh karena itu dalam
stored function dapat melibatkan perintah SELECT, INTO, FROM, WHERE
dan lainya. Sebagai contoh untuk mencari nama dengan peritah
SELECT nama FROM mhs WHERE no_mhs=’055410002′
Kemudian perintah ini akan dikombinasikan kedalam stored function,
misal nama stored functionnya diberi nama get_nama(no_mhs);
(Kuriniawan, 2007)
3.3. Latihan
A. Stored Procedure
1. Menggunakan database world, menghitung jumlah kota
a. Kueri
a) Membuat stored procedure
Delimiter //
create procedure jumlah_kota()
begin
select count(*) from city;
end //
b) Memanggil stored procedure
call jumlah_kota();
b. Output

Gambar 3. 1 Output Membuat stored procude jumlah_kota

Gambar 3. 2 Output pemanggil

c. Penjelasan
a) Membuat stored procedure
Pada gambar 3.1 menjelaskan tentang kueri untuk
membuat stored procedure yang bernama jumlah kota,
dengan output yang dihasilkan adalah jumlah kota dalam
tabel city. Untuk menampilkannya menggunakan beberapa
kueri, diantaranya adalah Kueri delimiter berfungsi untuk
membatasi prosedur. Kueri begin untuk memulai eksekusi
prosedur sql dan membuat perintah di dalamnya. Kueri
select untuk menampilkan data count untuk menghitung
banyak data, dengan adanya bintang maka berarti
menghitung semua baris yang ada dalam tabel city. Kueri
end berfungsi untuk mengakhiri Kueri stored procedure
yang di didahului oleh delimiter.
b) Memanggil stored procedure
Pada gambar 3.2 menjelaskan tentang perintah untuk
memanggil prosedur yang telah dibuat pada gambar 3.1.
Kueri call berfungsi untuk memanggil prosedur yang
sudah dibuat dan diikuti nama prosedurnya, kemudian akan
muncul tabel yang memunculkan prosedur yang telah
dibuat. Untuk memanggil prosedur, digunakan kueri call
jumlah_kota;
2. Membuat stored procedure dengan menggunakan statment
perulangan, sebagai berikut :
1) While
a. Kueri
a) Membuat stored procedure
delimiter //
create procedure test_mysql_while_loop()
begin
declare x int;
declare str varchar(255);

set x = 1;
set str = '';

while x <= 5 do
set str = concat(str, x, ',');
set x = x + 1;
end while;

select str;
end //
b) Memanggil stored procedure
call test_mysql_while_loop();
b. Output

Gambar 3. 3 Output Membuat stored procedure test_mysql_while_loop

Gambar 3. 4 Output Pemanggilan

c. Penjelasan
a) Membuat stored procedure
Pada gambar 3.3 menjelaskan tentang perintah untuk
membuat prosedur yang bernama
test_mysql_while_loop. Diawali dengan Kueri
delimiter berguna untuk membatasi kueri. Kueri begin
untuk memulai kueri sql dan membuat perintah di
dalamnya. Kueri declare untuk membuat suatu variabel
baru. Kueri set berfungsi untuk menetapkan nilai. Kueri
while x <= 5 do set str = concat(str, x, ',');
berfungsi untuk melakukan perintah jika kurang dari
sama dengan 5 maka lakukan perintah concat yang
berfungsi sebagai penggabungan 2 string lalu melakukan
perulangan yang nantinya akan memunculkan nilai
angka (1,2,3,4). Kueri end while berfungsi untuk
mengakhiri rumus kueri stored procedure yang sudah di
buat . kemudian kueri select str; untuk mengakhiri
rumus perulangan yang telah dibuat sekaligus di akhiri
dengan perintah end //.
b) Memanggil stored procedure
Pada gambar 3.4 menjelaskan tentang perintah
untuk memanggil prosedur. Kueri call berfungsi untuk
memanggil prosedur yang sudah dibuat dan diikuti nama
prosedurnya, kemudian akan muncul tabel yang
memunculkan kueri prosedur yang telah dibuat. Dalam
hal ini kueri yang di masukkan adalah call
test_mysql_while_loop();
2) Repeat
a. Kueri
a) Membuat prosedur
delimiter //
create procedure mysql_test_repeat_loop()
begin
declare x int;
declare str varchar(255);
set x =1;
set str = ' ';
repeat
set str =concat(str,x,',');
set x =x+1;
until x > 5
end repeat;
select str;
end //
delimiter ;
b) Memanggil prosedur
call mysql_test_repeat_loop();
b. Output

Gambar 3. 5 Output membuat prosedur test_mysql_repeat_loop

Gambar 3. 6 Output pemanggilan

c. Penjelasan
a) Membuat prosedur
Pada gambar 3.5 menjelaskan tentang perintah untuk
membuat prosedur yang bernama
test_mysql_repeat_loop. Dalam hal ini digunakan
beberapa kueri, diantaranya adalah Kueri delimiter
berguna untuk membatasi prosedur. Kueri begin untuk
memulai kueri sql dan membuat perintah di dalamnya.
Kueri declare untuk membuat suatu variabel baru.
Kueri set berfungsi untuk melakukan aturan/perintah
sekaligus membuat rumus dan sebagai query untuk
variabel yang telah ditetapkan. Kueri repeat set str
= concat(str, x, ','); berfungsi untuk melakukan
perintah perulangan lalu perintah concat yang berfungsi
sebagai penggabungan 2 string lalu melakukan
perulangan yang nantinya akan memunculkan nilai
angka (1,2,3,4). Kueri until x > 5 berfungsi untuk
mengimplementasikan sampai x lebih besar dari 5.
Kueri end repeat berfungsi untuk mengakhiri rumus
perulangan kueri prosedur yang sudah di buat . kemudian
kueri select str; untuk mengakhiri rumus perulangan
yang telah dibuat sekaligus di akhiri dengan perintah
end //.
b) Memanggil prosedur
Pada gambar 3.6 menjelaskan tentang perintah
untuk memanggil prosedur. Kueri call berfungsi untuk
memanggil prosedur yang sudah dibuat dan diikuti nama
prosedurnya, kemudian akan muncul tabel yang
memunculkan kueri prosedur yang telah dibuat.
3) Loop
a. Kueri
a) Membuat prosedur
delimiter //
create procedure test_mysql_loop()
begin
declare x int;
declare str varchar(255);
set x=1;
set str = ' ';
loop_label: Loop
if x > 10 then
leave loop_label;
end if;
set x = x+1;
if (x mod 2) then
iterate loop_label;
else
set str = concat(str,x,',');
end if;
end loop;
select str;
end |
delimiter ;
b) Memanggil prosedur
call test_mysql_loop();
b. Output

Gambar 3. 7 Output membuat prosedur test_mysql_loop

Gambar 3. 8 Output pemanggilan

c. Penjelasan
a) Membuat prosedur
Pada gambar 3.7 menjelaskan tentang perintah untuk
membuat prosedur yang bernama test_mysql_ loop.
Kueri delimiter berguna untuk membatasi prosedur.
Kueri begin untuk memulai kueri sql dan membuat
perintah di dalamnya. Kueri declare untuk membuat
suatu variabel baru. Kueri set berfungsi untuk
melakukan aturan/perintah sekaligus membuat rumus
dan menetapkan nilai.. Kueri loop_label: Loop if x
> 10 then leave loop_label berfungsi untuk
membuat looping yang menjelaskan jika x lebih besar
dari 10 maka operasi akan meninggalkan loop_label
atau tidak di eksekusi. Kueri if (x mod 2) then
iterate loop_label; berfungsi untuk melakukan
perintah jika variabel x = mod 2 maka akan di eksekusi
di rumus looping yang ada di loop_label kemudian
akan memunculkan angka (2,4,6,8,10).Kueri end
repeat berfungsi untuk mengakhiri rumus perulangan
kueri prosedur yang sudah di buat . kemudian kueri
select str; untuk mengakhiri rumus perulangan yang
telah dibuat sekaligus di akhiri dengan perintah end |.
b) Memanggil prosedur
Pada gambar 3.8 menjelaskan tentang perintah untuk
memanggil prosedur. Kueri call berfungsi untuk
memanggil prosedur yang sudah dibuat dan diikuti nama
prosedurnya, kemudian akan muncul tabel yang
memunculkan kueri prosedur yang telah dibuat.
3. Membuat prosedur dengan menggunakan parameter, sebagai
berikut :
1) IN
a. Kueri
a) Membuat prosedur
delimiter //
create procedure letakkota(in benua varchar(20))
begin
Select city.name from city, country where
city.countrycode=country.code and
country.continent = benua;
end |
delimiter ;
b) Memanggil prosedur
Call letakkota(‘asia’);
b. Output
Gambar 3. 9 Output membuat prosedur letakkota

Gambar 3. 10 Output pemanggilan

c. Penjelasan
a) Membuat prosedur
Pada gambar 3.9 menjelaskan perintah untuk
membuat prosedur bernama letakkota yang
menjelaskan cara untuk membuat prosedur yang letaknya
pada tabel country dengan parameter benua. Parameter
yang digunakan adalah in benua dengan tipe data
varchar dengan panjang data 20 yang
mengindikasikan bahwa parameter yang dimasukan ke
prosedur dapat digunakan namun nilainya tidak dapat
diubah. Kueri delimiter berguna untuk membatasi
prosedur. Kueri begin untuk memulai kueri sql dan
membuat perintah di dalamnya. Kueri Select

city.name from city berfungsi untuk menampilkan


tabel city kolom nama lalu dilanjutkan kueri where
city.countrycode = country.code and
country.continent = benua; berguna untuk
menampilkan kondisi dimana tabel city mempunyai
relasi dengan tabel country dan menampilkan di nama
benua. Yang menghubungkannya adalah adanya kunci
utama yang berada pada tabel country dan kunci tamu
yang berada pada tabel city. Kueri end // untuk
mengakhiri kueri prosedur yang diawali dengan
delimiter //.
b) Memanggil prosedur
Pada gambar 3.10 menjelaskan tentang perintah
untuk memanggil prosedur. Kueri call berfungsi untuk
memanggil prosedur yang sudah dibuat dan diikuti nama
prosedurnya, kemudian kueri letakkota(‘asia’)untuk
menampilkan kueri letak kota asia yang nantinya akan
menampilkan letak kota yang berada di asia.
2) OUT
a. Membuat prosedur
delimiter //
create procedure jumlahnegara(out jml_ngr int(3))
begin
Select count(*) into jml_ngr from country;
end //
delimiter ;
b. Memanggil prosedur
Call jumlahnegara(@jumlah_negara);
Select @jumlah_negara;
c. Output

Gambar 3. 11 Output membuat prosedur jumlah negara


Gambar 3. 12 Output pemanggilan

d. Penjelasan
a) Membuat prosedur
Pada gambar 3.11 menjelaskan tentang perintah
untuk membuat prosedur yang bernama jumlah
negara. Untuk menampilkannya dibutuhkan Kueri (out
jml_ngr int(3))) menjelaskan untuk membuat
prosedur yang letaknya dibenua lalu menggunakan tipe
data varchar yang panjang datanya (20) dan
menandakan bahwa parameter yang dimasukan ke
prosedur dapat digunakan dan mengirimkan kembali ke
program pemanggil. Kueri delimiter berguna untuk
membatasi prosedur. Kueri begin untuk memulai kueri
sql dan membuat perintah di dalamnya. kueri Select
count(*) into jml_ngr from country; berguna
untuk menampilkan semua penjumlahan di dalam kolom
jml_ngr dari tabel country. Kueri end // untuk
mengakhiri kueri prosedur yang diawali dengan
delimiter //.
b) Memanggil prosedur
Pada gambar 3.12 menjelaskan tentang perintah
untuk memanggil prosedur. Kueri Call

jumlahnegara(@jumlah_negara); berfungsi untuk


memanggil prosedur yang sudah dibuat dan diikuti nama
prosedurnya dan berfungsi tempat penampungan data di
dalam jumlah negara lalu kueri Select
@jumlah_negara; berfungsi untuk menampilkan
penampungan data yang telah tadi dibuat.
3) INOUT
a. Kueri
a) Membuat prosedur
delimiter //
create procedure jumlahnegaraa(inout benua
varchar(20))
begin
Select count(*) into benua from country where
continent = benua;
end //
delimiter ;
b) Memanggil prosedur
Set @ben='asia';
Call jumlahnegara(@ben);
Select @ben;
b. Output

Gambar 3. 13 Output membuat prosedur jumlah negara

Gambar 3. 14 Output pemanggilan

c. Penjelasan
a) Membuat prosedur
Pada gambar 3.13 menjelaskan tentang perintah
untuk membuat prosedur yang bernama jumlah
negara. Kueri (inout benua varchar(20))

menjelaskan untuk membuat prosedur yang letaknya


dibenua lalu menggunakan tipe data varchar yang
panjang datanya (20) dan menandakan bahwa parameter
yang dimasukan ke prosedur dapat digunakan untuk
meng-input-kan suatu parameter tertentu dalam suatu
kueri dari hasil tersebut. Kueri delimiter berguna untuk
membatasi prosedur. Kueri begin untuk memulai kueri
sql, membuat perintah di dalamnya dan menetapkan nilai
variable jika perlu.. kueri Select count(*) into
benua from country where continent = benua;
berguna untuk menampilkan semua penjumlahan di
dalam kolom benua dari tabel country dimana kondisi
continent yang ingin ditampilkan adalah di benua .
Kueri end // untuk mengakhiri kueri prosedur yang
diawali dengan delimiter //.
b) Memanggil prosedur
Pada gambar 3.14 menjelaskan tentang perintah
untuk memanggil prosedur. Kueri Set @ben='asia';
berfungsi untuk mengatur benua yang akan menampilkan
kondisi di benua lalu kemudian Kueri Call

jumlahnegara(@ben); berfungsi untuk memanggil


prosedur yang sudah dibuat dan diikuti nama
prosedurnya dan berfungsi tempat penampungan data di
dalam ben lalu kueri Select @ben; berfungsi untuk
menampilkan penampungan data yang telah tadi dibuat.
B. Stored function
1. Membuat stored function, untuk menentukan jumlah populasi
dengan ketentuan :
- Jika populasinya kurang dari sama dengan 5.000.000 maka
populasinya “Sedikit”
- Jika populasinya 5.000.000 – 15.000.000 maka populasinya
“Sedang”
- Jika populasi lebih dari 15.000.000 maka populasinya
“Banyak”
a. Kueri
a) Membuat stored function
delimiter //
create function cek_populasi(population int(11))
returns varchar(10)
begin
Declare hasil varchar(10);
if population <= 50000000 then set hasil =
'sedikit';
elseif population > 50000000 and population <=
150000000 then set hasil= 'sedang';
elseif population > 150000000 then set hasil=
'banyak';
end if;
return (hasil);
end //
b) Memanggil stored function
Select name, cek_populasi(population) from
country;
b. Output

Gambar 3. 15 Output membuat stored function cek_populasi

Gambar 3. 16 Output pemanggilan

c. Penjelasan
a) Membuat stored function
Pada gambar 3.15 menjelaskan tentang perintah
untuk membuat stored function yang bernama
cek_populasi. Kueri dengan parameter population
dengan tipe data integer dan panjang datanya adalah 11
kemudian kueri returns berfungsi untuk pengembalian
data yang akan dibuat di sintaksi rumus selanjutnya.
Kueri delimiter berguna untuk membatasi prosedur.
Kueri declare berfungsi untuk mendeklarasikan suatu
variabel baru. Kueri if population <= 50000000
then set hasil = 'sedikit'; berfungsi untuk
kondisi jika populasi kurang dari sama dengan
50000000 maka akan menampilkan kata ‘sedikit’ di
kolom cek populasi, lalu kueri elseif population >
50000000 and population <= 150000000 then set
hasil= 'sedang'; berfungsi untuk kondisi kecuali
jika populasi lebih dari 50000000 dan populasi kurang
dari 150000000 maka akan menampilkan hasil kata
‘sedang’ kemudian kueri elseif population >

150000000 then set hasil= 'banyak'; berfungsi


untuk kondisi kecuali jika populasi lebih dari
150000000 maka akan menampilkan hasil kata
‘banyak’. Kueri end if; untuk mengakhiri proses
rumus if di dalam sql. Kueri return (hasil);

berfungsi untuk stored function pengembalian di dalam


rumus hasil. Kueri end // untuk mengakhiri kueri
prosedur yang diawali dengan delimiter //.
b) Memanggil stored function
Pada gambar 3.16 menjelaskan tentang perintah
untuk memanggil stored function. Kueri Select name,
cek_populasi(population) from country;
berfungsi untuk menampilkan kolom nama dan status
populasi di dalam population (stored function) di dalam
tabel country.
2. Membuat function yang digunakan untuk menghitung umur suatu
negara.
a. Kueri
a) Membuat stored function
delimiter //
create function umur_negara(merdeka int(10))
returns int(3)
begin
declare hasil int(2);
Set hasil = year(curdate()) –merdeka;
return (hasil);
end //
delimiter ;
b) Memanggil stored function
Select name, cek_populasi(population) from
country;Select name, umur_negara(indepyear) from
country;
b. Output

Gambar 3. 17 Output membuat stored function umur_negara

Gambar 3. 18 Output pemanggilan


c. Penjelasan
a) Membuat stored function
Pada gambar 3.17 menjelaskan tentang perintah untuk
membuat stored function yang bernama umur_negara
dengan parameter merdeka dan tipe datanya integer
serta mempunyai panjang data yaitu 10. Kueri delimiter
berguna untuk membatasi prosedur. Kueri returns
berfungsi untuk pengembalian data yang akan dibuat di
sintaks rumus selanjutnya. Kueri begin untuk memulai atau
membuat suatu rumus. Kueri declare hasil int(2);
berfungsi untuk membuat suatu deklarasi atau variabel baru
yang bernama hasil dengan tipe data integer dan panjang
data 2. Kueri Set hasil = year(curdate()) –merdeka;
berfungsi untuk memasukan rumus tahun sekarang
dikurangi dengan merdeka. Kueri return (hasil);
berfungsi untuk stored function pengembalian di dalam
rumus hasil. Kueri end // untuk mengakhiri kueri stored
function yang diawali dengan delimiter //.
b) Memanggil stored function
Pada gambar 3.18 menjelaskan tentang perintah untuk
memanggil stored function. Kueri Select name,

cek_populasi(population) from country; berfungsi


untuk menampilkan kolom nama dan cek populasi di dalam
population (stored function) di dalam tabel country.
Kueri Select name, umur_negara(indepyear) from
country; berfungsi untuk menampilkan nama dan umur
negara yang terdapat tahun merdeka di tabel country.
3. Membuat stored function, untuk menentukan status harapan hidup
suatu negara dengan ketentuan :
- Jika harapan hidup kurang dari sama dengan 50 tahun maka
statusnya “rendah”
- Jika harapan hidup 40 - 75 tahun maka statusnya “sedang”
- Selain yang disebutkan diatas maka statusnya “tinggi”
a. Kueri
a) Membuat stored function
delimiter //
create function
status_harapan_hidup(life_expectancy int (3))
returns varchar(10)
begin
declare status varchar(10);
if life_expectancy <= 50 then set status =
'rendah';
elseif life_expectancy > 40 and life_expectancy
> 75
then set status = 'sedang';
else set status = 'tinggi';
end if;
return (status);
end //
delimiter ;
b) Memanggil stored function
Select name,
status_harapan_hidup(lifeexpectancy) from
country;
b. Output

Gambar 3. 19 Output membuat stored function

Gambar 3. 20 Output pemanggilan


c. Penjelasan
a) Membuat stored function
Pada gambar 3.19 menjelaskan tentang perintah untuk
membuat stored function yang bernama
status_harapan_hidup dengan parameter
lifeexpectancy dan tipe datanya integer serta
mempunyai panjang data yaitu 3. Kueri delimiter
berguna untuk membatasi prosedur. Kueri returns
berfungsi untuk pengembalian data yang akan dibuat di
sintaksi rumus selanjutnya. Kueri begin untuk memulai
atau membuat suatu rumus. Kueri declare status
varchar(10); untuk membuat suatu variabel yang
bernama status dengan tipe data varchar dan
mempunyai panjang data yaitu 10. Kueri if
life_expectancy <= 50 then set status =
'rendah'; berfungsi untuk menyajikan kondisi jika
status harapan hidup kurang dari sama dengan 50 maka
atur statusnya jadi rendah kemudian kueri elseif
life_expectancy > 40 and life_expectancy > 75
then set status = 'sedang'; berfungsi untuk
menyajikan kondisi dimana kecuali jika status harapan
hidup lebih dari 50 dan lebih dari 75 maka atur
statsunya ke sedang, lalu kueri else set status =
'tinggi'; berfungsi untuk kondisi jika tidak terpenuhi
keduanya maka atur statusnya jadi tinggi. kueri return
(status); berfungsi untuk pengembalian rumus dari
status lalu kueri end // untuk mengakhiri kueri
berfungsi yang diawali dengan delimiter //.
b) Memanggil stored function
Pada gambar 3.20 menjelaskan tentang perintah
untuk memanggil stored function. Kueri Select
name, status_harapan_hidup(lifeexpectancy)
from country; yang berfungsi untuk menampilkan
kolom nama dan status harapan hidup di dalam life
expectancy (stored function) di dalam tabel country.
C. Prosedur Dan Stored function dalam Database
1. Menampilkan semua prosedur dan stored function yang terdapat
pada database world.
a. Kueri
Select routine_name, routine_type, routine_schema from
information_schema.routines
where routine_type in ('function','procedure') and
routine_schema = 'world';
b. Output

Gambar 3. 21 Output semua prosedur dan stored functiondi database world

c. Penjelasan
Pada gambar 3.21 menjelaskan tentang perintah untuk
membuat kueri menampilkan prosedur dan stored function
yang terdapat di database world. Kueri Select
routine_name, routine_type, routine_schema from
information_schema.routines berfungsi untuk
menampilkan kolom routine name, routine type, routine
schema di dalam kolom information schema . Kueri where
routine_type in ('function','procedure') and
routine_schema = 'world'; berfungsi untuk kondisi
dimana routine type di dalam stored function dan prosedur dan
menggunakan kondisi di world.
2. Menampilkan informasi mengenai prosedur yang terdapat kata
“JumlahNegara”
a. Kueri
Show procedure status like ‘jumlahnegara’;

b. Output

Gambar 3. 22 Output menampilkan prosedur terdapat kata jumlah negara

c. Penjelasan
Pada gambar 3.22 menjelaskan tentang perintah
menampilkan informasi prosedur yang terdapat kata
“Jumlahnegara”. Kueri Show procedure status berfungsi
untuk menampilkan procedure status lalu like

‘jumlahnegara’; berfungsi untuk kondisi menampilkan


jumlah negara.
3. Menampilkan informasi mengenai stored function yang terdapat
kata “status_harapan_hidup”
a. Kueri
Show function status like ‘status_harapan_hidup’;
b. Output

Gambar 3. 23 Output menampilkan stored functionterdapat kata status harapan


hidup

c. Penjelasan
Pada gambar 3.23 menjelaskan tentang perintah untuk
menampilkan informasi mengenai stored function yang
terdapat kata “status_harapan_hidup”. Kueri Show function
status like ‘status_harapan_hidup’; berfungsi untuk
menampilkan status stored function yang berada di kondisi
status harapan hidup.
3.4. Tugas
1. Menggunakan prosedur, untuk menampilkan daftar benua
Jawab :
a. Kueri
a) Membuat prosedur
delimiter |
create procedure tampil_benua()
begin
select continent from country;
end |
delimiter ;
b) Memanggil prosedur
call tampil_benua;
b. Output

Gambar 3. 24 Output membuat prosedur tampil_benua

Gambar 3. 25 Output pemanggil


c. Penjelasan
a) Membuat prosedur
Pada gambar 3.24 menjelaskan tentang perintah untuk
membuat prosedur yang bernama tampil_benua.Kueri

delimiter berguna untuk membatasi prosedur. Kueri begin


untuk memulai kueri sql dan membuat perintah di dalamnya.
Kueri select continent from country; berfungsi untuk
menampilkan benua di dalam tabel negara kueri end // untuk
mengakhiri kueri stored function yang diawali dengan
delimiter //.
b) Memanggil prosedur
Pada gambar 3.25 menjelaskan tentang perintah untuk
memanggil prosedur. Kueri call berfungsi untuk memanggil
prosedur yang sudah dibuat dan diikuti nama prosedurnya,
kemudian akan muncul tabel yang memunculkan kueri prosedur
yang telah dibuat.
2. Menggunakan prosedur untuk menampilkan negara beserta
ibukotanya, dengan menggunakan parameter berdasarkan benua
Jawab :
a. Kueri
a) Membuat prosedur
delimiter //
create procedure tampil_negara_bahasa(benua char(20))
begin
select country.name, max(countrylanguage.percentage)
from country,
countrylanguage where
country.code=countrylanguage.countrycode and
country.continent = benua group by (country.name);
end //
delimiter ;
b) Memanggil prosedur
call tampil_negara_bahasa("Africa");
b. Output

Gambar 3. 26 Output membuat prosedur tampil_negara_bahasa

Gambar 3. 27 Output pemanggil

c. Penjelasan
a) Membuat prosedur
Pada gambar 3.26 menjelaskan perintah tentang untuk
membuat prosedur yang bernama tampil_negara_bahasa
dengan parameter benua dan menggunakan tipe data char
memiliki panjang data 20. Kueri delimiter berguna untuk
membatasi prosedur. Kueri begin untuk memulai kueri sql dan
membuat perintah di dalamnya. Kueri select country.name,
max(countrylanguage.percentage) from country berguna
untuk menampilkan tabel country dikolom nama pada tabel
county dan menghitung jumlah maksimal di tabel
countrylanguage pada kolom percentage country lalu
kemudian kueri where country.code =

countrylanguage.countrycode berstored function agar tidak


terjadi duplikasi dengan menampilkan code pada tabel country
sebagai kunci utama, sedangkan kunci tamu berada pada tabel
countryLanguageyang saling berhubungan. Sedangkan
country.continent = benua group by (country.name);
berfungsi untuk kondisi dimana countrylanguage akan di
tampilkan di tabel country dan group by untuk menampilkan
suatu data berdasarkan suatu kolom name pada tabel country.
tertentu. Kueri end // untuk mengakhiri kueri stored function
yang diawali dengan delimiter //.
b) Memanggil prosedur
Pada gambar 3.27 menjelaskan tentang perintah untuk
memanggil prosedur. Kueri call ("Asia"); berfungsi untuk
memanggil prosedur yang sudah dibuat dan diikuti nama
prosedurnya, kemudian akan muncul tabel yang memunculkan
kueri prosedur yang telah dibuat lalu akan menampilkan kondisi
tampil negara bahasa di Asia
3. Menggunakan prosedur, untuk menampilkan jumlah populasi dengan
menggunakan mode parameter OUT berdasarkan benua
Jawab :
a. Kueri
a) Membuat prosedur
delimiter //
create procedure ContiPop(in continentName
varchar(255))
begin
select sum(country.Population)
from country
where country.Continent=continentName;
end |
delimiter ;
b) Memanggil prosedur
call ContiPop("Africa");
b. Output

Gambar 3. 28 Output membuat prosedur contipop

Gambar 3. 29 Output pemanggilan

c. Penjelasan
a) Membuat prosedur
Pada gambar 3.28 menjelaskan tentang perintah untuk
membuat prosedur yang bernama contipop dengan parameter
continentname tipe data varchar panjang data 255.Kueri
delimiter berguna untuk membatasi prosedur. Kueri begin
untuk memulai kueri sql dan membuat perintah di dalamnya.
Kueri select sum(country.Population) from country

berfungsi untuk menampilkan menjumlahkan semua data yang


ada pada tabel country di dalam kolom population. Kueri where
country.Continent=continentName; berfungsi untuk
kondisi dimana countrycontinent untuk menampilkan benua dan
namanya kueri. end // untuk mengakhiri kueri stored function
yang diawali dengan delimiter //.
b) Memanggil prosedur
Pada gambar 3.29 menjelaskan tentang perintah untuk
memanggil prosedur. Kueri call contipop ("Asia");

berfungsi untuk memanggil prosedur yang sudah dibuat dan


diikuti nama prosedurnya, kemudian akan muncul tabel yang
memunculkan kueri prosedur yang telah dibuat lalu akan
menampilkan kondisi populasi negara yang ada di Asia.
4. Pada dasarnya suatu negara mengalami pertumbuhan ekonomi. Ada
negara yang mengalami pertumbuhan ekonomi dan ada pula yang
mengalami penurunan. Sebagai Seorang IT buatlah stored
functionyang digunakan untuk menampilkan negara, nilai
pertumbuhan ekonomi, status ekonomi (naik atau turun).
Jawab :
a. Kueri
a) Membuat stored function
1. Stored function nilai
Delimiter //
create function nilai(pnb float, pnbold float)
returns float(10,2)
begin
declare hasil float;
set hasil=(pnb-pnbold)/pnbold*100;
return hasil;
end; //
2. Stored function statek
Delimiter //
create function statek(pnb float, pnbold float)
returns varchar(6)
begin
declare stat varchar(6);
if pnb>pnbold
then set stat="Naik";
else set stat="Turun";
end if;
return stat;
end; //
delimiter ;
b) Memanggil stored function
select country.Name, nilai(country.GNP,
country.GNPOld), statek(country.GNP,
country.GNPOld) from country where
country.Code='idn';
b. Output

Gambar 3. 30 Output membuat stored functionnilai

Gambar 3. 31 Output membuat stored function statek

Gambar 3. 32 Ouput pemanggilan

c. Penjelasan
a) Membuat stored function
Pada gambar 3.30 menjelaskan tentang perintah untuk membuat
stored function dengan nama nilai dengan 2 parameter yaitu
pnb float, pnbold float
b) Memanggil stored function
Pada gambar 3.32 menjelaskan tentang perintah untuk memanggil
stored function. Kueri select country.Name,

nilai(country.GNP, country.GNPOld) berfungsi untuk


menampilkan nama negara dengan nilai pertumbuhan ekonomi
di negara yang akan dimasukkan oleh user. Kemudian kueri
statek(country.GNP, country.GNPOld) from country
where country.Code='idn'; berfungsi untuk menampilkan
status ekonomi yang berada di kondisi negara indonesia.
5. Badan Kependudukan PBB (UNFPA) sedang mengalam kebingungan
dalam mencari tingkat kepadatan penduduk aritmatik suatu
negara.Sebagai profesional IT,buatlah stored function untuk membantu
Badan Kependudukan PBB untuk menghitung tingkat kepadatan
penduduk aritmatik dan kategori kepadatannya adalah :
Tabel 3. 1 Output yang diharapkan

Tingkat Kategori Keterangan


kepadatan
<= 100 I Sangat kurang

101- 250 II Kurang

251- 500 Ill Sedang

501- 750 IV Lumayan

750 – 1000 V Padat

>1000 VI Sangat padat

a. Kueri
a) Membuat stored function
1) Stored function kepadatan
Delimiter //
create function kepadatan(pop float, sarea
float(10,2))
returns float(10,2)
begin
declare hasil float;
set hasil=pop/sarea;
return hasil;
end //
2) Stored function statkepadatan
Delimiter //
create function statkepadatan(pop float, sarea
float(10,2))
returns varchar(50)
begin
declare x float(10,2);
declare hasil varchar(50);
set x = pop/sarea;
if x <=100
then set hasil = "Sangat kurang";
elseif x>=101 and x<=250
then set hasil = "Kurang";
elseif x>=251 and x<=500
then set hasil = "Sedang";
elseif x>=501 and x<=750
then set hasil = "Lumayan";
elseif x>=751 and x<=1000
then set hasil = "Padat";
elseif x>1000
then set hasil = "Sangat Padat";
end if;
return hasil;
end //
delimiter ;
b) Memanggil stored function
Select kepadatan(country.Population,
country.SurfaceArea),(country.Population,
country.SurfaceArea) from country where code =
'idn';
b. Output

Gambar 3. 33 Output membuat stored functionkepadatan


Gambar 3. 34 Output membuat stored function statkepadatan

Gambar 3. 35 Ouput pemanggilan

c. Penjelasan
a) Membuat stored function
Pada gambar 3.33 menjelaskan tentang perintah untuk
membuat stored function yang bernama kepadatan dengan 2
parameter yaitu pop float, sarea float dengan tipe data
float dan panjang data 10 dan 2. Kueri delimiter berguna
untuk membatasi prosedur. Kueri begin untuk memulai kueri
sql dan membuat perintah di dalamnya. Kueri declare hasil
float; untuk membuat variabel baru yang bernama hasil
dengan tipe data float. Kueri set hasil=pop/sarea;
berguna untuk melakukan rumus hasil nilai pertumbuhan
ekonomi pop dibagi dengan sarea. Kueri return hasil
berfungsi untuk mengembalikan nilai dari rumus hasil lalu
kueri end // untuk mengakhiri kueri berfungsi yang diawali
dengan delimiter //.
Pada gambar 3.35 menjelaskan tentang perintah untuk
membuat stored function yang bernama statkepadatan
dengan 2 parameter yaitu pop float, sarea float dengan
tipe data float dan panjang data 10 dan 2. Kueri returns
varchar (50) untuk mendeklarasikan pengembalian dengan
tipe data varchar panjang data 50 Kueri delimiter berguna
untuk membatasi prosedur. Kueri begin untuk memulai kueri
sql dan membuat perintah di dalamnya. Kueri declare x
float(10,2); declare hasil varchar(50); berguna
untuk membuat variabel baru yaitu x dengan tipe data float
panjang data 10 dan 2,lalu membuat variabel baru lagi yaitu
hasil dengan tipe data varchar panjang data 50. Kueri set x =
pop/sarea;
berguna untuk mengatur variabel x dan membuat rumus pop dibagi
dengan sarea yang nantinya akan di eksekusi oleh program.
Kueri if x <=100 then set hasil = "Sangat

kurang";elseif x>=101 and x<=250 berguna untuk jika


kondisi x kurang dari sama dengan 100 maka set hasil dengan
output “sangat kurang” kemudian elseif x>=101 and

x<=250 then set hasil = "Kurang"; berguna untuk


kondisi kecuali jika x lebih dari sama dengan 101 dan x kurang
dari sama dengan 250 maka set hasil dengan output “kurang”
lalu elseif x>=251 and x<=500 then set hasil =
"Sedang"; berguna untuk kondisi kecuali jika x kurang dari
sama dengan 500 maka set hasil dengan output “sedang” lalu
elseif x>=501 and x<=750
then set hasil = "Lumayan"; berguna untuk kondisi kecuali
jika x lebih dari sama dengan 501 dan x kurang dari sama
dengan 750 maka set hasil dengan output “lumayan” kemudian
elseif x>=751 and x<=1000 then set hasil = "Padat";
berguna untuk kondisi kecuali jika x lebih dari sama dengan
751 dan x kurang dari sama dengan 1000 maka set hasil dengan
output “padat” lalu elseif x>1000 then set hasil =
"Sangat Padat"; berguna untuk kondisi kecuali jika x lebih
dari 1000 maka set hasil dengan output “sangat padat”. Kueri
return hasil berstored function untuk mengembalikan nilai
dari rumus hasil lalu kueri end // untuk mengakhiri kueri
stored function yang diawali dengan delimiter //.

b) Memanggil stored function


Pada gambar 3.34 menjelaskan tentang perintah untuk
memanggil stored function dengan menggunakan kueri
select.
Selectkepadatan(country.Population,country.SurfaceA
rea) from country berfungsi untuk menampilkan kepadatan
di kolom population dan SurcafeArea dari tabel country.
Kemudian query where country.Name='Indonesia';

berfungsi kondisi dimana negara yang ingin ditampilkan adalah


negara indonesia.
Pada gambar 3.36 menjelaskan tentang perintah untuk
memanggil stored function dengan menggunakan kueri
select.
selectstatkepadatan(country.Population,country.Surf
aceArea) from country berfungsi untuk menampilkan status
kepadatan di tabel country. Kueri where code = 'idn';
berfungsi untuk menampilkan status kepadatan dengan kode
negara “idn”.
6. Pada tahun ini Badan Pusat Statistik Indonesia telah usai melakukan
sensus penduduk. BPS akan membuatlaporan statistik penduduk
berdasarkan provinsi. Sebagai karyawan IT, buatlah kueri dengan
menggunakan stored function yang menampilkan semua provinsi di
indonesia beserta jumlah populasinya.
Jawab :
a. Kueri
a) Membuat stored function
Delimiter //
create function popprov(prov varchar(25))
returns int
begin
declare pop int;
select sum(city.Population)
from country
where country.region=prov
into pop;
return pop;
end //
delimiter ;
b) Memanggil stored function
select district, popprov(city.District) from city where
city.CountryCode='idn' group by district;
b. Output

Gambar 3. 36 Output membuat stored function popprov

Gambar 3. 37 Output pemanggilan


c. Penjelasan
a) Membuat stored function
Pada gambar 3.37 menjelaskan tentang perintah untuk
membuat stored function yang bernama popprov dengan
parameter yang bernama prov dengan tipe data varchar dan
panjang data 20. Kueri returns int berfungsi untuk
pengembalikan data dengan tipe data integer lalu kueri
declare pop int; berfungsi untuk membuat variabel baru
yang bernama pop dengan tipe data integer. Kueri select
sum(city.Population)from country berfungsi untuk
menampilkan penjumlahan di kolom populasi tabel country.
Kueri join city on country.Code=city.CountryCode

berfungsi untuk menampilkan data yang beririsan dengan tabel


kota di kode dan kode negara. kueri where

city.district=prov into pop; berfungsi untuk kondisi


dimana kota menampilkan jumlah populasi di tabel prov
dimasukkan ke kolom pop. Kueri end // untuk mengakhiri
kueri stored function yang diawali dengan delimiter //.
b) Memanggil stored function
Pada gambar 3.38 menjelaskan tentang perintah untuk
memanggil stored function. Kueri select district,

popprov(city.District) from city berstored function


untuk menampilkan jumlah populasi di stored function popprov
dan di kolom popprov(city.District) di tabel city.
Kueri where city.CountryCode='idn' group by

district; berfungsi untuk kondisi dimana kode negaranya


adalah “idn” dan di kelompokkan oleh jumlah populasinya yang
berada pada negara indonesia itu sendiri.
7. UNESCO sedang melakukan pemetaan kebudayaan bahasa setiap
negara. Sebagai tenaga IT UNESCO, buatlah kueri dengan stored
function yang menampilkan negara, bahasa, dan jumlah bahasa setiap
negara .
Jawab :
a. Kueri
a) Membuat stored function
1) Stored function bahasa
Delimiter //
create function bahasa(prov varchar(100))
returns text
begin
declare hasil varchar(1000);
select group_concat(countrylanguage.`Language`)
from country, countrylanguage
where countrylanguage.CountryCode=country.Code
and prov=country.Name
into hasil;
return hasil;
end //
2) Stored function jbahasa
Delimiter //
create function jbahasa(prov varchar(100))
returns text
begin
declare hasil varchar(1000);
select count(countrylanguage.`Language`)
from country, countrylanguage
where countrylanguage.CountryCode=country.Code
and prov=country.Name
into hasil;
return hasil;
end //
delimiter ;
b) Memanggil stored function
select name, bahasa(country.Name),
jbahasa(country.Name) from country;
b. Output
Gambar 3. 38 Output membuat stored function bahasa

Gambar 3. 39 Output membuat stored functionjbhasa

Gambar 3. 40 Output pemanggilan

c. Penjelasan
a) Membuat stored function
Pada gambar 3.39 menjelaskan tentang perintah untuk
membuat stored function yang bernama bahasa dengan
parameter yang bernama prov dengan tipe data varchar dan
panjang data 100. Kueri returns text berfungsi untuk
pengembalikan data. Kueri begin berfungsi untuk memulai
suatu rumus di sql. Delimiter berfungsi sebagai pembatas
eksekusi stored function. Kueri declare hasil

varchar(1000); berfungsi untuk membuat variabel baru yang


bernama hasil dengan tipe data varchar panjang datanya yaitu
1000. Kueri select
group_concat(countrylanguage.`Language`)from
country, countrylanguage berfungsi untuk menampilkan
data group dan penggabungan 2 string yaitu concat di dalam
kolom bahasa tabel lalu kemudian kueri di
country,countrylanguage.where
countrylanguage.CountyCode=country.Code and
prov=country.Name berfungsi untuk kondisi dimana bahasa
negara yang dingin ditampilkan di kolom countrycode dan
provinsi di nama negaranya. Kueri end // untuk mengakhiri
query stored function yang diawali dengan delimiter //.
Pada gambar 3.40 menjelaskan tentang perintah untuk
membuat stored function yang bernama jbahasa dengan
parameter yang bernama prov dengan tipe data varchar dan
panjang data 100. Kueri returns text berfungsi untuk
pengembalikan data. Kueri begin berfungsi untuk memulai
suatu rumus di sql. . Kueri declare hasil varchar(1000);
berfungsi untuk membuat variabel baru yang bernama hasil
dengan tipe data varchar panjang datanya yaitu 1000. Query
select count(countrylanguage.`Language`) from
country, countrylanguage berfungsi untuk menampilkan
penjumlahan yang ada di kolom language di tabel country,
countrylanguage.country,countrylanguage.wherecountr
ylanguage.CountryCode=country.Codeandprov=country.N
ame berfungsi untuk kondisi dimana bahasa negara yang dingin
ditampilkan di kolom countrycode dan provinsi di nama
negaranya into hasil; return hasil; berfungsi untuk
meng-input-kan di dalam hasil sekalgius mengembalikan data di
hasil. Kueri end // untuk mengakhiri Kueri stored function
yang diawali dengan delimiter //.
b) Memanggil stored function
Pada gambar 3.41 menjelaskan tentang perintah untuk
memanggil stored function. Kueri select name,
bahasa(country.Name), berfungsi untuk menampilkan nama
bahasa di nama negara lalu jbahasa(country.Name) from
country; berfungsi untuk menampilkan jumlah bahasa di nama
negara dari tabel country.
8. Kementrian Luar Negeri Indonesia dalam menjalan tugasnya
menugaskan seorang direktur kawasan yang bertanggung jawab
terhadap hubungan ke negara-negara pada suatu kawasan dan dibawah
direktur kawasan ada duta besar yang ditempatkan pada suatu negara.
Dengan menggunakan kueri dan stored function,tentukan berapa
kebutuhan direktur kawasan,banyak duta negara setiap kawasan,dan
negara apa saja pada setiap kawasan.
a. Kueri
a) Membuat stored function
Delimiter //
create function regis(prov varchar(25))
returns int
begin
declare pop int;
select count(country.Name)
from country
where country.region=prov
into pop;
return pop;
end //
delimiter ;
b) Memanggil stored function
select country.Region, regis(country.Region) from
country group by country.Region;
b. Output

Gambar 3. 41 Output membuat stored function regis

Gambar 3. 42 Output pemanggilan

c. Penjelasan
a) Membuat stored function
Pada gambar 3.42 menjelaskan tentang perintah untuk
membuat stored function yang bernama regis dengan
parameter yang bernama prov dengan tipe data varchar dan
panjang data 25. Kueri returns int berfungsi untuk
pengembalikan data dengan tipe data integer lalu Kueri
declare pop int; berfungsi untuk membuat variabel baru
yang bernama pop dengan tipe data integer. Kueri select
count(country.Name) from country berfungsi untuk
menampilkan penjumlahan pada kolom name di tabel country
lalu where country.region=prov berfungsi untuk kondisi
dimana negara di kolom region dan sama dengan prov. Kueri
end // untuk mengakhiri kueri stored function yang diawali
dengan delimiter //.
b) Memanggil stored function
Pada gambar 3.43 menjelaskan tentang perintah untuk
memanggil stored function. Kueri select country.Region,
regis(country.Region) from country berfungsi untuk
menampilkan negara dan stored function regis di dalam tabel
country lalu group by country.Region; berstored function
untuk menampilkan pengelompokan di region atau masing
masing negara pada tabel country

3.5. Kesimpulan
Dari praktikum bab 3 dapat disimpulkan bahwa Prosedur adalah
kumpulan Pre-defined Transact-SQL yang digunakan untuk melakukan
tugas/task khusus. Dalam procedure dapat berisi peritah dan statement
yang dapat disimpan dan dipergunakan lebih mudah dari pada mengulang
kueri yang panjang dengan banyak kondisi. Untuk membuat prosedur,
user hanya menjalankan perintah “create procedure” diikuti dengan SQL
script. user bisa membuat prosedur melalui Kueri Analyzer pada MS SQL
Server, atau dengan menggunakan menu New Procedure pada Enterprise
Manager.
Store Procedure terdiri dari:
1. Statement CREATE PROC {PROCEDURE}
2. Nama Procedure;
3. Parameter list
4. SQL statement.
Keuntungan menggunakan prosedur yaitu Semua perintah SQL, yang
kita kirimkan ke database server melalui kumpulan action yang disebut
dengan execution. Hal ini menjadikan perintah SQL yang kita kirimkan
melalui beberapa proses sebelum data dikembalikan ke client.
User mengirimkan request untuk mengeksekusi store procedure.SQL Server
kemudian mengecek apakah ada syntax error. Mengidentifikasi dan
melakukan pengecekan alias pada FROM clausa. Membuat kueri plan.
Meng-compile dan kemudian mengeksekusi kueri plan untuk kemudian
mengembalikan data yang diminta. Namun, perlu diketahui jika hanya
ingin menggunakan kueri biasa tanpa banyak kondisi, lebih disarankan
agar tidak meyimpan dalam stored procedure, karena hal ini juga dapat
mepengaruhi media penyimpanan meski tidak terlalu signifikan.
BAB IV
VIEW

4.1. Tujuan
1. Dapat membuat view.
2. Dapat membuat view dengan keyword WHERE, AND, OR, GROUP BY,
ORDER BY, BETWEEN, IN, LIKE, JOIN, UNION, dan subquery.
3. Dapat melakukan pemanggilan view.
4. Dapat melakukan pemanggilan view.
5. Dapat mengubah view yang sudah dibuat.

4.2. Dasar Teori


4.2.1. Database view
Database view adalah sebuah virtual tabel yang mendefinisikan
sebuah query dengan perintah join database view sama halnya dengan
tabel pada database yang memiliki baris dan kolom.

Gambar 4. 1 virtual tabel

Keuntungan menggunakan database view adalah


1. Meringkas query yang mana sebelum membuat database view
statement select di ikuti perintah join sangat panjang, dengan
menggunakan databes view perintah query tersebut disederhanakan.
2. Database view dapat membatasi akses kedatabase.
3. Database view dapat melakukan perhitungan kolom,sedangkan tabel
database tidak.

84
85

Kerugian menggunakan database view adalah


1. Performa yang lambat, jika database view tersebut dibuat dari database
lainya.
Format pembuatan database view adalah
Create
[or replace]
[algorithm = {merge |temptable|undefined}]
View nama_view
As statement_select
Cara pemanggilan:
Select*from nama_view;

4.2.2. Fungsi View


Tujuan dari pembuatan view adalah untuk kenyamanan
(mempermudah penulisan query), untuk keamanan (menyembunyikan
beberapa kolom yang bersifat rahasia), atau dalam beberapa kasus bisa
digunakan untuk mempercepat proses menampilkan data (terutama jika
kita akan menjalankan query tersebut secara berulang). (Anon., n.d.)

4.3. Latihan
1. Membuat view untuk menampilkan nama kota dan nama negara
a. Query
a) Membuat view dengan nama ‘negara’
CREATE VIEW NEGARA
AS SELECT CITY.NAME AS NAMA_KOTA,COUNTRY.NAME AS
NAMA_NEGARA
FROM CITY JOIN COUNTRY ON CITY.COUNTRYCODE =
COUNTRY.CODE;
b) Memanggil view ‘negara’
SELECT*FROM NEGARA;
b. Output

Gambar 4. 2 Kueri untuk view negara


86

Gambar 4. 3 output latihan 1

c. Penjelasan
a) Membuat view dengan nama ‘negara’
Pada gambar 4.1, dibuat sebuah view yang digunakan
untuk menampilkankan kolom nama negara dari sebuah tabel
negara dan serta nama dari kota yang berada pada tabel negara
pada database world. Selain itu, kueri yang digunakan adalah
join pada tabel country. Digunakan juga hubungan relasi
antara tabel menggunakan kunci utama dan tamu, agar tidak
terjadi duplikasi. Dalam kasus ini, kunci utama berada pada
tabel country kolom Code, sedangkan untuk kunci tamu
berada pada tabel city dan ckolom countryCode
b) Memanggil view ‘negara’
Digunakan fungsi select*from <nama view>; dimana
fungsi select digunakan untuk memilih apa yang ingin
ditampilkan dan *from yaitu untuk mengambil seluruh isi data
dari fungsi yang ada, dan dalam hal ini adalah view negara.
2. Mengubah view negara dengan menambahkan bahasa dari negara
tersebut
a. Query
a) Mengubah view dengan nama ‘negara’
ALTER VIEW NEGARA AS
SELECT CITY.NAME AS NAMA_KOTA,COUNTRY.NAME AS
NAMA_NEGARA,COUNTRYLANGUAGE.LANGUAGE
87

FROM CITY JOIN COUNTRY ON


CITY.COUNTRYCODE=COUNTRY.CODE JOIN
COUNTRYLANGUAGE ON
COUNTRY.CODE=COUNTRYLANGUAGE.COUNTRYCODE
WHERE COUNTRYLANGUAGE.ISOFFICIAL ='T';
b) Memanggil view ‘negara’
SELECT*FROM NEGARA;
b. Output
a) Mengubah view ‘negara’

Gambar 4. 4 output latihan 2

b) Memanggil view ‘negara’

Gambar 4. 5 Output pemanggilan


c. Penjelasan
a) Mengubah view ‘negara’
Pada gambar 4.3 ditampilkan kueri untuk mengganti
view yang telah terbuat. Dalam hal ini digunakan kueri alter
table untuk memanipulsi/mengedit susunan table view.
Selain itu kueri ditambahkan kueri untuk menampilkan kolom
bahasa yang bahsanya harus bahas resmi, untuk itu
ditambahkan kueri countylanguage.isofficial = ‘T’.

Selain itu, susunan tabel masih sama dengan seperti gambar


4.2.
b) Memanggil view ‘negara’
Digunakan fungsi select*from <nama view>; dimana
fungsi select digunakan untuk memilih apa yang ingin
88

digunakan dan *from yaitu untuk mengambil seluruh isi data


dari fungsi yang ada, dan dalam hal ini adalah view negara.

4.4. Tugas
1. Membuat view untuk menampilkan kota-kota yang jumlah
penduduknya diatas 5 juta jiwa.
Jawab :
a. Query
a) Membuat view kota
CREATE VIEW KOTA AS SELECT CITY.NAME AS KOTA FROM CITY
WHERE POPULATION >=5000000;
b) Memanggil view kota
SELECT*FROM KOTA;
b. Output
a) Membuat view kota

Gambar 4. 6 Kueri membuat view negara

b) Memanggil view kota

Gambar 4. 7 Memanggil view kota


89

c. Penjelasan
a) Membuat view Kota
Pada gambar 4.6 ditampilkan kueri untuk membuat
fungsi view negara. Data yang ditampilkan dalam tabel adalah
kota kota yang jumlah penduduknya lebih dari 5 jutat jiwa.
Dalam hal ini digunakan kueri untuk menampilkan data kota
yang berada pada tabel city kolom name dengan kondisi
where yang digunakan adalah pada tabel city kolom
population yang lebih dari 5 juta. dari database world.
b) Memanggil view Kota
Pemanggilan view kota_kecil menggunakan select*from
<nama view> dengan memiliki nama mengambil atau
menampilkan semua yang berada dalam view kota.
2. Mengubah view nomor 1 dengan ketentuan pendudukan diantara 2
hingga 5 juta jiwa.
Jawab :
a. Query
a) Mengubah view kota
ALTER VIEW KOTA AS
SELECT CITY.NAME AS KOTA FROM CITY WHERE POPULATION
>=2000000 AND POPULATION <= 5000000;
b) Memanggil view kota
Select*from kota;
b. Output
a) Mengubah view kota

Gambar 4. 8 Mengubah kondisi view


90

b) Memanggil view kota

Gambar 4. 9 Memanggil view kota

c. Penjelasan
a) Mengubah view kota
Pada gambar 4.8 ditampilkan kueri untuk mengganti
kondisi tabel pada view. Dalam hal ini digunakan kueri alter
sama seperti biasanya. Kondisi where yang di ubah adalah
range jumlah penduduk yang semula 5 juta lebih menjadi 2
hingga 5 juta.
b) Memanggil view kota
Pemanggilan view kota menggunakan select*from
<nama view> dengan memiliki nama mengambil atau
menampilkan semua yang berada dalam view kota
91

3. Membuat view untuk menampilkan nama negara, dengan ketentuan


negaranya diwilayah asia selatan dan asia tenggara.
a. Query
a) Membuat view negara2
CREATE VIEW NEGARAKU
AS SELECT COUNTRY.NAME AS NEGARA FROM COUNTRY WHERE
COUNTRY.REGION = "SOUTHERN AND CENTRAL ASIA" OR
COUNTRY.REGION = "SOUTHEAST ASIA";
b) Membuat view negara2
SELECT*FROM NEGARAKU;
b. Output
a) Membuat view negara2

Gambar 4. 10 Membuat view negara2

b) Membuat view negara2

Gambar 4. 11 Memanggil view negara2

c) Penjelasan
a) Membuat view negara2
Pada gambar 4.10 ditampilkan kueri untuk menampilkan
negara negara yang ada pada wilayah Asia selatan dan Asia
tenggara. Dalam hal ini digunakan kueri select untuk
92

menampilkan nama negara pada tabel negara dengan kondisi


where kolom region pada tabel country berisi southeast
Asia atau southern Asia..

b) Memanggil view negara2


Dipanggil dari fungsi view negaraku menggunakan
select*from dengan fungsi mengambil seluruh data dari view
negara1.

4. Membuat view yang menampilkan nama negara, jumlah populasi, serta


kawasan dengan ketentuan negara yang ditampilkan adalah negara
yang memiliki populasi paling tinggi di setiap kawasanya.
a. Query
a) Membuat view negara3
create view negara3
as select country.name as negara, country.population
as
jumlah_populasi, country.region from country where
(select max(country.population)) group by
country.region;
b) Memanggil view negara3
Select*from negara3;
b. Output
a) Membuat view negara3

Gambar 4. 12 Membuat view negara3


93

b) Memanggil view negara3

Gambar 4. 13 memanggil view negara3


c. Penjelasan
a) Membuat view negaramu
Pada gambar 4.12 ditampilkan kueri untuk menampilkan
nama negara dari tabel negara. Jumlah populasi dari tabel
negara dan kawasan pada tabel negara, dengan kondisi negara
yang akan ditampilkan adalah negara yang populasinya paling
tinggi berasarkan wilayah. Dalam hal ini digunakan kueri
select untuk menampilkan data dan menggunakan kondisi
where ditambahkan kueri subselect dengan operator max
untuk mencari nilai tertinggi berdasarkan tabel populasi pada
tabel country. Ditambahkan juga kueri group by untuk
mengelompokkan kueri max berdasarkan wilayah atau kolom
region pada tabel negara.
b) Memanggil view negaramu
Dipanggil dari fungsi view negaramu menggunakan
select*from dengan fungsi mengambil seluruh data dari view
negara3.
94

5. Membuat view yang menampilkan nama negara, dan populasi dengan


ketentuan 10 negara paling padat di dunia.
a. Query
a) Membuat view negara4
create view negara4
as select country.name as negara,country.population
from country order by country.population desc limit
10;
b) Memanggil view negara4
Select*from negara4
b. Output
a) Membuat view negara4

Gambar 4. 14 Membuat view negara4

b) Memanggil view negara4

Gambar 4. 15 Menampilkan view negara4


c. Penjelasan
a) Membuat view negara4
Pada gambar 4.14 ditampilkan kueri untuk menampilkan
nama negara dan populasi dari tabel country, yang berkondisi
hanya ditampilkan 10 negara terpadat. Dalam hal ini kueri yang
digunakan adalah select untuk menampilkan kolom name
95

pada tabel negara dan kolom population dalam tabel negara.


order by desc(descending). Selain itu digunakan juga kueri
limit untuk membatasi data yang ditampilkan. Dalam kasus
ini, limit membatasi hingga 10 data saja.
b) Memanggil view negara4
Dipanggil dari fungsi view negaramu menggunakan
select*from dengan fungsi mengambil seluruh data dari view
negara4
6. Membuat view yang menampilkan nama negara dan bahasa dengan
ketentuan negara-negara yang memakai bahasa Inggris, Spanyol,
Prancis, Arab, Cina, Jerman, dan Portugis.
a. Query
a) Membuat view negara5
create view negara5
as select country.name as
negara,countrylanguage.language
as bahasa from country,countrylanguage where
country.code=
countrylanguage.countrycode
and(countrylanguage.language IN ('english',
'spanish', 'france',
'arabic', 'chinese',
'german', 'italy',
'portuguese');
b) Memanggil view negara5
Select*from negara5
96

b. Output
a) Membuat view negara5

Gambar 4. 16 Membuat view negara4

b) Memanggil view negara5

Gambar 4. 17 Memanggil view negara5

c. Penjelasan
a) Membuat view negara5
Pada gambar 4.16 ditampilkan kueri untuk menampilkan
nama negara dan bahasa berdasarkan tabel negara dengan
kondisi hanya negara yang memakai bahasa inggris,
perancis,arab,china,jerman, italia dan portugis. Dalam hal ini
digunakan kueri select untuk menampilkan data, digunakan
juga hubungan antar tabel dengan menggunakan kunci utama
dan kunci tamu. Kunci utama berada pada tabel country kolom
Code sedangkan kunci tamu berada pada tabel
countrylanguage kolom countryCode. Selain itu digunakan
juga kondisi where dengan operator or untuk mencari negara
97

dengan salah satu bahasa inggris, spanyol,


perancis,arab,china,jerman,italia,dan portugis.
b) Memanggil view negara5
Dipanggil dari fungsi view negaramu menggunakan
select*from dengan fungsi mengambil seluruh data dari view
negara5
7. Membuat view yang menampilkan nama kota dan nama negara dengan
ketentuan nama kota mengandung, kata ‘and’.
a. Query
a) Membuat view negara5
create view kota2
as select city.name as kota,country.name as negara
from((city join country)
join countrylanguage) where((city.countrycode =
country.code and country.code =
countrylanguage.countrycode)
and (city.name like '%and%')) group by(city.name);
b) Memanggil view negara5
Select*from negara5;
b. Output
a) Membuat view kota1

Gambar 4. 18 Membuat view negara5


98

b) Memanggil view kota1

Gambar 4. 19 Memanggil view negara5

c. Penjelasan
a) Membuat view kota1
Pada gambar 4.18 diitampilkan kueri untuk menampilkan
nama kota dan nama negara query diatas digunakan untuk
membuat view untuk menampilkan dari nama kota yang
memiliki kata “and” digunakan fungsi like, fungsi ini sendiri
sendiri digunakan untuk menampilkan suatu kondisi dalam
data, dimana jika ada data yang memiliki kesama’an nama
dengan ‘and’ maka akan ditampilkan kepada user, lalu pada
query diatas digunakan fungsi join pada tabel country, untuk
mengambil data yang sama antara tabel city dan country
b) Memanggil view kota1
Dipanggil dari fungsi view namakota dengan
menggunakan select*from dengan fungsi mengambil seluruh
data dari view namakota
8. Membuat view yang menampilkan nama negara yang menggunakan
bahasa Inggris paling banyak.
99

a. Query
a) Membuat view bahasa1
create view bahasa1
as select country.name from country,countrylanguage
where country.code = countrylanguage.countrycode
and
countrylanguage.percentage=(select(max(countrylangu
age.percentage)) where
countrylanguage.language='english') group by
country.name;
b) Memanggil view bahasa1
Select*from bahasa1
b. Output

Gambar 4. 20 output tugas 8

c. Penjelasan
a) Membuat view bahasa1
Pada query diatas dibuat sebuah view untuk
menampilkan bahasa inggris yang paling banyak digunakan
oleh suatu negara, digunakan kondisi yaitu, dipilih suatu negara
persentase bahasa yang digunakan oleh suatu negara, dengan
kondisi dimana yang ditampilkan adalah negara yang
menggunakan bahasa inggris.
b) Memanggil view bahasa1
Dipanggil dari fungsi view bahasa1 menggunakan select*from
dengan fungsi mengambil seluruh data dari view bahasa1
100

4.5. Kesimpulan
Dengan diselesaikannya bab 4 ini dapat disimpulkan bahwa
praktikan telah menguasai pengguna’an dari fungsi view dari mysql,fungsi
view sendiri akan sangat berguna ketika dimasa depan praktikan akan
memanajamen suatu database yang besar, pada bab 4 ini, sudah didapatkan
bekal atau pengetahuan dasar dari pengguna’an view dari mysql,dengan
dasar-dasar yang sudah ada itu diarapkan para praktikan mampu terus
meningkatkan,ke tingkat yang lebih tinggi.
Dengan selesainya bab 4 ini diharapkan para praktikan mampu
melanjutkan ke bab selanjutnya tanpa kesulitan, karena sudah
mendapatkan bekal atau dasara-dasarnya.
BAB V
TRIGGER

5.1. Tujuan
1. Dapat Memahami trigger, kegunaan, dan manfaat.
2. Dapat membuat, menggunakan, dan menghapus trigger.
3. Dapat melakukan error handling, pada eksekusi trigger.

5.2. Dasar Teori


5.2.1. Trigger
Trigger adalah sebuah program yang terhubung dengan suatu tabel
atau view yang secara otomatis melakukan suatu aksi ketika baris di dalam
tabel atau view dikenai atau terjadi operasi insert, update, dan delete.
Kegunaan trigger antara lain untuk :
1. Melakukan update data otomatis jika terjadi perubahan. Contohnya
adalah sistem penjualan, jika dimasukkan barang baru maka akan
bertambah secara otomatis.
2. Trigger dapat digunakan untuk mengimplementasikan suatu sistem
log. Setiap terjadi perubahan, secara otomatis akan menyimpan ke
tabel log.
3. Trigger dapat digunakan untuk melakukan validasi dan verifikasi data
sebelum data tersebut disimpan.
Format pembuatan trigger adalah sebagai berikut :
CREATE TRIGGER nama_trigger
[BEFORE | AFTER] [INSERT | UPDATE | DELETE]
ON nama_tabel
FOR EACH ROW
Statement_trigger
Sedangkan format untuk menghapus trigger adalah :
DROP TRIGGER nama_trigger;

101
102

Trigger tidak perlu dipanggil dalam sebuah kueri, karena trigger


otomatis berjalan ketika ada kejadian (insert/update/delete) pada
suatu tabel yang sudah terhubung ke program trigger tersebut. (Teknik
Informatika, 2018)
5.2.2. Referensi Trigger : NEW dan OLD
Ketika bekerja dengan trigger, kita perlu mengetahui fungsi dari
referensi NEW dan OLD (ada juga yang menyebut dengan referensi
‘alias’). Kedua referensi tersebut berguna untuk mengambil nilai-nilai
yang dimasukkan ke dalam tabel (melalui perintah INSERT), nilia-nilai
yang akan digunakan untuk mengubah data (melalui perintah UPDATE),
maupun nilai-nilai dari suatu baris data yang telah dihapus (melalui
perintah DELETE).
NEW berfungsi sebagai referensi dari baris data yang akan dimasukkan atau
yang akan digunakan untuk mengubah data.
Pada perintah INSERT, referensi berguna untuk menyimpan nilai-nilai tersebut
ke dalam referensi NEW.
Pada perintah UPDATE, referensi NEW berguna untuk menyimpan nilai-nilai
yang akan digunakan untuk melakukan perubahan, sedangkan nilai lama
yang akan ditimpa dpat diakses menggunakan referensi OLD.
Pada perintah DELETE OLD berfungsi sebagai referensi dari baris data yang
ditimpa dengan data baru (melalui perintah UPDATE) dan dihapus( melalui
perintah DELETE).
Berikut tiga hal penting yang perlu diketahui dalam bekerja dengan trigger :
1. Pada saat mengeksekusi perintah INSERT, kita hanya memiliki
referensi NEW, yang berfungsi untuk menampung nilai-nilai kolom dari
baris data baru yang akan dimasukkan.
2. Pada saat mengeksekusi perintah UPDATE, kita memiliki referensi NEW
dan OLD. Referensi NEW berfungsi untuk melakukan perubahan
sedangkan OLD berfungsi untuk menampung nilai-nilai kolom yang
akan digunakan untuk melakukan perubahan sedangkan OLD berfungsi
untuk menampung nilai-nilai lama (nilai sebelum diubah) pada semua
kolom yang ada dalam tabel bersangkutan.
103

3. Pada saat mengeksekusi perintah DELETE, kita hanya memiliki


referensi OLD, yang berfungsi untuk menampung nilai-nilai kolom dari
baris data yang dihapus. (Raharjo, 2015)

5.3. Latihan
1. Membuat tabel mahasiswa_keluar.
a. Query
create table mahasiswa_keluar(
nim_mhs int(11) not null primary key auto_increment,
nama varchar(20) not null, id_prodi int(11) not null,
tahun year);
desc mahasiswa_keluar;
b. Output

Gambar 5. 1 hasil tabel mahasiswa_keluar

c. Penjelasan
Pada gambar 5.1 ditampilkan kueri untuk membuat tabel
mahasiswa_keluar. Kolom yang ditambahkan adalah nim_mhs
yang bertipe data integer dengan panjang data 11 dan merupakan
kunci utama tabel mahasiswa_keluar. Yang kedua adalah, nama
bertipe data varchar dengan panjang data 20, selanjutnya adalah
id_prodi dengan tipe data integer dengan panjang data 11 dan
terakhir adalah tahun.
2. Menggunakan database universitas, membuat trigger ketika data
dimasukan ke dalam tabel mahasiswa, dengan kolom ip yang
dikosongi maka nilai dalam kolom ip adalah 0.
104

a. Query
a) Membuat trigger ‘add_ip’
DELIMITER //
CREATE TRIGGER add_ip BEFORE INSERT ON mahasiswa FOR
EACH ROW
BEGIN
If New.ip IS NULL THEN SET New.ip=0;
END IF;
END //
DELIMITER ;
b) Menambahkan data ke dalam tabel mahasiswa dengan
mengabaikan kolom ip.
insert into mahasiswa(nim, nama, id_prodi) values
(31, 'jalal','1');
select * from mahasiswa where nama='jalal';
b. Output
a) Kueri pembuatan Trigger

Gambar 5. 2 data tabel mahasiswa

b) Data dari tabel mahasiswa sesudah diisi

Gambar 5. 3 data tabel mahasiswa sesudah diisi


105

c. Penjelasan
Selanjutnya, pada gambar 5.2 ditampilkan kueri untuk
membuat trigger add_ip. Kueri yang digunakan adalah before
insert yang berarti data pada tabel utama, bila di tambahkan data
Pada gambar 5.3 ditampilkan kueri untuk menambahkan data
pada tabel mahasiswa menggunakan kueri insert into. Dan
menampilkannya dengan kueri select.
3. Membuat trigger, untuk menampung data mahasiswa yang keluar
karena pindah kampus, dan drop out.
a. Query
a) Membuat trigger hapus_mhs
DELIMITER //
CREATE TRIGGER HAPUS_MHS BEFORE DELETE ON mahasiswa
FOR EACH ROW
BEGIN
INSERT INTO
MAHASISWA_KELUAR(NIM_MHS,NAMA,ID_PRODI,TAHUN)
VALUES
(OLD.NIM,OLD.NAMA,OLD.ID_PRODI,YEAR(CURDATE()));
END //
DELIMITER ;
b) Menghapus salah satu data dari tabel mahasiswa
delimiter //
CREATE TRIGGER hapus_mhs BEFORE DELETE ON mahasiswa
FOR EACH ROW
BEGIN
INSERT INTO
mahasiswa_keluar(nim_mhs,nama,id_prodi,tahun)
VALUES
(OLD.id_mhs,OLD.nama,OLD.id_prodi,year(curdate()));
END //
DELIMITER ;
insert into mahasiswa(nim, nama, id_prodi) values
(31, 'jalal','1');
select * from mahasiswa where nama='ani';
b. Output
106

a) Pembuatan Trigger

Gambar 5. 4 Pembuatan Trigger hapus_mhs

b) Data tabel mahasiswa sebelum dihapus

Gambar 5. 5 tabel mahasiswa

c) Data dari tabel mahasiswa_keluar

Gambar 5. 6 Tabel mahasiswa_keluar

c. Penjelasan
Pada gambar 5.4 ditampilkan kueri untuk pembuatan
trigger dengan kondisi before delete yang berarti pada tabel
mahasiswa keluar, akan terisi oleh data apa bila pada tabel
mahasiswa terjadi aktivitas penghapusan data.
Pada gambar 5.5 ditampilkan data tabel mahsiswa sebelum
terjadi penhapusan data. Selanjutnya, pada gambar 5.6 ditampilkan
kueri untuk penhapusan data/delete. Kemudian ditampilkan data
dalam tabel mahasiswa_keluar yang merupakan data yang telah
terhapus pada tabel mahsiswa.
107

5.4. Tugas
1. Menggunakan database universitas. Membuat trigger dengan
ketentuan setiap dimasukan data mahasiswa baru, kolom
jumlah_mahasiswa pada tabel prodi dan fakultas terbarui.
a. Query
a) Membuat trigger updatemhs
DELIMITER //
CREATE TRIGGER updatemhs after INSERT ON mahasiswa FOR
EACH ROW
BEGIN
update prodi
set prodi.jumlah_mahasiswa = prodi.jumlah_mahasiswa +1
where new.id_prodi=prodi.id_prodi;
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER updatemhs2 after INSERT ON mahasiswa
FOR EACH ROW
BEGIN
update fakultas
set fakultas.jumlah_mahasiswa =
fakultas.jumlah_mahasiswa +1
where fakultas.id_fakultas = (SELECT prodi.id_fakultas
FROM prodi WHERE new.id_prodi=prodi.id_prodi);
END //
DELIMITER ;
b) Input data
insert into mahasiswa values (‘3’,’cindi,’,’3,3’,’2’);
108

b. Output
a) Tabel prodi sebelum diperbaharui

Gambar 5. 7 Menampilkan data tabel prodi sebelum diperbaharui

b) Tabel fakultas sebelum diperbaharui

Gambar 5. 8 Menampilkan data tabel fakultas sebelum diperbaharui

c) Tabel prodi sesudah diperbaharui

Gambar 5. 9 Menampilkan data tabel prodi sesudah diperbaharui

d) Tabel fakultas sesudah diperbaharui

Gambar 5. 10 Menampilkan data tabel fakultas sesudah diperbaharui

c. Penjelasan
Pada output tugas 1 ini, dipaparkan tentang pembuatan
trigger. Dengan nama updatemhs dengan kondisi after insert.
Dengan statement, apabila pada tabel mahasiswa terjadi aktivitas
peng-input-an data, maka pada tabel prodi dan fakultas di kolom
109

jumlah mahasiswa akan tertambah. Pada gambar 5. 7 hingga 5.10


adalah daftar data tabel dengan kondisi sebelum dan sesudah peng-
input-an data.
2. Menggunakan database universitas. Membuat trigger dengan
ketentuan Prosesi wisuda mahasiswa tersebut datanya akan terhapus
dari tabel mahasiswa dan masuk ke tabel alumni.
a. Query
a) Membuat trigger jadialumni
DELIMITER //
CREATE TRIGGER jadialumni before delete ON mahasiswa
FOR EACH ROW
BEGIN
INSERT INTO alumni(id_alumni,NAMA,ID_PRODI) VALUES
(OLD.id_mhs,OLD.NAMA,OLD.ID_PRODI);
END //
DELIMITER ;
b) Hapus data mahasiswa
delete from mahasiswa where nama='taufan';
b. Output
a) Data Tabel mahasiswa

Gambar 5. 11 Kueri untuk menampilkan data mahasiswa


110

b) Data Tabel Alumni

Gambar 5. 12 Kueri untuk menampilkan aumni.

c. Penjelasan
Pada output tugas 2 ini, dipaparkan kueri untuk pembuatan
trigger yang berkondisi after delete, yang berarti jika terjadi
peghapusan data pada tabel mahasiswa maka data yang dihapus
akan berpindah ke tabel alumni. Dibutikan pada gambar 5.11 yang
merupakan gambar sebelum update. Dilanjutkan pada gambar
5.12, yang terjadi perubahan pada perpindahan data ‘taufan’.
3. Sebuah toko laptop, baru saja memulai usahanya. Sang pemilik toko
mengingikan setiap data stock laptop dan data penjualan laptop
tersimpan pada database. Setiap laptop memiliki data berupa nomer
seri, merk, tipe, dan harga. Jika terjadi pembelian laptop maka data
laptop tersebut akan terhapus dati stock laptop dan akan masuk ke data
penjualan laptop. Setiap proses penjulan akan menyimpan tanggal
pembelian.
a. Query
a) Membuat trigger ‘terjual’
DELIMITER //
CREATE TRIGGER terjual before delete ON stok FOR EACH
ROW
BEGIN
INSERT INTO penjualan_laptop(nomor_seri, merk, tipe,
harga, tgl_pembelian) VALUES
111

(OLD.nomor_seri,OLD.merk,OLD.tipe, old.harga,
curdate());
END //
DELIMITER ;
b) Hapus data
delete from stok where tipe = 'PAVILION HP876';
b. Output
a) Tabel stok

Gambar 5. 13 Kueri untuk menampilkan data stok

b) Tabel penjualan_laptop

Gambar 5. 14 Kueri untuk menampilkan penjulan_laptop

c. Penjelasan
Pada output tugas 3, dipaparkan tentang pembuatan trigger
penjualan yang berarti, jika terjadi aktivitas penghapusan data pada
tabel stok, maka data terhapus akan berpindah pada tabel
penjulan_laptop / dapat diartikan telah terjual. Sebagai buktinya
adalah, adanya perubahan data pada gambar 5.13 dan 5.14.
4. Setiap departemen IT pada perusahaan memiliki aset berupa laptop
(misal saat ini memilki 3 laptop). Laptop tersebut diserahkan kepada
pengguna untuk digunakan dan dipertangung jawabkan oleh pengguna
tersebut. Jika pengguna tersebut keluar maka laptop tersebut akan
112

diserahkan ke pengguna lain yang membutuhkan. Suatu ketika manajer


IT ingin mengetahui riwayat siapa saja yang telah menggunakan laptop
tersebut. Dengan menggunakan trigger, pecahkan kasus tersebut
dengan menggunakan trigger !.
a. Query
a) Membuat trigger gantiuser
DELIMITER //
CREATE TRIGGER gantiuser BEFORE update ON aset FOR
EACH ROW
BEGIN
INSERT INTO catatan(kode_aset, nama_barang, merk,
seri, pemilik, waktu_kepemilikan)
VALUES (old.kode_aset, old.nama_barang, old.merk,
old.seri, old.pemilik, curdate());
END //
DELIMITER ;

b) Update tabel aset


update aset set aset.pemilik="bakugo" where
pemilik="deku";
b. Output
a) Tabel catatan sebelum update

Gambar 5. 15 Kueri untuk menampilkan data catatan sebelum update

b) Tabel catatan sesudah update

Gambar 5. 16 Kueri untuk menampilkan data catatan sebelum update

c. Penjelasan
113

Pada output tugas 4 ini, telah dipaparkan kueri untuk membuat trigger
dengan nama gantiuser. Kondisi yang digunakan adalah after
update atau dapat diartikan bila pada tabel aset terjadi perubahan
data, maka data akan berpindahke tabel catatan. Sebagai bukti
adalah berubahnya data pada tabel 5.16 dan 5.15
5. Sebuah perusahaan sedang melakukan rekrutmen karyawan. Setiap
karyawan yang diterima, datanya akan disimpan pada sebuah sistem
dan seketika sistem akan mengurangi stok seragam yang dimiliki oleh
perusahaan tersebut, sehingga stok seragam dapat diketahui bila ada
karyawan baru yang diterima perusahaan. Pecahkan kasus tersebut
dengan menggunakan trigger !
Jawab :
a. Query
a) Membuat trigger karyawan baru
DELIMITER //
CREATE TRIGGER karyawanbaru after INSERT ON karyawan
FOR EACH ROW
BEGIN
update stok_barang
set stok_barang.stok_barang = stok_barang.stok_barang
-1
where stok_barang.nama_barang='seragam';
END //
DELIMITER ;
b) Input pada tabel karyawan
insert into karyawan values ("mineta", 20);
b. Output
a) Tabel stok barang sebelum input karyawan
114

Gambar 5. 17 Kueri untuk menampilkan stok barang

b) Tabel stok barang

Gambar 5. 18 Kueri untuk menampilkan stok barang setelah insert

c. Penjelasan
Pada output tugas bab 5, telah dipaparkan kueri untuk
membuat trigger dengan kondisi after insert atau dapat
diartikan jika terjadi aktivitas peng-input-an data pada tabel
karyawan, maka data tersebut juga masuk dalam daftar stok barang
yang akan mengurang bila terdapat data input-an baru. Sebagai
bukti adalah pada gambar 5.18 dan 5.19 yang terjadi perubahan
data setelah peng-input-an data.

5.5. Kesimpulan
Berdasarkan praktikum bab 5 ini dapat disimpulkan bahwa Trigger
adalah sebuah program yang terhubung dengan tabel secara sistematis.
Apabila satu tabel melakukan suatu aktivitas yang sama dengan kondisi
trigger maka tabel yang lain juga dapat ikut ter-update dengan data yang
sama. Kondisi yang dapat ditambahkan adalah before dan after yang
115

berarti tabel akan terupdate bila tabel utama melakukan sebelum/sesudah


kueri. Kueri yang dapat digunakan adalah insert, update dan delete.
Contohnya adalah sistem penjualan, jika dimasukkan barang baru maka
akan bertambah secara otomatis, Trigger dapat digunakan untuk
mengimplementasikan suatu sistem log. Setiap terjadi perubahan, secara
otomatis akan menyimpan ke tabel log, Trigger dapat digunakan untuk
melakukan validasi dan verifikasi data sebelum data tersebut disimpan.
Pada saat mengeksekusi perintah INSERT, kita hanya memiliki referensi
NEW, yang berfungsi untuk menampung nilai-nilai kolom dari baris data
baru yang akan dimasukkan. Pada saat mengeksekusi perintah UPDATE,
kita memiliki referensi NEW dan OLD. Referensi NEW berfungsi untuk
melakukan perubahan sedangkan OLD berfungsi untuk menampung nilai-
nilai kolom yang akan digunakan untuk melakukan perubahan sedangkan
OLD berfungsi untuk menampung nilai-nilai lama (nilai sebelum diubah)
pada semua kolom yang ada dalam tabel bersangkutan.
116

DAFTAR PUSTAKA

Connolly, T; Begg, C;. 2010. Database Systems: a practical approach to design,


implementation, and management. America : Pearson Education, 2010.
fajri, dwitha. 2017. academia. academia.edu. [Online] 27 maret 2017.
https://www.academia.edu/32068323/LAPORAN_PRAKTIKUM_5_BASIS_
DATA-RELASI_DAN_JOIN.
informatika, teknik. 2018. modul basis data 2. semarang : FTI UNISSULA,
2018.
—. 2018. modul basis data 3. semarang : FTI UNISSULA, 2018.
kristiono, privida. 2015. Pemrograman Stored Procedure. Yogyakarta : Andi,
2015.
Kuriniawan. 2007. 2007.
Nugroho, bunafit. 2005. Administrasi Database MySQL. yogyakarta : Graha
Ilmu, 2005.
Raharjo, Budi. 2015. Bandung : INFORMATIKA bandung, 2015.
Teknik Informatika. 2018. Modul. Semarang : FTI, 2018.
www.duniailkom.com. [Online] [Dikutip: 22 januari 2019.]
https://www.duniailkom.com/tutorial-belajar-mysql-pengertian-view-dan-
cara-penggunaan-view-dalam-mysql/.
117

LAMPIRAN

Anda mungkin juga menyukai