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
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.
Penulis
iii
DAFTAR ISI
1.3. Latihan................................................................................................................. 2
2.3. Latihan............................................................................................................... 20
iv
2.3.2. Join ......................................................................................................... 22
2.3.3. UNION.................................................................................................... 27
3.3. Latihan............................................................................................................... 41
4.3. Latihan............................................................................................................... 85
v
5.2.1. Trigger .................................................................................................. 101
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
1.3. Latihan
1.3.1. Membuat Database Relasional
1. Membuat database Universitas2
a. Query
Create database universitas2;
3
b. Output Query
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
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
b. Output Query
c. Penjelasan
6
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
b. Output Query
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
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
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
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
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
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.
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
e. Output Query
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
b. Output Query
b. Output Query
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
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
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
e. Output Query
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
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
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.
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;
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
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
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
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
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
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
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
c. Penjelasan
a) Membuat prosedur
Pada gambar 3.13 menjelaskan tentang perintah
untuk membuat prosedur yang bernama jumlah
negara. Kueri (inout benua varchar(20))
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 >
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
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
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
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 =
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
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,
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
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
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
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.
84
85
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
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
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
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
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
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
b. Output
a) Membuat 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
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
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.
101
102
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
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
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
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
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
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
b) Tabel penjualan_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
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
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
DAFTAR PUSTAKA
LAMPIRAN