modul7_201210370311241
DESCRIPTION
modul 7TRANSCRIPT
-
Modul Desain Database Terdistribusi
PRAKTIKUM DESAIN DATABASE TERDISTRIBUSI
MODUL 7
SQL STORED PROCEDURE
Lathifah Nur Aini (201210370311241)
LABORATORIUM REKAYASA PERANGKAT LUNAK
TEKNIK INFORMATIKA FAKULTAS TEKNIK
UNIVERSITAS MUHAMMADIYAH MALANG
-
Modul Desain Database Terdistribusi
MODUL 7
SQL STORED PROCEDURE
I. Pokok Bahasan
1. Stored Procedure
2. Variable dan Parameter
3. Percabangan
4. Perulangan
5. View
6. Trigger
7. Export dan Import
II. Perlengkapan yang dibutuhkan:
1. Komputer Set (memory>=1GB, CPU>=PIV)
2. Web Sever Apache (Xampp / Wamp Server )
3. Mysql
4. Sql developer dan mysql connector java (mysql-connector-java-5.1.29.jar)
III. Dasar Teori
A. Stored Procedure
Stored procedure memungkinkan sebuah aplikasi berbasis database (SQL)
mendefinisikan dan kemudian memanggil prosedur melalui pernyataan SQL.
Stored procedure dapat digunakan untuk aplikasi terdistribusi (client server)
maupun aplikasi tidak terdistribusi. Keuntungan besar dalam menggunakan Stored
procedure pada aplikasi terdistribusi adalah dapat digunakannya satu perintah
CALL pada aplikasi untuk mengerjakan perintah yang sama. Tersimpannya Stored
procedure pada sistem database terpusat memungkinkan dilakukannya perubahan
untuk menyesuaikan dengan perubahan sistem terkini dan dapat berlaku untuk
keseluruh sistem aplikasi yang ada tanpa perlu dilakukan perubahan untuk setiap
modul aplikasi.
Stored Procedure dapat diartikan sebagai program (routines) yang tersimpan
dalam database seperti halnya data. MySQL mendukung dua jenis routines, yaitu:
Stored Procedure dan functions yang mengembalikan nilai.
Terdapat beberapa ketentuan umum yang harus diperhatikan dalam membuat
-
Modul Desain Database Terdistribusi
procedure di MySQL, diantaranya adalah :
Nama procedure bersifat tidak case sensitive, artinya procedure p1 adalah
sama dengan procedure P1;
Nama procedure adalah terbatas, dapat berupa spasi dengan panjang
maksimum adalah 64 karakter dan tidak diperkenankan menggunakan nama
yang ada pada fungsi built-in MySQL;
MySQL tidak memperkenankan terjadinya overloading, kondisi dimana
terdapat dua procedure dengan nama yang sama dalam satu database.
Contoh penggunaan Stored Procedure :
Untuk menjalankan procedure dengan melakukan CALL
-
Modul Desain Database Terdistribusi
Dari perintah diatas tampak bahwa struktur pembentuk Stored Procedure di
MySQL terdiri dari :
SQL statement untuk membuat procedure : CREATE PROCEDURE;
Nama procedure : p1;
Parameter list, ditandai dengan (), diperlukan untuk procedure yang
membutuhkan parameter;
SQL statement, yang merupakan isi procedure, pada contoh diatas adalah
perintah SELECT * FROM employees;.
SQL statement yang dapat digunakan pada bagian isi procedure meliputi :
INSERT, UPDATE, DELETE, SELECT, DROP, CREATE, REPLACE, SET,
COMMIT, ROLLBACK.
B. Variable dan Parameter
Parameter pada procedure dibedakan menjadi 3 jenis, yaitu :
Parameter input, yaitu hanya bisa digunakan sebagai input masukan
fungsi/prosedur saja.
Parameter output, yaitu hanya bisa digunakan sebagai output fungsi/prosedur
saja.
Parameter input/output, yaitu bisa digunakan 2 sekaligus, yaitu sebagai input
dan output.
Sedangkan penggunaan parameter pada procedure di MySQL dapat dibedakan
sebagai berikut:
1. CREATE PROCEDURE p1 ()
Procedure tanpa parameter. Sebagaimana contoh procedure p1.
2. CREATE PROCEDURE p2 ([IN] name data-type)
-
Modul Desain Database Terdistribusi
Procedure p2 membuat sebuah variable x yang berisi nilai sesuai dengan nilai
yang ada pada parameter p.
3. CREATE PROCEDURE p3 (OUT name data-type)
Procedure p3 membuat sebuah variable yang bernilai minus 5, saat procedure
dijalankan perintah OUT meminta DBMS untuk mengeluarkan nilai yang ada
pada procedure dan disimpan pada variable @y.
4. CREATE PROCEDURE p4 (INOUT name data-type)
Procedure p4 menginisialisasi variable a dan b yang akan menghasilkan nilai
saat procedure dipanggil berupa hasil penjumlahan variable a dan variable b.
C. Percabangan
Percabangan merupakan suatu alur program berdasarkan kondisi yang menjadi
patokan. Ada 2 Percabangan yang akan kita bahas yaitu IF ELSE dan CASE.
1. IF-ELSE
Pada percabangan yang didasarkan pada nilai Boolean hasil sebuah ekspresi
harus bernilai true agar dapat menjalankan suatu statement atau blok program
yang ada dapat menggunakan IF saja. Apabila terdapat statement lain yang
akan dijalankan apabila nilai Boolean tidak memenuhi maka dapat
menggunakan IF-ELSE.
-
Modul Desain Database Terdistribusi
Contoh penggunaan :
Panggil procedure p5
Hasil pemanggilan procedure p5
Nilai var1 akan ditampilkan jika nilai parameter adalah 0, selain 0 maka var1
tidak ditampilkan dan akan menampilkan par1 + 1.
2. CASE
Hampir sama dengan IF, CASE digunakan juga untuk menyatakan
pengkondisian tapi dengan format yang berbeda.
Contoh penggunaan :
Panggil procedure p6
-
Modul Desain Database Terdistribusi
Hasil pemanggilan procedure p6
Procedure p6 akan menghasilkan nilai parameter + 1 untuk data masukan 0
atau 1 dan akan menghasilkan nilai parameter + 99 untuk nilai parameter
selain 0 dan 1. Case dapat digunakan untuk menggantikan pengkondisian IF
terutama untuk pilihan kondisi dalam jumlah lebih dari dua kondisi.
D. Perulangan
Perulangan adalah melakukan pengulangan suatu blok procedure berdasarkan
kondisi yang ditentukan sampai tercapai kondisi untuk menghentikannya
(terminasi). Setiap perulangan memiliki empat bagian yaitu : Inisialisasi, proses,
iterasi, terminasi.
Inisialisasi untuk menyiapkan keadaan awal perulangan. Proses adalah pernyataan
yang akan diulangi. Iterasi adalah bagian yang dijalankan setelah proses, tetapi
sebelum proses tersebut. diulangi. Terminasi adalah pernyataan Boolean yang
diperiksa setiap kali selama perulangan untuk melihat apakah sebuah iterasi sudah
saatnya akan dihentikan. Terdapat tiga standar perulangan dalam Stored Procedure
MySQL, yaitu : while endwhile, repeat end repeat, dan loop end loop.
1. WHILE ENDWHILE
Contoh penggunaan :
-
Modul Desain Database Terdistribusi
Pada procedure diatas variable v didefinisikan dan diinisialisasi dengan nilai 0
selanjutnya di lakukan iterasi hingga kondisi variable kurang dari 3 tercapai.
2. REPEAT ENDREPEAT
Contoh penggunaan :
-
Modul Desain Database Terdistribusi
Hasil pemanggilan procedure p8 adalah sama dengan procedure p7, iterasi
dilakukan hingga kondisi variable v mencapai nilai lebih atau sama dengan 3,
jika kondisi tercapai maka proses akan diakhiri. Yang harus dicermati dalam
penggunaan perintah repeat end repeat adalah pada baris pernyataan
UNTIL yang tidak menggunakan tanda semicolon (;) sebagai tanda akhir
sebuah baris pernyataan.
3. LOOP ENDLOOP
Contoh penggunaan :
Perulangan dengan menggunakan loop end loop mensyaratkan penggunaan
kondisi IF untuk proses terminasi dan pernyataan LEAVE untuk menyatakan
keluar dari proses perulangan. Terdapat pula perintah ITERATE yang
berfungsi untuk melakukan perulangan (iterasi) yang berarti proses loop akan
diulang kembali.
-
Modul Desain Database Terdistribusi
E. View
View adalah tabel logika berbasis pada tabel atau view lain. View tidak memiliki
data, tetapi hanya merupakan jendela terhadap data pada tabel. Kemudian Tabel
yang merupakan basis dari view disebut based tabel. Kita dapat mengartikan view
sebagai query yang disimpan di database.
Keuntungan view antara lain:
Membatasi akses ke basis data karena view dapat menampilkan porsi tertentu
basis data.
Mengijinkan pengguna menciptakan query sederhana untuk menampilkan
hasil dari suatu query yang rumit. Sebagai contoh, view memungkinkan
pengguna untuk mendapatkan informasi dari beberapa tabel tanpa harus
mengetahui perintah join.
Menyediakan kemandirian data bagi pengguna dan program aplikasi. Sebuah
view dapat digunakan untuk menampilkan data dari beberapa tabel.
Menampilkan data dalam perspektif yang berbeda.
Penulisan Syntax pada view :
CREATE
[OR REPLACE]
[ALGORITHM = {UNDEFINED | MERGE | TEMPTABEL}]
[DEFINER = { user | CURRENT_USER }]
[SQL SECURITY { DEFINER | INVOKER }]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
Contoh penggunaan :
-
Modul Desain Database Terdistribusi
View diatas bernama view_emp yang merupakan hasil dari query select dari
tabel employees yang terdiri dari field employeeNumber, lastName, dan firstName
dan juga berisi data yang memiliki officeCode = 1
F. Trigger
Trigger adalah sebuah blok PL/SQL yang disimpan dalam database yang secara
otomatis akan teraktivasi ketika terjadi suatu operasi pada sebuah tabel, view,
schema, atau database.
Trigger dibagi menjadi 2 jenis, yaitu :
Application Trigger
Yang dimana tigger tersebut akan teraktivasi ketika terjadi suatu event pada
sebuah aplikasi tertentu.
Database Trigger
Yang dimana trigger tersebut akan teraktivasi ketika terjadi suatu data
event(operasi DML(INSERT, UPDATE, DELETE)) atau system event (logon
or shutdowm) pada sebuah schema atau database.
Sedangkan Trigger memiliki 2 timing, yaitu :
BEFORE : trigger akan teraktivasi sebelum terjadinya proses DML pada tabel.
AFTER : trigger akan teraktivasi setelah terjadinya proses DML pada tabel.
Penulisan syntax pada trigger :
CREATE
[DEFINER = { user | CURRENT_USER }]
TRIGGER trigger_name
trigger_time trigger_event
ON tbl_name FOR EACH ROW
trigger_body
trigger_time: { BEFORE | AFTER }
trigger_event: { INSERT | UPDATE | DELETE }
Contoh Penggunaan :
Create tabel log terlebih dahulu dengan field sebagai berikut :
Buat Trigger
-
Modul Desain Database Terdistribusi
Trigger diatas akan dijalankan setelah proses insert ke tabel mahasiswa. Setiap kali
insert data maka akan dilakukan insert data ke tabel log dengan value di field ket
insert data to mahasiswa.
Insert data ke tabel mahasiswa
Hasil trigger di tabel log
G. Export dan Import
Export database adalah langkah untuk menghasilkan suatu file baru yang
menyimpan informasi database. Sendangkan Import adalah langkah untuk agar
me-restore/mengembalikan informasi yang telah di export sebelumnya ke database
awal atau database yang baru.
Ada 2 cara untuk melakukan export ataupun import data dari atau ke database,
yaitu :
1. phpmyadmin
a. export
- Untuk melakukan export database, pertama buka phpmyadmin.
- Kemudian pilih database yang akan di export, setelah itu pilih menu
export.
- Kemudian pilih quick export method, dengan format SQL kemudian
pilih GO
-
Modul Desain Database Terdistribusi
- Hasil dari export database
b. import
- Untuk melakukan import, buka phpmyadmin terlebih dahulu.
- Kemudian pilih menu import, kemudian akan muncul halaman import
dan klik choose file dan pilih file yang mau di import dengan format
SQL, dan klik GO
- Hasil import database yang sukses.
2. command line.
a. export
-
Modul Desain Database Terdistribusi
Pertama masuk dulu ke lokasi mysql, kemudian lakukan export dengan cara
mengetikkan mysqldump u [username] p [nama database] > [nama file
yang akan diexport].
database.
b. import
adalah hasil apabila sukses setelah melakukan export
Pertama masuk ke lokasi mysql, kemudian lakukan lakukan export dengan
cara mengetikkan mysql [username] p [nama database] < [nama file
yang akan diimport]. Apabila tidak terdapat error maka sudah berhasil
melakukan import. Sebelum melakukan import jangan lupa membuat
database terlebih dahulu.
IV. Tugas Praktikum
Buatlah tabel berikut untuk mengerjakan tugas praktikum di bawah ini. Sebelum
mengerjakan tugas, isi dulu data dari setiap tabel minimal 5 record (catatan :
pembuatan tabel dan pengisian record masuk kedalam penilaian jadi wajib
dikerjakan).
Tabel mahasiswa
Nama Field Type Keterangan
nim Varchar(15) Primary Key
nama Varchar(50)
alamat Text
jenis_kelamin Int 0 untuk laki-laki
1 untuk perempuan
tempat_lahir Varchar(25)
tanggal_lahir Date
jurusan Int Foreign key mengarah
-
Modul Desain Database Terdistribusi
ke id_jurusan di tabel
jurusan
Tabel Jurusan
Nama Field Type Keterangan
id_jurusan Int
nama_jurusan Varchar(50)
fakultas Int Foreign key mengarah ke
id_fakultas di tabel
fakultas
Tabel Fakultas
Nama Field Type Keterangan
id_fakultas Int
nama_fakultas Varchar(50)
Soal Praktikum
1. Buatlah procedure yang dapat melakukan insert, update, dan delete data di table
mahasiswa dan harus memiliki salah satu control flow disetiap procedurnya.
(dapat menggunakan if-else, case, while, repeat atau loop).
2. Buatlah trigger yang melakukan penyimpanan aktivitas apa saja yang dilakukan
oleh user (misal insert, update, dan delete untuk setiap tabel). Buatlah tabel log
user terlebih dahulu dengan field keterangan dan waktu. Keterangan berisi
aktivitas yang dilakukan user dan waktu berisi kapan aktivitas tersebut dilakukan.
3. Buatlah view yang dapat menampilkan data mahasiswa (semua field di table
mahasiswa) beserta jurusan dan fakultas masing-masing anak.
4. Buatlah view yang dapat menampilkan data mahasiswa dengan jurusan dan
fakultas tertentu. (fakultas atau jurusan ditentukan oleh user)
-
Modul Desain Database Terdistribusi Praktikum
Tabel mahasiswa
Tabel jurusan
Tabel fakultas
1. Create procedure dengan case
-
Modul Desain Database Terdistribusi Call procedure
-
Modul Desain Database Terdistribusi 2. Create table logmhs
Create trigger
View table logmhs after insert, update, delete
3. Create view
-
Modul Desain Database Terdistribusi View view1
4. Create view
View view2
Kesimpulan
Pada modul 7 ini kita mempelajari tentang stored procedure yaitu stored procedure
memungkinkan sebuah aplikasi berbasis database (SQL) mendefinisikan dan
kemudian memanggil prosedur melalui pernyataan SQL. Di dalam procedure
kita mempelajari bagian-bagiannya antara lain variabel dan parameter.
Selain membuat procedure dalam modul ini kita mempelajari mengenai trigger
dan view