modul7_201210370311241

19
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

Upload: somness

Post on 15-Sep-2015

216 views

Category:

Documents


2 download

DESCRIPTION

modul 7

TRANSCRIPT

  • 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