P. 1
Materi Stored Procedure Dan Function

Materi Stored Procedure Dan Function

|Views: 1,687|Likes:
Dipublikasikan oleh Pak Joyo

More info:

Published by: Pak Joyo on Apr 13, 2012
Hak Cipta:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOCX, PDF, TXT or read online from Scribd
See more
See less

05/28/2013

pdf

text

original

Materi Stored Procedure dan Function 21OCT File anda bisa download di sini Share on Facebook

     

StumbleUpon Digg Reddit

COMMENTSLeave a Comment CATEGORIESTutorial MySQL Manajemen Transaksi 14DEC Manajemen Transaksi Pengubahan, penambahan, penghapusan suatu tabel biasanya berdampak pada isi tabel satu dengan lainnya. Jika perubahan tabel satu dengan lainnya yang terkait, terjadi kagagalan, maka terjadi ketidakkonsistenan integrasi antar tabel. MySQL mendukung manajemen transaksi dengan syarat pada saat menciptakan tabel menggunakan mesin penyimpanan InnoDB. Pertama, yang kita bahas konsep dari level isolasi dan sesi Level Isolasi Sebelum kita berbicara transaksi dan level kelompok, kita perlu untuk jelaskan konsep dari suatu sesi. Suatu sesi database adalah suatu koneksi yang unik database yang memulai ketika anda login ke MySQL dan mengakhiri koneksi, dengan tegas ketika MySQL menberikan pesa bahwa program klien yang anda pakai terputus Tingkat isolasi suatu transaksi juga menentukan derajat tingkat bagi yang transaksi menenpati ACID yang akan uraikan dibagian ini. Masing-Masing dari empat tingkatan isolasi menghadirkan suatu keseimbangan yang berbeda antar isolasi dan concurrency dari transaksi. Di level isolasi yang paling tinggi, seluruh transaksi akan mampu melaksanakan secara bersamaan,. READ UNCOMMITTED Ini adalah tingkatan isolasi yang mungkin paling rendah. Kadang-kadang memanggil dirty read, tingkatan ini mengijinkan suatu transaksi membabaca rekaman yang belum di commit. Penggunaan tingkatan isolasi ini mungkin meningkatkan keberhasilan hanya satu pemakai yang mendapat kembali data yang diubah oleh pemakai lain..

READ COMMITTED Pada tingkatan isolasi ini, rekaman hanya dapat dilihat oleh suatu transaksi. Lagi pula, statemen hingga batas tertentu perubahan apapun yang dilakukan memulai eksekusi tidak bisa dilihat. Sebagai contoh, jika anda menjalankan perintah SELECT Suatu yang query dari tabel BUKU, dan sesi B memasukkan suatu baris ke dalam BUKU sedangkan suatu query masih menjalankan, baris yang baru itu tidak akan terlihat oleh perintah SELECT REPEATABLE READ Pada level isolasi ini tidak ada perubahan bagi database yang dibuat oleh lain sesi karena transaksi dapat dimulai dilihat di dalam transaksi, sampai transaksi dilakukan atau loop mundur atau ROLLBACK (pembatalan) jika Anda menjalankan ulang SELECT di dalam transaksi , akan selalu menunjukkan yang sama menghasilkan. SERIALIZABLE Pada tingkat isolasi, tiap-tiap transaksi dengan sepenuhnya terisolasi sedemikian rupa sehingga transaksi bertindak seolah-olah mereka telah mengeksekusi berturutan, satu demi satu; berturut-turut. Dalam rangka mencapai ini, RDBMS akan secara khusus mengunci tiaptiap baris yang dibaca, maka lain sesi tidak boleh memodifikasi data itu sampai transaksi telah selesai dengan itu. Kunci dilepaskan ketika Anda melakukan atau batalkan transaksi Bentuk Umum perintah tansakasi : SET TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED |REPEATABLE READ | SERIALIZABLE} Perintah Manajemen Transaction MySQL menggunakan yang berikut statemen manajemen transaksi : START TRANSACTION Marupakan awal dari blok perintah untuk melakukan transakasi COMMIT Melakukan perubahan atau secara fisik pada tebal ROLLBACK Perintah ini jika dijalankan suatu perubahan secara keseluruhan dalam blok transakasi dibatalakn. SAVEPOINT savepoint_name Menciptakan suatu savepoint yang dinamai identifier bahwa dapat target dari suatu ROLLBACK KE SAVEPOINT statemen. ROLLBACK TO SAVEPOINT savepoint_name Melaksanakan suatu rollback semua statemen yang telah dieksekusi sejak ditetapkan savepoint telah diciptakan. Dengan cara ini, kamu dapat mengulang mundur hanya bagian dari suatu transaksi, memelihara beberapa subset dari perubahan untuk tetap diselamatkan. SET TRANSACTION Ijinkan kamu untuk memilih level pengasingan terhadap transaksi. Secara detail terdapat pada bagian Level isolasi. LOCK TABLES Dengan tegas mengunci satu atau lebih tabel. Dicatat bahwa LOCK TABLES secara implisit

menutup manapun transaksi yang sekarang ini terbuka. Kita merekomendasikan bahwa kamu dengan tegas melakukan atau loop ulang transaksi sebelum LOACK TABLES statemen apapun.. Contoh Transakasi Menggunakan SET AUTOCOMMIT dalam Procedure CREATE PROCEDURE tfer_funds (from_account int, to_account int,tfer_amount numeric(10,2)) BEGIN SET autocommit=0; UPDATE account_balance SET balance=balance-tfer_amount WHERE account_id=from_account; UPDATE account_balance SET balance=balance+tfer_amount WHERE account_id=to_account; COMMIT; END; Transaksi menggunakan START TRANSACTION, dalam Procedure CREATE PROCEDURE tfer_funds (from_account int, to_account int,tfer_amount numeric(10,2)) BEGIN START TRANSACTION; UPDATE account_balance SET balance=balance-tfer_amount WHERE account_id=from_account; UPDATE account_balance SET balance=balance+tfer_amount WHERE account_id=to_account; COMMIT; END; Seperti kita ketahui transaksi secara normal melengkapi, menjalankan perintah COMMIT maupun ROLLBACK statemen dieksekusi. Bagaimanapun, kita sadar bahwa beberapa statemen Data Definition Language ( DDL) mencari perintah menyebabkan COMMIT. Statemen yang secara implisit dilakukan, dan oleh karena itu dihindarkan ketika suatu transaksi barjalan, jika sedang menjalankan perintah berikut : ALTER FUNCTION ALTER PROCEDURE

00 sec) – Penambahan rekama tabel mhs mysql> INSERT INTO mhs VALUES(‘0005′. nama char(25) DEFAULT NULL.‘Untung Raharja‘. CREATE TABLE `jurusan` ( `no_mhs` char(4) DEFAULT NULL.'Bandung‘). `kode` char(2) DEFAULT NULL ) ENGINE=InnoDB.ALTER TABLE BEGIN CREATE DATABASE CREATE FUNCTION CREATE INDEX CREATE PROCEDURE CREATE TABLE DROP DATABASE DROP FUNCTION DROP INDEX DROP PROCEDURE DROP TABLE UNLOCK TABLES LOAD MASTER DATA LOCK TABLES RENAME TABLE TRUNCATE TABLE SET AUTOCOMMIT=1 START TRANSACTION PRAKTIK CREATE TABLE mhs ( no_mhs char(4) DEFAULT NULL. Query OK. alamat char(25) DEFAULT NULL ) ENGINE=InnoDB. 1 row affected (0.00 sec) . satu rekaman – Jalankan perintah transakasi mysql> START TRANSACTION. 0 rows affected (0. Transaksi penambahan reakaman menggunakan START TRANSACTION dan ROLLBACK. Query OK.

+——–+—————+———+ | no_mhs | nama | alamat | +——–+—————-+———+ | 0001 | Agus | Solo | | 0002 | Budi | jogja | | 0003 | Bejo | Bantul | | 0004 | Ani | jogja | | 0005 | Untung Raharja | Bandung | +——–+—————-+———+ 5 rows in set (0. mysql> select * from mhs. +——–+——+——–+ | no_mhs | nama | alamat | +——–+——+——–+ | 0001 | Agus | Solo | | 0002 | Budi | jogja | | 0003 | Bejo | Bantul | | 0004 | Ani | jogja | +——–+——+——–+ 4 rows in set (0. mysql> ROLLBACK.00 sec) – penjalesan – Mahasiswa untuk sumentara sudah direkam – Mambatalkan rekaman dengan perintah ROLLBACK.05 sec) mysql> select * from mhs.00 sec) – Cek kembali mahasiswa bernama Untung tidak jadi direkam Mari kita coba lagi penambahan lebih dari 1 rekamanan dengan blok transakasi Penambahan rekaman dengan START TRANSACTION dan ROLLBACK dua rekaman mysql> START TRANSACTION. mysql> INSERT INTO mhs VALUES(‘0006′. Query OK.‘Diah Ayu Subekti‘.'Semarang‘). +——–+——————+———-+ | no_mhs | nama | alamat | . 0 rows affected (0. mysql> INSERT INTO mhs VALUES(‘0005′.‘Untung Raharja‘.'Bandung‘).– Lihat hasil penambahan mysql> select * from mhs.

Query OK. +——–+——+——–+ | no_mhs | nama | alamat | +——–+——+——–+ | 0001 | Agus | Solo | | 0002 | Budi | jogja | | 0003 | Bejo | Bantul | | 0004 | Ani | jogja | +——–+——+——–+ 4 rows in set (0.‘Untung Raharja‘.‘Diah Ayu Subekti‘.00 sec) mysql> Penjelasan : Telah ditambahkan 2 rekaman | 0005 | Untung Raharja | Bandung | | 0006 | Diah Ayu Subekti | Semarang | Kemudian pada saat menjalan perintah ROLLBACK 2 Rekaman tersebut dibatalkankan semua Penambahan rekaman dengan START TRANSACTION dan COMMIT dua rekaman atau lebih Perintah COMMIT. lihat contoh berikut : mysql> START TRANSACTION. 0 rows affected (0.'Bandung‘). mysql> INSERT INTO mhs VALUES(‘0005′.'Semarang‘) mysql> COMMIT.05 sec) // lihat hasilnya mysql> select * from mhs.00 sec) mysql> ROLLBACK. 0 rows affected (0.06 sec) . Query OK. mysql> INSERT INTO mhs VALUES(‘0006′.+——–+——————+———-+ | 0001 | Agus | Solo | | 0002 | Budi | jogja | | 0003 | Bejo | Bantul | | 0004 | Ani | jogja | | 0005 | Untung Raharja | Bandung | | 0006 | Diah Ayu Subekti | Semarang | +——–+——————+———-+ 6 rows in set (0.

00 sec) Penjelasan : START TRANSACTION.alamat=‘Pati‘ WHERE no_mhs=‘000 – lihat perubhan Agus namanya di ubah Agus Nefo. mysql> select * from mhs. +——–+——————+———-+ . : blok awal melakukan perintah transakasi Perintah : ISNERT. +——–+——————+———-+ | no_mhs | nama | alamat | +——–+——————+———-+ | 0001 | Agus | Solo | | 0002 | Budi | jogja | | 0003 | Bejo | Bantul | | 0004 | Ani | jogja | | 0005 | Untung Raharja | Bandung | | 0006 | Diah Ayu Subekti | Semarang | +——–+——————+———-+ 6 rows in set (0. alamat Pati mysql> select * from mhs. DELETE COMMIT. : perintah betul-betul dilakukan secara fisik ke penyimpan Pengubahan dengan rekaman START TRANSACTION dan ROLLBACK mysql> START TRANSACTION. UPDATE. setelah dibatalkan kembali nama dan alamat semula.00 sec) – batalkan perubahan mysql> ROLLBACK.mysql> select * from mhs. mysql> UPDATE mhs SET nama=‘Agus Nefo‘. – lihat kembali hasilnya. +——–+——————+———-+ | no_mhs | nama | alamat | +——–+——————+———-+ | 0001 | Agus Nefo | Pati | | 0002 | Budi | jogja | | 0003 | Bejo | Bantul | | 0004 | Ani | jogja | | 0005 | Untung Raharja | Bandung | | 0006 | Diah Ayu Subekti | Semarang | +——–+——————+———-+ 6 rows in set (0.

mysql> select * from mhs. Transaksi Penghapusan START TRANSACTION dan ROLLBACK mysql> START TRANSACTION. mysql> DELETE FROM mhs WHERE no_mhs=‘0002′. mysql> DELETE FROM mhs WHERE no_mhs=‘0003′.00 sec) Contoh berikutnya : Pengubahan dengan START TRANSACTION dan COMMIT mysql> START TRANSACTION.| no_mhs | nama | alamat | +——–+——————+———-+ | 0001 | Agus | Solo | | 0002 | Budi | jogja | | 0003 | Bejo | Bantul | | 0004 | Ani | jogja | | 0005 | Untung Raharja | Bandung | | 0006 | Diah Ayu Subekti | Semarang | +——–+——————+———-+ 6 rows in set (0.alamat=‘Pati‘ WHERE no_mhs=‘0001′. mysql> select * from mhs.00 sec) mysql> Perintah COMMIT akan benar-benar mengubah rekaman mhs. +——–+——————+———-+ | no_mhs | nama | alamat | +——–+——————+———-+ | 0001 | Agus Nefo | Pati | | 0002 | Budi | jogja | | 0003 | Bejo | Bantul | | 0004 | Ani | jogja | | 0005 | Untung Raharja | Bandung | | 0006 | Diah Ayu Subekti | Semarang | +——–+——————+———-+ 6 rows in set (0. mysql> COMMIT. mysql> UPDATE mhs SET nama=‘Agus Nefo‘. +——–+——————+———-+ | no_mhs | nama | alamat | +——–+——————+———-+ | 0001 | Agus Nefo | Pati | .

mysql> COMMIT. mysql> DELETE FROM mhs WHERE no_mhs=‘0002′. mysql> select * from mhs.00 sec) mysql> ROLLBACK.00 sec) mysql> .| 0004 | Ani | jogja | | 0005 | Untung Raharja | Bandung | | 0006 | Diah Ayu Subekti | Semarang | +——–+——————+———-+ 4 rows in set (0. 0 rows affected (0. mysql> DELETE FROM mhs WHERE no_mhs=‘0003′. +——–+——————+———-+ | no_mhs | nama | alamat | +——–+——————+———-+ | 0001 | Agus Nefo | Pati | | 0004 | Ani | jogja | | 0005 | Untung Raharja | Bandung | | 0006 | Diah Ayu Subekti | Semarang | +——–+——————+———-+ 4 rows in set (0.06 sec) // lihat penghapusan beer-benar dilakukan mysql> select * from mhs. Query OK. +——–+——————+———-+ | no_mhs | nama | alamat | +——–+——————+———-+ | 0001 | Agus Nefo | Pati | | 0002 | Budi | jogja | | 0003 | Bejo | Bantul | | 0004 | Ani | jogja | | 0005 | Untung Raharja | Bandung | | 0006 | Diah Ayu Subekti | Semarang | +——–+——————+———-+ 6 rows in set (0.00 sec) Perintah ROLLBACK membatalkan penghapusan Melakukan penghapusan START TRANSACTION dan COMMIT mysql> START TRANSACTION.

mysql> INSERT INTO jurusan VALUES(‘0002′.'Yogyakarta‘). Transaksi ini biasanya juga berpengaruh terhadap tabel-tabel lain. Sebagai contoh : pada saat transaksi penjualan .jurusan WHERE mhs.00 sec) mysql> ROLLBACK.‘Badiyanto‘. mysql> INSERT INTO mhs VALUES(‘0002′. mysql> INSERT INTO jurusan(‘0002′.‘TI‘).no_mhs.Transaksi dari satu tabel mysql> START TRANSACTION.no_mhs=jurusan. mysql> select * from mhs.no_mhs=jurusan. +——–+———–+——–+——–+——+ | no_mhs | nama | alamat | no_mhs | kode | +——–+———–+——–+——–+——+ | 0001 | Agus Nefo | Pati | 0001 | TI | | 0004 | Ani | jogja | 0004 | KA | +——–+———–+——–+——–+——+ 2 rows in set (0.no_mhs. mysql> select * from mhs.00 sec) Share on Facebook       StumbleUpon Digg Reddit COMMENTS3 Comments CATEGORIESTutorial MySQL Trigger 14DEC Trigger Perubahan isi tabel terjadi pada saat pengguna melakukan transaksi.‘TI‘). +——–+———–+————+——–+——+ | no_mhs | nama | alamat | no_mhs | kode | +——–+———–+————+——–+——+ | 0001 | Agus Nefo | Pati | 0001 | TI | | 0004 | Ani | jogja | 0004 | KA | | 0002 | Badiyanto | Yogyakarta | 0002 | TI | +——–+———–+————+——–+——+ 3 rows in set (0.jurusan WHERE mhs.

BEFORE UPDATE on TABEL1 menjalankan proses di dalamnya pada saat sebelum melakukan operasi UPDATE di TABEL1 4. tanggal transaksi. yaitu mengurangi stok barang yang dijual. UPDATE. pilih dan klik kanan mouse ke Triggers. AFTER INSERT on TABEL menjalankan proses di dalamnya pada saat sesudah melakukan operasi INSERT di TABEL1 3. Klik pada tabel jual. Oleh karena itu anda bisa menempatkan trigger yang merupakan prosedur pemicu untuk melakukan proses sesuai dengan keinginan. dan sesudahnya mengurangi stok di tabel BARANG. DELETE) pada tabel. berisi no nota. BEFORE INSERT on TABEL1 : menjalankan proses di dalamnya pada saat sebelum melakukan operasi INSERT di TABEL1 2. terjadi penambahan rekaman pada tabel jual. AFTER DELETE on TABEL1 : menjalankan proses di dalamnya pada saat sesudah melakukan operasi DELETE di TABEL1 Contoh : sederhana Transaksi penjualan : Perhatikan gambar dibawah Gambar di atas pada saat melakukan transaksi penjualan.sistem akan menambah rekaman tabel JUAL sebelum perintah INSERT misalnya mengecek jumlah stok di tabel BARANG. Adapun jenis perubahan yang dijalankan dalam trigger adalah : 1. BEFORE DELETE on TABEL1 : menjalankan proses di dalamnya pada saat sebelum melakukan operasi DELETE di TABEL1 6. Cara menciptakan triger adalah. jumlah barang. Proses ini anda bisa menggunakan perintah-printah dalam trigger /pemicu. Trigger untuk menempatkan suatu prosedure berkaitan dengan perubahan pada isi tabel. Cara kerja trigger adalah merespon berkaitan dengan perintah DML (INSERT . Pada saat penambahan rekaman di tabel jual berpengaruh langsung dengan isi tabel barang. AFTER UPDATE on TABEL1 menjalankan proses di dalamnya pada saat sesudah melakukan operasi UPDATE di TABEL1 5. seperti gambar berikut : Klik Create Trigger Klik Create . Trigger adalah suatu objek dalam basisdata yang terdapat pada bagian tabel. kode barang.

: isi stok barang dalam tabel BARANG akan dikurangi.kd_brg. Lakukan Pengujian Lihat stok barang : mysql> SELECT * from barang. dengan field NEW. +——–+—————+ ——+——–+——-+ | kd_brg | nm_brg | stok | satuan | harga | +——–+—————+——+——–+——-+ | K0001 | Buku | 90 | Pcs | 5000 | | K0002 | Pesil 2B | 200 | Pcs | 3000 | | K0003 | Pengahpus | 100 | Pcs | 1000 | | K0004 | Kertas HVS | 200 | Rem | 30000 | | K0005 | Gunting kecil | 10 | Pcs | 6000 | +——–+—————+——+——–+——-+ 5 rows in set (0. UPDATE barang SET stok=stok-NEW.Hingga seperti kode barikut : Klik Execute All Queries Keterangan : AFTER INSERT on : pemicu akan menjalankan perintah seudah operasi INSERT pada tabel JUAL.jumlah WHERE kd_brg=NEW.jumlah (dari masukkan field jumlah pada tabel JUAL).00 sec)Lihat tabel jual : .

+——–+———-+——+——–+——-+ | kd_brg | nm_brg | stok | satuan | harga | +——–+———-+——+——–+——-+ | K0002 | Pesil 2B | 180 | Pcs | 3000 | +——–+———-+——+——–+——-+ 1 row in set (0.00 sec) Penambahan di tebel JUAL mysql> SELECT * from jual. +———+————+——–+——–+ | no_nota | tgl | kd_brg | jumlah | +———+————+——–+——–+ | 0001 | 2009-10-13 | K0001 | 2 | | 0002 | 2009-11-25 | K0001 | 8 | +———+————+——–+——–+ 2 rows in set (0.‘2009-11-25′.00 sec) Selamat mencoba RAJIN PANGKAL PANDAI Share on Facebook     o o StumbleUpon Digg Reddit COMMENTS4 Comments CATEGORIESTutorial MySQL Perhitungan Tanggal dan Waktu dengan MySQL 9NOV .01 sec)Transakasi penjualan : mysql> INSERT INTO jual VALUES(‘0003′. +———+————+——–+——–+ | no_nota | tgl | kd_brg | jumlah | +———+————+——–+——–+ | 0001 | 2009-10-13 | K0001 | 2 | | 0002 | 2009-11-25 | K0001 | 8 | | 0003 | 2009-11-25 | K0002 | 20 | +———+————+——–+——–+ 3 rows in set (0.20). maka stok 200-20=180 Lihat di stok barang.00 sec) Perhatikan barang dengan kd_brg=‘K0002‘ telah dijual 20.‘K0002′.mysql> SELECT * from jual. 1 row affected (0. Query OK. mysql> SELECT * from barang WHERE kd_brg=‘K0002′.

keterlambatan (jatuh tempo). range antara ‘1000-01-01′ sampai ‘9999-12-31′. atau menghitung jumlah hari dalam transaksi. CURRENT_DATE. CURRENT_DATE(). DAYNAME(date) date : kolom atau variabel tanggal Contoh : Date adalah untuk menyimpam tanggal system. seperti pada tabel berikut : Fungsi nama Bulan Adapun fungsi untuk menampilkan nama bulan adalah MONTHNAME(). Fungsi untuk membaca atau menampilkan tanggal sekarang pada sistem Contoh : . dengan format ‗YYYY-MM-DD‘ tahunbulan-tanggal. Pada bagian ini saya akan mencoba mabahas dan contoh penggunaan perhitungan tanggal dan waktu menggunakan MySQL. jam dan waktu. CURDATE(). kemudian akan diolah menjadi jumlah jam perbulan dsb. Kemudian jam. biasaya digunakan untuk perhitungan jam kerja karyawan. Untuk merepresentasikan nilai tanggal. MONTHNAME(date) date : kolom atau variabel tanggal Contoh: mysql> SELECT MONTHNAME(‘2009-11-03′).00 sec) Bulan ditampilkan dengan bahasa Inggris Manpilkan nama hari dalam sistem basis data untuk menampilkan nama hari menggunakan fungsi DAYNAME(). Perhitungan tanggal misalnya untuk mengetahui jumlah hari antara tanggal ke tanggal.Acap kali kita sering behubungan perhitungan tanggal dan waktu. yang melibatkan jam datang dan jam pulang. +————————-+ | MONTHNAME(‘2009-11-03′) | +————————-+ | November | +————————-+ 1 row in set (0.

+————+————————————–+ | CURDATE() | DATE_ADD(CURDATE().00 sec) Bisa juga dengan fungsi berkut : mysql> SELECT CURDATE().INTERVAL expr unit). INTERVAL 31 DAY) | +————+————————————–+ | 2009-11-07 | 2009-12-08 | +————+————————————–+ 1 row in set (0. +—————-+ | CURRENT_DATE() | +—————-+ | 2009-11-07 | +—————-+ 1 row in set (0. Untuk menghitung jatuh tanggal berapa 5 dari sekarang menggunakan fungsi berkut : ADDDATE(date. ADDDATE(expr. +————–+ | CURRENT_DATE | +————–+ | 2009-11-07 | +————–+ 1 row in set (0. +————+ | CURDATE() | +————+ | 2009-11-07 | +————+ 1 row in set (0. karena tiap bulan tidak semua bulan jumlah harinya 30.00 sec) Menambah Tanggal Misalnya kati akan mencari 45 hari dari sekarang nanti jatuh pada tanggal berapa?.days) Date : tanggal INTERVAL : perintah memberikan nilai interger ke sistem tanggal dalam hari Contoh : mysql>SELECT CURDATE(). INTERVAL 31 DAY). Tentunya untuk menhitungnya tidak sederhana. DATE_ADD(CURDATE().00 sec) Penjelasan : .mysql> SELECT CURRENT_DATE. atau sebaliknya antara tanggal satu dengan yang lainya ada berapa hari.00 sec) Atau mysql> SELECT CURRENT_DATE().

+—————————————-+ | SUBDATE(‘2009-01-02′. 31) | +—————————+ | 2008-02-02 | +—————————+ 1 row in set (0.00 sec) mysql> atau mysql> SELECT ADDDATE(‘2008-01-02′.00 sec) Penjelasan : date : tanggal sekarang/tertentu INTERVAL 31 DAY : dikurang 31 hari = 2009-12-08 Atau mysql> SELECT SUBDATE(‘2009-01-02′. +—————————————–+ | DATE_SUB(‘2009-01-02′.CURDATE() : tanggal sekarang INTERVAL 31 DAY : ditambah 31 hari = 2009-12-08 Atau bisa juga mysql> SELECT ADDDATE(‘2008-02-29′. INTERVAL 31 DAY) | +—————————————-+ | 2008-12-02 | . INTERVAL 31 DAY) | +—————————————–+ | 2008-12-02 | +—————————————–+ 1 row in set (0. SUBDATE(expr. 31).00 sec) Pengurangan data tanggal Pengurangan tanggal maksudnya adalah untuk menghitung mundur. +—————————+ | ADDDATE(‘2008-01-02′. +—————————————+ | ADDDATE(‘2008-02-29′. INTERVAL 1 DAY) | +—————————————+ | 2008-03-01 | +—————————————+ 1 row in set (0. Adapun fungsi untuk menghitungnya adalah : SUBDATE(date.days) Contoh : mysql> SELECT DATE_SUB(‘2009-01-02′. jatuh tanggal berapa misal 10 hari sebelum tanggal tertentu/sekarang. INTERVAL 31 DAY). INTERVAL 1 DAY).INTERVAL expr unit). INTERVAL 31 DAY).

+————————————————+ | DATE_FORMAT(‘2009-10-04 22:23:00′.00 sec) mysql> SELECT DAYNAME(‘2007-02-03′). ‗%W %M %Y‘). STR_TO_DATE(str. ‗%W %M %Y‘) | +————————————————+ | Sunday October 2009 | +————————————————+ 1 row in set (0. +————————————————+ | DATE_FORMAT(‘2009-10-04 22:23:00′. maka untuk mengubah format teks tersebut bisa menggunakan DATE_FORMAT Contoh: mysql> SELECT DATE_FORMAT(‘2009-10-04 22:23:00′. +———————–+ | DAYNAME(‘2007-02-03′) | +———————–+ | Saturday | +———————–+ 1 row in set (0.format) Data tanggal ketika dikenakan perintah SELECT hasilnya teks dengan format dd-mm-yyyy.+—————————————-+ 1 row in set (0.00 sec) Mengubah Format Tanggal Format tampilan tanggal di MySQL umumnya tahun-bulan-tanggal.00 sec) %W : hari dalam bahasa Inggris %M : bulan dalam bahasa Inggris %Y : tahun 4 digit Contoh berkutnya : Mengubah tampilan tanggal ke dd-mm-yyyy mysql> SELECT DATE_FORMAT(‘2009-10-04 22:23:00′. ‗%d-%m-%Y‘) | +————————————————+ | 04-10-2009 | +————————————————+ 1 row in set (0. nah biasanya kebiasaan kita tanggal formatnya adalah tanggal-bulan-tahun. ‗%d-%m-%Y‘). Untuk itu menggunakan fungsi DAYOFWEEK(date) DAYOFWEEK(date) . Nah untuk membuat tampilan ini telah tersedia fungsi STR_TO_DATE(). dalam minggu Tanggal sekarang misalnya hari ke berapa? Dalam angka dari minggu sekarang.00 sec) Mencari hari ke….

+———————+—————–+ | now() | get_hari(now()) | +———————+—————–+ | 2009-11-09 14:45:29 | Senin | +———————+—————–+ 1 row in set. lihat skrip berikut : Contoh: Untuk lebih lanjut penulisan format tanggal dan waktu seperti pada tabel berkut : Hasil pengujian mysql> SELECT now(). Sabtu) kita bisa menciptakan fungsi sendiri dengan melibatkan fungsi DAYOFWEEK().00. 1 warning (0. dengan demikian untuk menghitung jam . get_hari(now())..Misalnya untuk menampilkan hari dalam bahasa Indonesia (Minggu.00 sec) mysql> Penjelasan: get_hari(now()) : memanggil fungsi dengan parameter tanggal sekarang Contoh Kasus Menghitung Jam Kerja Pegawai Perhitungan jam kerja pegawai biasanya digunakan untuk sistem presensi.00 malam. Sebagai contoh untuk pegawai satpam misalnya untuk shift kerja yang malam biasanya datang jam 23. Selasa. dan pulang besok pagi jam 07. Rabu…. Senin. Ada permasalahan khusus jika jam datang dan jam pulang tanggalnya beda atau hari yang berbeda. misalkan fungsinya duberi nama get_hari(date).

‘2009-10-17 07:20:28′.‘Temon‘. `JAM_DTG` datetime NOT NULL COMMENT ‗Tanggal jam datang‘.‘2009-10-19 23:00:30′.1). INSERT INTO PEGAWAI VALUES(‘1004′.‘Adel Untung‘. (‘1002′. Tambahkan isi rekaman seperti tabel berkut : insert into absensi(NIP.'Staff‘).1). Alasan penggunaan filed Datetime agar supaya peritungan jumlah jam bisa dihitung menggunakan perintah SQL.1). `JAM_PLG` datetime NOT NULL COMMENT ‗Tanggal jam pulang‘.JAM_DTG.‘2009-10-19 15:00:30′.‘2009-10-18 07:30:01′.'OB‘ ). (‘1004′.‘2009-10-17 23:19:50′.shift) values (‘1001′.3). Jadi data yang tersimpan nanti berupa tanggal dan jam. Contoh: Buatlah rancangan tabel PEGAWAI seperti pada skript berkut : CREATE TABLE pegewai (NIP char(4).1).‘2009-10-18 15:22:12′. INSERT INTO PEGAWAI VALUES(‘1002′.‘2009-10-19 08:00:30′. (‘1004′. (‘1003′.1). INSERT INTO PEGAWAI VALUES(‘1005′.kerjanya jadi negatif.‘Tunggul ‗.‘2009-10-17 09:10:10′.‘2009-10-17 14:19:03′.‘Satpan‘). nama char(30).‘2009-10-19 15:00:30′.‘Tukul Paimin‘.‘Satpam‘). INSERT INTO PEGAWAI VALUES(‘1003′.‘2009-10-17 07:30:00′. Hasilnya : .‘2009-10-17 15:13:26′.1). Tabel Presensi CREATE TABLE `absensi` ( `NIP` char(4) DEFAULT NULL COMMENT ‗Nomor Pegwai‘.NOW().‘2009-10-19 15:30:33′.‘2009-10-17 10:20:50′.‘2009-10-20 07:00:30′.‘2009-10-19 14:40:30′.1).‘2009-10-19 07:20:11′. (‘1001′.‘2009-10-19 07:10:10′. job char(25).‘Bejo ‗.1). Jika anda menggunakan database MySQL jam kerja pegawai akan derekam sebaiknya menggunakan jenis field DateTime.‘2009-10-17 09:20:22′. primary key (NIP). (‘1001′. Presensi datang INSERT INTO absensi VALUES(‘1001′. ‘1′).1). (‘1005′. (‘1005′.‘2009-10-19 23:00:30′. `shitf` int(11) DEFAULT ‘1′ COMMENT ‗kode shift kerja‘).JAM_PLG. ambahkan Rekaman sebagai berkut : INSERT INTO PEGAWAI VALUES(‘1001′. (‘1003′.‘2009-10-18 07:19:50′.2). (‘1002′.'Staff‘).‘2009-10-17 14:30:00′.NOW().

10)=SUBST R(NOW().1.jam_dtg.10)=‘2009 -10-17′: adalah untuk membaca tanggalnya saja sebab yang terekam pada field JAM_DTG tanggal dan jam panjang fieldnya 20 digit. SELECT nip.jam_dtg) as jam_menit_detik FROM absensi WHERE SUBSTR(JAM_DTG.10).1. SELECT nip.jam_dtg.Presensi Pulang UPDATE absensi SET JAM_PLG=NOW() WHERE NIP=‘1001′ AND SUBSTR(JAM_DTG. Kunci pencarian adalah NIP dan tanggal presensi data yang telah direkam seperti pada tabel berikut : Menampilkan Presensi semua pegawai tanggal ‘2009-10-17′‘ SELECT * FROM ABSENSI WHERE SUBSTR(JAM_DTG.1.jam_plg.1.jam_dtg) as jam_menit_detik . TIMEDIFF(jam_plg. Penjelasan : SUBSTR(JAM_DTG.10)=SUBSTR(NOW().10).10)=‘2009-10-17′ .jam_dtg): adalah untuk mengurangi tanggal jam pulang dengan tanggal jam datang hasilnya jam:menit:detik Menampilkan presensi semua pegawai tanggal ‘2009-10-17′ sampai dengan ‗2007-10-19‘ untuk pegawai dengan NIP=‘1001‘ dan menghitung jumlah jam perhari.jam_plg. Hasilnya : Penjelasan : Hanya mengubah jam pulang saja dengan kunci pencarian seperti perintah berikut : WHERE NIP=‘1001′ AND SUBSTR(JAM_DTG. TIMEDIFF(jam_plg. Hasil keluaran : Penjalasan: Perhitungan TIMEDIFF(jam_plg.1. Menampilkan presensi semua pegawai tanggal ‘2009-10-17′ dangan menghitung jumlah jam perhari.10)=‘2009-10-17′ .1.1.

nama dan jumlah jam kerja semua pegawai periode tanggal ‘200910-17′ sampai dengan ‗2007-10-19‘ Contoh : SELECT nip.jam_dtg))) as detik. Oleh karna itu perlu dibuat fungsi untuk memabaca nama. sedang rekaman satu pegawai memiliki sejumlah rekaman. karena perintah SELECT akan mengambil seluruh rekaman yang dipenuhi.1. kemudian dikembalikan sec_to_time( ). Menampilkan presensi nip. SUM(time_to_Sec(TIMEDIFF(j am_plg. SUM(time_to_Sec(TIMEDIFF(jam_plg. sec_to_time(SUM(time_to_Sec(TIMEDIFF(jam_plg. Hasil keluaran: Penjelasan: TIMEDIFF(jam_plg.1. Menampilkan jam kerja beserta nama Untuk perintah yang menggunakan GROUP BY NIP tidak bisa direlasikan secara langsung. dengan ada perintah GROUP BY NIP akan dikelompokan perpegawai.jam_dtg) fungsi jam pulang dikurangi jam datang time_to_Sec(TIMEDIFF(jam_plg.get_nama_peg(nip)as nama.10)<=‘2009-10-19′ AND NIP=‘1001′ . sec_to_time(SUM(time_to_Sec(TIMEDIFF(jam_plg.1.FROM absensi WHERE SUBSTR(JAM_DTG.10)>=‘2009-10-17′ AND SUBSTR(JAM_DTG.1.jam_dtg)) konversi format waktu ke detik dijumlahkan pakai SUM( ).10)<=‘2009-10-19′ GROUP BY NIP.jam_dtg))) as detik.10)>=‘2009-10-17′ AND SUBSTR(JAM_DTG.jam_dtg)))) as jumlah . Hasil keluaran : Menampilkan presensi jumlah jam kerja semua pegawai periode tanggal ‘2009-10-17′ sampai dengan ‗2007-10-19‘ SELECT nip.jam_dtg)))) as jumlah FROM absensi WHERE SUBSTR(JAM_DTG.

name. maka relasi tambahan pada skema eksternal dapat didefinisikan dengan menggunakan mekanisme view. Hasil keluaran : Selamat mencoba: RAJIN PANKAL PANDAI Share on Facebook       StumbleUpon Digg Reddit COMMENTS6 Comments CATEGORIESTutorial MySQL View 2NOV View adalah tabel yang barisnya secara tidak eksplisit tersimpan dalam database tetapi jika diperlukan akan diperhitungkan dari definisi view. View.1. Enrolled E WHERE S. Independensi Data. E. course) AS SELECT S. Skema konseptual adalah kumpulan skema relasi yang disimpan dalam database.cid FROM Student AS S. skema fisik relasional menjelaskan relasi skema konseptual yang disimpan. Jadi mekanisme view memberikan dukungan untuk independensi data logika pada model relasioanl.id = E.sid.studid AND E. contoh perintah menciptakan View CREATE VIEW B_Strudent (name. sid.FROM absensi WHERE SUBSTR(JAM_DTG.1.srade=‘B‘ View student memiliki tiga field yang disebut name. View juga bermanfaat dalam bidang keamanan : user dapat menciptakan yang memberikan sekelompok pengguna ke informasi yang diizinkan untuk mereka lihat Manciptakan View Dengan SQLyog .10)>=‘2009-10-17′ AND SUBSTR(JAM_DTG. Beberapa relasi pada skema konseptual juga dapat digunakan dalam aplikasi. sehingga menjadi bagian dari bagian eksternal database. sid. dancourse dengan domain yang sama. jika terjadi pada perubahan di tabel Student dan Enrolled otomatis akan mengikuti. Keamanan Di level abstraksi tabel yang dihasilkan oleh View.10)<=‘2009-10-19′ GROUP BY NIP. S. dalam hal ini digunakannya file dan indeks organisasi.

klik tombol Create Isikan/ubah skrip SQL seperti pada contoh dibawah : Klik Excute All Query mysql> select * from nama. Tuliskan nama View.Klik View Klik Create. +———–+————–+————+ | nama | kuliah | alamat | +———–+————–+————+ | Badiyanto | STMIK AKAKOM | Jogyakarta | +———–+————–+————+ .

+———–+——–+———+———–+———-+ | no_mhs | nama | alamat | Seks | agama | +———–+——–+———+———–+———-+ | 055410001 | Ana | Jkt | Perembuan | Kristen | | 055410002 | Budi | Jogja | Laki-laki | Islam | | 055410004 | Agus | Bandung | Laki-laki | Kristen | | 055410003 | Bajo | Jkt | Laki-laki | Katholik | | 055610005 | Untung | Jkt | Laki-laki | Islam | | 065410010 | Tukul | Jkt | Laki-laki | Islam | | 065410002 | Alex | Band | Laki-laki | Islam | | 075410002 | Yuda | Medan | Laki-laki | Hindu | +———–+——–+———+———–+———-+ 8 rows in set (0.1 row in set (0.00 sec) Meciptakan View dengan Relasi tabel mysql> SELECT * FROM data_prib_mhs.00 sec) mysql> .

m. Contoh: CREATE VIEW trans_nilai AS SELECT n. n.Sebuah laporan transkrip nilai perintah-perintahnya bisa disimpan ke dalam View yang merupakan rangkaian perintah SQL yang cukup komplek.nilai) as Skor FROM nilai as n. n.no_mhs.Skor_nilai(m.n.nilai. mkuliah as m WHERE n.nm_kul.kd_mk ORDER BY n.sks.m.sks. SUBSTR(m. Lakukan Eksekusi Lihat hasil pada gambar berkut : Cara menggunakan VIEW .kd_mk=m.kd_mk.2.1).kd_mk.no_mhs. Query tersebut bisa dikombinasikan dengan fungsi yang ada.

View yang tersimpan secara permanen seperti tabel. Keuntungan view memudahkan dalam pembuatan laporan Cara mengil VIEW SELECT * FROM trans_nilai. Lihat hasilnya Menampilkan transkrip nilai untuk no_mhs=‘05541002‘ SELECT * FROM trans_nilai WHERE no_mhs=‘055410002′. hanya bedanya adalah kalau tabel bisa dimanipulasi dan untuk view hanya bisa dibaca dengan perintah SELECT. Share on Facebook   StumbleUpon Digg .

RETRUN data_nilai_balik. Cara kerja fungsi fungsi ―>hampir sama dengan Stored Procedure.]) RETURNS tipe_data_nilai_balik /* COMMENT keterangan_string */ BEGIN Deklasi variabel. o o o Cara menciptakan function. DELIMITER $$ CREATE FUNCTION nama_fungsi (parameter[.    Reddit COMMENTSLeave a Comment CATEGORIESTutorial MySQL Stored Function 20OCT Stored Function Dalam database server ada 2 ketegori fungsi: (1) fungsi aggregate adalah fungsi fungsi bawaan yang terdapat pada sistem database tersebut. Selain parameter fungsi mengembalikan nilai balik lewat perintah RETURN. dang menggunakan fungsi yang dibuat oleh user sendiri. Klik function. (2) fungsi yang diciptakan oleh user sendiri. Pada bagian ini akan dibahas tentang cara menciptakan.... isi_perintah_fungsi. namun fungsi mempunyai ada yang parameter masukan ada yang tidak. END$$ DELIMITER . Klik kanan mouse Pilih dan Klik Create Function Selanjuntnya masukkan nama fungisnya seperti pada gambar berkut : .

biasanya cara memanggilnya seperi perintah berikut.00 sec) Fungsi dengan parameter Parameter adalah nilia mesukkan. param_3.Klik tombol Create. +-----------------------------------+ | Kata() | +-----------------------------------+ | BADIYANTO STMIK AKAKOM YOGYAKARTA | +-----------------------------------+ 1 row in set (0. yang kaan diproses dalam fungsi. param_N). param_2. Contoh : . lihat mengubah skrip berkut : mysql> SELECT Kata(). SELECT Nama_fungsi(param_1.

+-----------------+ | Jenis_bil(3) | +-----------------+ | Bilangan Ganjil | +-----------------+ 1 row in set (0. +------------+ .2).00 sec) mysql> Fungsi dengan Operator Hasil pengujian mysql> SELECT kali(10.Menguji Hasilnya : mysql> SELECT Jenis_bil(3).

| kali(10.00 sec) mysql> Menghitung Bobot Nilai Aturan skor perhitungan nilai sebagai berikut : o o o o o Jika nilai=‖A‖ maka bobotnya 4 Jika nilai=‖B‖ maka bobotnya 3 Jika nilai=‖C‖ maka bobotnya 2 Jika nilai=‖D‖ maka bobotnya 1 Jika nilai=‖E‖ maka bobotnya 0 Misal nilai ―A‖ sks=3 maka perhitungan skornya =sks * bobot Skornya = 3 * 4 = 12.2) | +------------+ | 20 | +————+ 1 row in set (0. sebagai hasil keluaran fungsi atau nilai balik adalah SKOR Latihan : Cara memanggil fungsi : . untuk menciptakan fungsi hitung skor sebagai masukan adalah SKS dan NILAI.

+-------------------+ | Skor_nilai(3. Oleh karena itu dalam fungsi dapat melibatkan perintah SELECT. misal nama fungsinya diberi nama get_nama(no_mhs). FROM. o o o o o Penjelasan : DECLARE Lnama CHAR(25) : adalah diklarasi varibel nama SELECT nama INTO Lnama FROM mhs Nama: nama field/kolom nama pada tabel mhs INTO masukan nilianya ke Variabel nama Lnama WHERE no_mhs=in_no_mhs : jika no_mhs (field/kolom no_mhs pada tabel MHS) sama dengan in_no_mhs (parameter masukan dari fungsi get_nama(in_no_mhs) Hasil pengujian mysql> SELECT get_nama('055410002'). Sebagai contoh untuk mencari nama dengan peritah SELECT nama FROM mhs WHERE no_mhs=‘055410002′ Kemudian perintah ini akan dikombinasikan kedalam fungsi. +-----------------------+ | get_nama('055410002') | +-----------------------+ . WHERE dan lainya.'B'). yaitu standar behasa SQL.00 sec) mysql> Fungsi Dikombinasikan dengan SELECT Secara umum penulisan program dalam fungsi menggunakan bahasa PL/SQL.mysql> SELECT Skor_nilai(3.'B') | +-------------------+ | 9| +-------------------+ 1 row in set (0. INTO.

00 sec) mysql> Meggunakan Fungsi dengan SQL Setelah fungsi diciptakan. maka secara permanen tersimapan pada sistem database. Pemprogaman Dasar | 1 | | TI201 | Kalkulus I | 3| | T2202 | Kalkulus II | 3| | TI401 | Algoritma dan Pemrogaman | 3 | | T3201 | Basis Data | 3| | P2202 | Prak. Pemprogaman Web 2 | 1 | +-------+--------------------------+------+ 7 rows in set (0.05 sec) Melihat isi tabel NILAI . +-------+--------------------------+------+ | kd_mk | nm_kul | sks | +-------+--------------------------+------+ | T1001 | Bahasa Inggris I | 2| | P1201 | Prak. +-----------+--------+---------+------+------------+-------+ | no_mhs | nama | alamat | seks | tgl_lhr | agama | +-----------+--------+---------+------+------------+-------+ | 055410001 | Ana | Jkt | P | 1981-10-10 | 2 | | 055410002 | Budi | Jogja | L | 1980-10-10 | 1 | | 055410004 | Agus | Bandung | L | 1979-10-10 | 2 | | 055410003 | Bajo | Jkt | L | 1981-07-10 | 3 | | 055610005 | Untung | Jkt | L | 1981-08-10 | 1 | | 065410010 | Tukul | Jkt | L | 1981-11-10 | 1 | | 065410002 | Alex | Band | L | 1981-02-10 | 1 | | 075410002 | Yuda | Medan | L | 1984-10-10 | 4 | +-----------+--------+---------+------+------------+-------+ 8 rows in set (0. cara menggunakan dipanggil lewat perintah : SELECT nama(parameter/field/kolom).| Budi | +-----------------------+ 1 row in set (0. kolom FROM teblel Contoh : Melihat isi tabel MHS mysql> SELECT * FROM MHS.00 sec) Melihat isi tabel Tabel MKULIAH mysql> SELECT * FROM mkuliah.

mysql> SELECT * FROM nilai. Pemprogaman Web 2 | A | 1 | 4 | | 055410001 | T2202 | Kalkulus II |B | 3| 9| | 055410001 | T3201 | Basis Data |B | 3| 9| +----------+-------+-------------------------+-------+------+------+ 5 rows in set (0.2.sks.sks.nilai).kd_mk.03 sec) mysql> Membuat Trankrip Nilai dengan menggabungkan sejumlah tabel dan fungsi perhatikan skrip SQL dibawan ini : mysql> SELECT n.nilai) as Skor -> FROM nilai as n.nm_kul.Skor_nilai(m.00 sec) mysql> penjelasan : o Fungsi Skor_nilai(m.m.m. +----------+-------+-------+ | no_mhs | kd_mk | nilai | +----------+-------+-------+ | 05541001 | T1001 | A | | 05541001 | P1201 | C | | 05541001 | T1201 | A | | 05541001 | T2202 | B | | 05541001 | T1401 | B | | 05541001 | P2202 | A | | 05541001 | T3201 | B | | 05541002 | T1001 | D | | 05541002 | P1201 | E | | 05541002 | T1201 | C | | 05541002 | T2202 | C | | 05541002 | T1401 | D | | 05541002 | P2202 | B | | 05541002 | T3201 | B | +----------+-------+-------+ 14 rows in set (0. Pemprogaman Dasar | C | 1 | 2 | | 055410001 | P2202 | Prak.n.kd_mk.nilai diambil dari tabel nilai .sks.no_mhs.kd_mk=m. menggunakan masukan m.nilai.1). +-----------+-------+-------------------------+-------+------+------+ | no_mhs | kd_mk | nm_kul | nilai | sks | Skor | +-----------+-------+-------------------------+-------+------+------+ | 055410001 | T1001 | Bahasa Inggris I |A | 2| 8| | 055410001 | P1201 | Prak.dan n.kd_mk AND n.no_mhs='055410001' -> ORDER BY SUBSTR(m.n. mkuliah as m -> WHERE n. -> n.n.sks diambil dari klom sks pada tabelmkuliah.

nilai))/sum(m.sks) jum_sks. Database MySQL telah mendukung perintah untuk menghindari kesalah dengan cara meletakkan perint error handel ke dalam Stored Procedure.get_nama(n. -> sum(skor_nilai(m. +-----------+--------------------+------+---------+--------+ | no_mhs | get_nama(n. akibatnya kesalah tersebut membuat aplikasi menjadi macet.0000 | +-----------+--------------------+------+---------+--------+ 2 rows in set (0. -> sum(skor_nilai(m. kemacetan terjadi karena ada kesalahan dalam masukkan data.no_mhs.mysql> SELECT n. -> sum(m.kd_mk=m.kd_mk -> GROUP BY n.34 sec) mysql> Share on Facebook       | StumbleUpon Digg Reddit COMMENTSLeave a Comment CATEGORIESTutorial MySQL Penanganan Kaslahan Menggunakan Stored Procedure MySQL 13OCT Program yang baik adalah jika terjadi kesalahan program tidak macet. `seks` char(1) DEFAULT NULL.no_mhs. `alamat` char(30) DEFAULT NULL.2000 | | 055410002 | Budi | 20 | 10 | 2.no_mhs) | skor | jum_sks | ip +-----------+--------------------+------+---------+--------+ | 055410001 | Ana | 32 | 10 | 3. `tgl_lhr` date DEFAULT NULL. `nama` char(30) DEFAULT NULL.n.n.sks) as ip -> FROM nilai as n. mkuliah as m -> WHERE n.sks.no_mhs). PRIMARY KEY (`no_mhs`) ) . `agama` char(1) DEFAULT NULL .sks.nilai)) as skor. Buat Strored procedure untuk menambahkan rekamam tabl MHS . Berikut ini contoh stored procedure untuk menangani kesalahan: CREATE TABLE `mhs` ( `no_mhs` char(9) NOT NULL.

'Medan'.p_tgl_lhr.'4'). END$$ DELIMITER .OUT pesan Varchar(255)) BEGIN DECLARE DUPLICATE_KEY CONDITION FOR 1062. p_tgl_lhr char(10).DELIMITER $$ DROP PROCEDURE IF EXISTS `akademik`.'L'. END.'Medan'.'4'.`Tbh_cek`$$ CREATE PROCEDURE `Tbh_cek`( p_no_mhs varchar(9).alamat. INSERT INTO mhs(no_mhs.'L'.nama.'Yuda'. DECLARE FOREIGN_KEY_VIOLATED CONDITION FOR 1452.'1984-10-10'.seks.'1984-10-10'. Pesan kesalahan : . Tampilkan isi tabel : SELECT * FROM mhs Rekaman bertambah 1. Cara memanggil strore procdure CALL tbh_cek('075410002'.agama) VALUES(p_no_mhs. p_seks varchar(1). p_alamat varchar(30).p_alamat.'Yuda'. p_agama varchar(1).p_nama.p_agama).p_seks.tgl_lhr. DECLARE EXIT HANDLER FOR DUPLICATE_KEY BEGIN SET pesan = 'Kunci nomor mhs kembar!'. Pesan kesalahan jika kita tidak menggunakan penanganan kesalahan INSERT INTO MHS VALUES ('075410002'. p_nama varchar(30).@p_result ).

EXIT) • Kondisi handler (SQLSTATE. Bentuk perintah DECLARE HANDLER adalah DECLARE handler_type HANDLER FOR condition_value [. untuk menghindari kesalahan tersebut.'1984-10-10'. mengalikan keluar dari proses tersebut Kemudian kode kesalah berupa kode angka misalnya 1062 adalah jika terjadi duplicate key Kondisi Handler Mendefinisikan suatu keadaan sesuai kode kesalahan yang terdapat dalam daftar kode MySQL atau standar kesalahan pada ANSI-standard SQLSTATE. DECLARE EXIT HANDLER FOR DUPLICATE_KEY BEGIN SET pesan = 'Kunci nomor mhs kembar!'. Kode kesalahan pada SQLSTATE secara idependen menggunakan standar ANSI. END.'4'.. jika ada penambahan data no_mhs sama akan terjadi kesalahan. Nama kondisi terdapat dalam sistem MySQL adalah : SQLWARNING. Proses di atas field no_mhs adalah primary key sehingga tidak boleh ada yang sama. SQL Server. MySQL kode kesalahan.@p_result ). DB2.'L'. nama kondisi) • Aksi handler Tipe Handler CONTINUE : melewatkan proses jika terjadi suatu kesalahkan EXIT : katika suatu blok proses terjadi kesalahan. condition_value] … statement Deklarasi handler terdapat tiga . SELECT @p_result. maka dibuat prosedure untuk menampilkan kesalahan. mendukung misalnya pada sistem : Oracle. Pengecekan Kondisi Dalam stored procedure pengecekan kondosi adalah suatu kejadian yang secara spesifik memberikan pesan jika terjadi kesalahan.'Medan'.'Yuda'. . SQLEXCEPTION Contoh : DECLARE CONTINUE HANDLER FOR 1062 SET duplicate_key=1.NOT FOUND. dan MySQL.Ulangi jalankan SQL di atas CALL tbh_cek('075410002'. • Tipe handler (CONTINUE.

. Berikut Tabel Kode Kesalahan : Kemudian kode kesalah berupa kode angka misalnya 1062 adalah jika terjadi duplicate key Tabel. check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay Incorrect parameters to procedure ‗%s‘ The table ‗%s‘ is full Delayed insert thread couldn‘t get requested lock for table %s INSERT DELAYED can‘t be used with table ‗%s‘ because it is locked with LOCK TABLES Subquery returns more than 1 row 1099 1100 HY000 HY000 1104 1106 1114 1150 42000 42000 HY000 HY000 1165 1242 HY000 21000 .Contoh berikut ini adalah kode kesalahan untuk SQLSTATE DECLARE CONTINUE HANDLER FOR SQLSTATE ‘23000′ SET duplicate_key=1. . Can‘t write. duplicate key in table ‗%s‘ ‗%s‘ is locked against change Table ‗%s‘ is read only Column ‗%s‘ cannot be null Duplicate entry ‗%s‘ for key %d Table ‗%s‘ was locked with a READ lock and can‘t be updated Table ‗%s‘ was not locked with LOCK TABLES The SELECT would examine more than MAX_JOIN_SIZE rows. waiting for someone to free some space . Kode kesalahan MySQL dan SQLSTATE Kode MySQL 1011 1021 1022 1027 1036 1048 1062 Kode SQLSTATE HY000 HY000 23000 HY000 HY000 23000 23000 Pesan Kesalahan Error on delete of ‗%s‘ (errno: %d) Disk full (%s).

Tabel. Kode kesalahan MySQL dan SQLSTATE Kode MySQL Kode SQLSTATE Pesan Kesalahan Column set to default value. NULL supplied to NOT NULL column ‗%s‘ at row %ld Out of range value adjusted for column ‗%s‘ at row %ld Data truncated for column ‗%s‘ at row %ld SELECT in a stored program must have INTO Query execution was interrupted Undefined CONDITION: %s Cursor is already open Cursor is not open Incorrect number of FETCHvariables No data to FETCH USE is not allowed in a stored program Variable or condition declaration after cursor or handler declaration Cursor declaration after handler declaration Case not found for CASEstatement Column ‗%s‘ is not updatable Can‘t drop a %s from within another stored routine GOTO is not allowed in a stored program handler Updating of %s row is not allowed in %s trigger There is no %s row in %s trigger 1263 1264 1265 1312 1317 1319 1325 1326 1328 1329 1336 22004 22003 1000 0A000 70100 42000 24000 24000 HY000 2000 42000 1337 1338 1339 1348 1357 1358 1362 1363 42000 42000 20000 HY000 HY000 HY000 HY000 HY000 Contoh : handel kasalahan DECLARE sqlcode INT DEFAULT 0. DECLARE status_message VARCHAR(50). .

Contoh : Buatlah Stored Procedure untuk menambahkan rekaman tabel MHS. -. demgan nama Simpan_mhs(….Error handler untuk duplikasi data pada primary key DECLARE CONTINUE HANDLER FOR duplicate_key BEGIN SET sqlcode=1052.-.OUT pesan Varchar(255)) BEGIN DECLARE DUPLICATE_KEY CONDITION FOR 1062. SET status_message=‘Foreign key violated‘. DECLARE FOREIGN_KEY_VIOLATED CONDITION FOR 1452.p_seks varchar(1) . DECLARE EXIT HANDLER FOR DUPLICATE_KEY BEGIN . seperti pada skript berikut : DELIMITER $$ DROP PROCEDURE IF EXISTS `akademik`. Dst). END.p_alamat varchar(30) .…. END.……….`Simpan_mhs`$$ CREATE PROCEDURE Simpan_mhs(p_no_mhs varchar(9) . -..p_nama varchar(30) .. END. SET status_message=‘Duplicate key error‘.Error handler untuk kesalahan pada FOREGN KEY tabel lain DECLARE CONTINUE HANDLER FOR foreign_key_violated BEGIN SET sqlcode=1216.p_agama varchar(1). DECLARE CONTINUE HANDLER FOR NOT FOUND BEGIN SET sqlcode=1329.p_tgl_lhr char(10) . SET status_message=‘No record found‘.Error handler untuk kesalahan-kesalahan lain selain kedua handler diatas DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN SET Message = 'Error pada query!'. END.

yang pertama perekaman jual.$$ DELIMITER . Query OK. END.alamat. dan tabel jual merekam transakasi penjualan.@pesan ). DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN SET pesan = 'Kasalahan pada perintah query!'. Adapun langkah-langkahnya sebagai berikut : Buatlah struktur tabel BARANG berikut : CREATE TABLE barang (kd_brg CHAR(5). END.00 sec) mysq>. +-------------------------------+ | @pesan | +-------------------------------+ | Kunci utama terjadi duplikasi! | +-------------------------------+ 1 row in set (0. Untuk proses merekaman transaksi penjualan menggunakan 2 stored prosedure. dam kedua pemotongan stok pada tabel barang. 0 rows affected (0. Latihan : Suatu transaksi penjualan secara sederhana misalnya melibatkan 2 tabel.'L'. END.SET pesan = 'Kunci utama terjadi duplikasi!'. INSERT INTO mhs(no_mhs. antara lain tabel barang yang menyimpanan stok dan jenis barang.seks.p_tgl_lhr.nama.p_alamat.agama) VALUES(p_no_mhs. . Lakukan eksekusi skrip Pengujian : mysql> CALL Simpan_mhs('075410002'.'1984-10-10'.'4'.'Yuda'.'Medan'.p_agama).02 sec) mysql>SELECT @pesan.p_seks. END.p_nama. DECLARE EXIT HANDLER FOR FOREIGN_KEY_VIOLATED BEGIN SET pesan = 'Referensi data salah !'.tgl_lhr.

100. Lihat isi tabel : Buatlah struktur tabel JUAL sepeti pada perintah berikut: CREATE TABLE jual (no_nota char(4).in_kd_brg.`Simpan_jual`(in_no_nota char(4).'Gunting kecil'.'Pcs'. in_kd_brg CHAR(5). CALL potong_stok(in_kd_brg. DELIMITER $$ Kemudian buatlah Stored Procedure Simpan_jual(………).'Rem'.200. harga int. in_tgl date.'Pesil 2B'. Lakukan eksekusi . tgl date.5000). kd_brg CHAR(5).'Pcs'. INSERT INTO barang VALUES('K0004'.6000). INSERT INTO barang VALUES('K0005'.'Pengahpus'.`Simpan_jual`$$ CREATE PROCEDURE `akademik`. primary key (kd_brg)).'Buku '.'Pcs'.10.'Pcs'.in_jumlah).in_tgl.nm_brg CHAR(20).3000). END$$ DELIMITER . isikan parameternya seperti pada skript berikut : DROP PROCEDURE IF EXISTS `akademik`. INSERT INTO barang VALUES('K0002'. jumlah int).200. INSERT INTO barang VALUES('K0003'. in_jumlah int) BEGIN INSERT INTO jual VALUES(in_no_nota. Tambahkan isi rekaman sebagai berikut : INSERT INTO barang VALUES('K0001'. stok int.'Kertas HVS'.in_jumlah).100.30000).1000). satuan CHAR(20).

END$$ DELIMITER .Kemudian buatlah Stored Procedure Potong_stok(………).CURRENT_DATE. isikan parameternya seperti pada skript berikut : ELIMITER $$ DROP PROCEDURE IF EXISTS `akademik`.`potong_stok`(in_kd_brg char(5). Lakukan eksekusi Jalankan Stored Procedure Simpan_jual CALL Simpan_jual('0001'.in_jumlah).`potong_stok`$$ CREATE PROCEDURE `akademik`.in_jumlah int) BEGIN UPDATE barang SET stok=stok-in_jumlah WHERE kd_brg=in_kd_brg.'K0001'.in_kd_brg. Parameter in_kd_brg : kunci pencarian In_jumlah : nilai pengurangan stok Soal : . Skrip di atas proses perekaman penjualan pada tabel jual Selanjutnya pemotongan stok dilakukan oleh perintah di bawah CALL potong_stok(in_kd_brg. Penjelasan : INSERT INTO jual VALUES(in_no_nota.2) Hasil : SELECT * FROM jual . Lihat Stok SELECT * FROM barang.in_tgl.in_jumlah).

terdapa sejumlah transaksi. delete) operasional pada tabel. update. stok habis atau stok tidak boleh minus. standar perintah yang digunakan menggunakan perintah standar SQL.Tambahkan skrip di atas untuk menagani kesalahan/validasi 1. berkaitan perintahperintah DML (insert. 3. Share on Facebook       StumbleUpon Digg Reddit COMMENTS2 Comments CATEGORIESTutorial MySQL Stored Precrdure dan Function 5OCT 1. Stored Procedure Sejumlah perintah dalam kode program dan beberapa parameter input. Struktur Block. Terdapat 3 bagian penting Program yang tersimpan dalam database Server 1. dan sejumlah hasil atau keluaran. Function mempunyai sejumlah paramter input dan hanya mengembalikan satu output. 2. view. Stored Procedure pada MySQL 3. Cara pemanggilannya dengan mengeksekusi nama proscdure tersebut. subquery. pengecekan barang. Dasar Pemrogramanan 4. Stored Function Fungsi hampir sama dengan stored procedure. Error Handeling Pendahuluan Stored Precedure dan Function> MySQL dekenal sebagai database reasiaonal. 2. Pemrograman SQL dan Pemrograman Stored Procedure 6. Program tersbut diciptakan oleh user diletakkan dan dieksekusi dalam database server. Trigger Suatu program yang akan melakukan respon dalam aktivitas database. Apa yang dimaksud dengan prorgram stored procdure? Database server telah mendukukung bebrapa proses transaksi yang dikerjakan oleh server. Biasanya digunakan untuk otomatisasi atau validasi. stored procedure atau fungsi. . Pendahuluan Stored Precrdure dan Function 2. Program Interaktif 5.

• MySQL Query Browser. menciptakan stored precedure. SQLyog dll Manciptakan Stored Procedure Beberapa perintah untuk membuat stored procedure: CREATE PROCEDURE . Type ‗\c‘ to clear the buffer. Commands end with . . Apa yang dibutuhkan? • MySQL Server • Teks editor vi. sudah pernah ada. mysql> use coba. emacs. or \g.‘ or ‗\h‘ for help.4-alpha-community-log MySQL Community Server (GPL) Type ‗help.Pemrograman Stored Prosedure dalam MySQL. adapun bagian penting pada stored procedure : Kapan program akan diabut. CREATE FUNCTION . atau CREATE TRIGGER Contoh : DELIMITER $$ DROP PROCEDURE IF EXISTS Kata()$$. Database changed mysql> CALL Kata(). Stored procedure adalah permasalah yang cukup kompleks untuk dibahas. CREATE PROCEDURE Kata() BEGIN SELECT ‗AKAKOM‘. Your MySQL connection id is 2 Server version: 6. END$$ DELIMITER . interaksi dalam basis data.0. gan nama Kata ( isi parameter kalau ada ). Cara memanggilanya : Enter password: **** Welcome to the MySQL monitor. fungsi dan trigger dalam bahasa pemrograman. parameter yang akan dilewatkan dan hasil yang dikeluarkan.

+——–+ | AKAKOM | +——–+ | AKAKOM | +——–+ 1 row in set (0. SELECT x+y. END$$.00 sec) mysql> Variabel Variabel dalam bahasa SQL. Perintahnya menggunakan DECLARE. Contoh : . 0 rows affected (0. SET y=20. DELIMITER. CALL Demo_var Hasil +——+ | x+y | +——+ | 30 | +——+ 1 row in set (0. fungsinya sama dengan bahasa pemrograman paxda umumnya. hasilnya.00 sec) Sebuah Procedure dengan mengunakan parameter masukan. DECLARE y int. Contoh DELIMITER$$ CREATE PROCEDURE Demo_Var() BEGIN DECLARE x int. SET x=10. dan untuk memberikan nilai menggunakan perintah SET. akan diproses dalam fungsi dan kemudian timapilkan. Parameter Parameter adalah suatu nilai yanga akan dilewatkan atau dimasukan untuk diproses dalam fungsi atau prosedure.00 sec) Query OK.

Hasil keluaran sebagai berikut : mysql> CALL my_akar(25). END$$. +——-+ | hasil | +——-+ |5| +——-+ 1 row in set (0. 0 rows affected (0. END$$. DELIMITER. Cara menjalankan prosedur ada dua tahap CALL my_sqrt(9.@out_value) SELECT @out_value Penjelasan : . SELECT hasil.03 sec) Query OK.DELIMITER$$ CREATE PROCEDURE my_akar(masukan INT) BEGIN DECLARE hasil FLOAT.05 sec) Prosedure menggunakan parameter masukan dan keluaran (INT dan OUT) Contoh : DELIMITER$$ CREATE PROCEDURE my_sqrt(masukan INT. OUT nilai_keluar FLOAT) BEGIN SET nilai_keluar= SQRT(masukan). DELIMITER. Cara memanggil prosedur CALL my_akar(25). SET hasil= SQRT(masukan).

OUT diskon NUMERIC(8. ELSEIF (pembayaran > 500000) THEN SET diskon=pembayaran * 0.03 sec) Query OK. 0 rows affected (0.Memampilkan nilai keluaran : mysql> CALL my_akar(25). +————+ | @out_value | +————+ |3| +————+ Memampilkan nilai keluaran : Kondisional Perintah kondisional.2). .05 sec) mysql> CALL my_sqrt(9. +——-+ | hasil | +——-+ |5| +——-+ 1 row in set (0. kondisi benar atau asalah. untuk melakukan uji kondisi terapat satu masukan dan dua piliahan dari keluaran.@out_value) .9. DELIMITER$$ CREATE PROCEDURE Diskon(pembayaran NUMERIC(10.05 sec) mysql> SELECT @out_value.8.2)) BEGIN IF (pembayaran > 100000) THEN SET diskon=pembayaran * 0. atau CASE. 0 rows affected (0. Perintahnya menggunakan IF. Query OK.

05 sec) mysql> SELECT @new_price. atas:LOOP SET konter=konter+1. SELECT konter. Cara memanggilnya : mysql> CALL diskon(100000. END$$. END IF.00 | +————+ 1 row in set (0. END IF. IF konter=10 THEN LEAVE atas. END LOOP atas. DELIMITER. 0 rows affected (0. perintannya menggunakan WHILE dan END WHILE • Perulangan yang menggunakan REAPEAT dan UNTIL Contoh : DELIMITER$$ CREATE PROCEDURE Loop_sederhana() BEGIN DECLARE konter INT DEFAULT 0. Dalam MYSQL ada 3 type loop : • Loop sederhana menggunakan LOOP dan END LOOP c • Loop yang disertai kontrol kondisi benar atau salah jika benar akan loop.00 sec) Loop Loop adalah proses perulangan.@new_price) . END$$. +————+ | @new_price | +————+ | 100000. LEAVE untuk mangarah ke label atas. Query OK. DELIMITER. .ELSE SET diskon=pembayaran. SELECT ‗Konter ke 10′.

$$ CREATE PROCEDURE pelanggan_jualan(in_kd_plg char(5)) BEGIN DECLARE Total_jual INT . nil_tran int).5000000).Total_jual). terdapat variabel lokal. Tambahkan rekaman INSERT INTO JUALAN VALUES(‘00001′. SELECT CONCATE(‗Jumlah Transaksi Pelanggan No.Interaktif dengan Database Stored Prosedure juga basi melibatkan data dalam tabel. INSERT INTO JUALAN VALUES(‘00004′. ngasilkan record set SELECT INTO Menggunakan Variabel Lokal Dalam Stored procedure seperti halnya pemroraman biasa.‘2009-07-11′.4030000). Ada 4 bagian tipe interaksi antara lian : dimasukan ke dalam variabel lokal.‘ adalah =‘. kd_plg char(5). Menciptakan Stored procedure DELIMITER$$ DROP PROCEDURE IF EXISTS pelanggan_jualan.4000000).‘2009-07-10′. Untuk mengisikan nilai variabel tersebut dengan perintah INTO Contoh : Buatalah tabel JUALAN CREATE TABLE JUALAN(no_tran char (5). INSERT INTO JUALAN VALUES(‘00002′.in_kd_plg.700000). .‘P0001′. SELECT SUM(nil_tran) INTO Total_jual FROM JUALAN WHERE kd_plg = in_kd_plg. yaitu variabel yang menampung data sementara. sejumlah baris.‘P0001′.‘P0003′.‘2009-09-10′. INSERT INTO JUALAN VALUES(‘00003′.‘P0002′.:‘. tgl date.‘2009-07-11′.

in_kd_plg. . $$ CREATE PROCEDURE cari(in_no_mhs char(9)) BEGIN SELECT no_mhs. : hasil ditampilkan kelayar dengan keterangannya • END. • BEGIN : awal blok perintah (proses) • DECLARE Total_jual INT : bagian deklarasi variabel • SELECT SUM(nil_tran) INTO Total_jual FROM JUALAN WHERE kd_plg = in_kd_plg.nama. jika tidak diabaikan. akhir dari blok proses Cara memanggil Stored precedure seperti pada gambar berkut : Melibatkan Tabel DELIMITER$$ DROP PROCEDURE IF EXISTS cari. : perintah SQL menpilkan • SELECT CONCATE(‗Jumlah Transaksi Pelanggan No.END.agama FROM mhs WHERE no_mhs=in_no_mhs.‘ adalah =‘. $$ Penjelasan • DELIMITER : awal skrip • DROP PROCEDURE IF EXISTS : menghapus jika prosedure pelanggan_jualan ada.Total_jual).alamat.:‘.

END.kd_mk)).'T2202'. kd_mk char(5). INSERT INTO NILAI VALUES('05541001'. INSERT INTO NILAI VALUES('05541001'. INSERT INTO NILAI VALUES('05541001'. INSERT INTO NILAI VALUES('05541001'. $$ Cara menjalankan Stored Procedure Contoh kasus Bualah tabel : Tabel NILAI CREATE TABLE nilai (no_mhs char(9).'T1201'. nilai char(1).'A'). .'P2202'.'T3201'.'A').'A'). INSERT INTO NILAI VALUES('05541001'.'C'). primary key (no_mhs.'B').'B').'T1001'. INSERT INTO NILAI VALUES('05541001'.'P1201'.'T1401'. INSERT INTO NILAI VALUES('05541001'.'B').

3). Pemprogaman Web 1'.'T1401'.3). . INSERT INTO mkuliah VALUES('T22002'.'D'). INSERT INTO NILAI VALUES('05541002'.'P1201'.'B'). INSERT INTO mkuliah VALUES('P12001'.'T1201'. INSERT INTO NILAI VALUES('05541002'.'C'). INSERT INTO mkuliah VALUES('TI2001'. sks int.'T1001'.'T3201'.3).'C'). INSERT INTO mkuliah VALUES('T32001'. INSERT INTO NILAI VALUES('05541002'.3). INSERT INTO mkuliah VALUES('TI4001'.'T2202'.1).'D'). INSERT INTO mkuliah VALUES('T22001'.INSERT INTO NILAI VALUES('05541002'.'B'). INSERT INTO NILAI VALUES('05541002'. INSERT INTO mkuliah VALUES('T10002'.'Bahasa Inggris I'.2).'E').2).'Prak. INSERT INTO NILAI VALUES('05541002'. primary key (kd_mk)). nm_kul char(25).'P2202'. INSERT INTO mkuliah VALUES('T10001'.'Kalkulus I'.'Kalkulus II'.3).'Algoritma dan Pemrogaman'. Tabel MKULIAH CREATE TABLE mkuliah (kd_mk char(5). INSERT INTO NILAI VALUES('05541002'.'Jaringan Komputer'.'Bahasa Inggris II'.'Basis Data'.

no_mhs. Menapilkan nilai no_mhs='05541001' SELECT nilai.nm_kul.kd_mk AND nilai.mkuliah.'Prak.mkuliah. Pemprogaman Web 2 | A | 05541001 | T1001 | Bahasa Inggris I | 05541001 | T2202 | Kalkulus II | 05541001 | T3201 | Basis Data |A |B |B | 2| | 3| | 3| | 1| | 1| . INSERT INTO mkuliah VALUES('P12001'.mkuliah WHERE nilai.nilai. +----------+-------+-------------------------+-------+------+ | no_mhs | kd_mk | nm_kul | nilai | sks | +----------+-------+-------------------------+-------+------+ | 05541001 | P1201 | Prak.kd_mk=mkuliah.mkuliah.kd_mk.kd_mk=mkuliah.kd_mk. Database changed mysql> SELECT nilai.mkuliah.1).nilai. Pemprogaman Dasar'.'Prak.nilai.nilai.nilai.mkuliah -> WHERE nilai.no_mhs='05541001' mysql> use akademik. Pemprogaman Web 2'.sks -> FROM nilai. Pemprogaman Dasar | C | 05541001 | P2202 | Prak.no_mhs.sks FROM nilai.1).nm_kul.nilai.no_mhs='05541001'.INSERT INTO mkuliah VALUES('P22001'.kd_mk AND nilai.

+----------+-------+-------------------------+-------+------+ 5 rows in set (0.00 sec)

mysql>

Manampilkan trasnkip dengan bobot nilai, sks dan jumlah dan bobot

mysql> SELECT nilai.no_mhs,nilai.kd_mk,mkuliah.nm_kul,nilai.nilai,mkuliah.sks -> -> -> -> -> -> CASE WHEN nilai.nilai='A' THEN mkuliah.sks * 4 WHEN nilai.nilai='B' THEN mkuliah.sks * 3 WHEN nilai.nilai='C' THEN mkuliah.sks * 2 WHEN nilai.nilai='D' THEN mkuliah.sks * 1 ELSE 0 END bobot

-> FROM nilai,mkuliah -> WHERE nilai.kd_mk=mkuliah.kd_mk AND nilai.no_mhs='05541001'; +----------+-------+-------------------------+-------+------+-------+ | no_mhs | kd_mk | nm_kul | nilai | sks | bobot |

+----------+-------+-------------------------+-------+------+-------+ | 05541001 | P1201 | Prak. Pemprogaman Dasar | C | 05541001 | P2202 | Prak. Pemprogaman Web 2 | A | 05541001 | T1001 | Bahasa Inggris I |A | 2| | 1| | 1| 8| 2| 4|

| 05541001 | T2202 | Kalkulus II | 05541001 | T3201 | Basis Data

|B |B

| 3| | 3|

9| 9|

+----------+-------+-------------------------+-------+------+-------+ 5 rows in set (0.00 sec)

mysql>

menghitung IP

mysql> SELECT nilai.no_mhs,SUM(mkuliah.sks) jum_sks, -> -> -> -> -> -> SUM(CASE WHEN nilai.nilai='A' THEN mkuliah.sks * 4 WHEN nilai.nilai='B' THEN mkuliah.sks * 3 WHEN nilai.nilai='C' THEN mkuliah.sks * 2 WHEN nilai.nilai='D' THEN mkuliah.sks * 1 ELSE 0 END) as jum_bobot

-> FROM nilai,mkuliah -> WHERE nilai.kd_mk=mkuliah.kd_mk AND nilai.no_mhs='05541001'; +----------+---------+-----------+ | no_mhs | jum_sks | jum_bobot | +----------+---------+-----------+ | 05541001 | 10 | 32 |

+----------+---------+-----------+ 1 row in set (0.00 sec)

mysql>

Ip= jum_bobot/jum_sks

mysql> SELECT nilai.no_mhs,SUM(mkuliah.sks) jum_sks, -> -> -> -> -> -> -> -> -> -> -> -> SUM(CASE WHEN nilai.nilai='A' THEN mkuliah.sks * 4 WHEN nilai.nilai='B' THEN mkuliah.sks * 3 WHEN nilai.nilai='C' THEN mkuliah.sks * 2 WHEN nilai.nilai='D' THEN mkuliah.sks * 1 ELSE 0 END) as jum_bobot, SUM(CASE WHEN nilai.nilai='A' THEN mkuliah.sks * 4 WHEN nilai.nilai='B' THEN mkuliah.sks * 3 WHEN nilai.nilai='C' THEN mkuliah.sks * 2 WHEN nilai.nilai='D' THEN mkuliah.sks * 1 ELSE 0 END) /SUM(mkuliah.sks) as ip

-> FROM nilai,mkuliah -> WHERE nilai.kd_mk=mkuliah.kd_mk AND nilai.no_mhs='05541001';

no_mhs.nilai='A' THEN mkuliah.nilai.nm_kul.nilai.sks * 1 ELSE 0 END bobot FROM nilai.mkuliah WHERE nilai.kd_mk AND nilai. CASE WHEN nilai.sks * 2 WHEN nilai.mkuliah.nilai.nilai='D' THEN mkuliah.kd_mk=mkuliah.mkuliah.sks.00 sec) mysql> Manggunakan Stored Procedure CREATE DEFINER=`root`@`localhost` PROCEDURE `get_transkrip`(in_no_mhs char(9)) BEGIN SELECT nilai.no_mhs=in_no_mhs .2000 | | +----------+---------+-----------+--------+ 1 row in set (0.nilai='C' THEN mkuliah.+----------+---------+-----------+--------+ | no_mhs | jum_sks | jum_bobot | ip +----------+---------+-----------+--------+ | 05541001 | 10 | 32 | 3.nilai='B' THEN mkuliah.sks * 3 WHEN nilai.kd_mk.sks * 4 WHEN nilai.

nilai='A' THEN mkuliah.sks * 4 WHEN nilai.kd_mk AND nilai.nilai='C' THEN mkuliah.no_mhs=in_no_mhs.mkuliah WHERE nilai.nilai='A' THEN mkuliah.1).sks * 2 WHEN nilai./*urut semerter */ ORDER BY SUBSTR(nilai.no_mhs.sks * 2 WHEN nilai.sks) jum_sks.sks * 3 WHEN nilai. END$$ DELIMITER .nilai='B' THEN mkuliah.nilai='B' THEN mkuliah.kd_mk=mkuliah.nilai='D' THEN mkuliah.sks * 1 ELSE 0 END) as jum_bobot. SUM(CASE WHEN nilai.2. .sks * 4 WHEN nilai. CREATE DEFINER=`root`@`localhost` PROCEDURE `get_ip`(in_no_mhs char(9)) BEGIN SELECT nilai.nilai='C' THEN mkuliah.nilai='D' THEN mkuliah.sks * 3 WHEN nilai.sks * 1 ELSE 0 END) /SUM(mkuliah.SUM(mkuliah.kd_mk.sks) as ip FROM nilai. SUM(CASE WHEN nilai.

O‘Reilly Share on Facebook     StumbleUpon Digg Reddit   COMMENTSLeave a Comment CATEGORIESTutorial MySQL Fungsi dan Operator di MySQL 5OCT Operator Nama AND. Daftar Pustaka Steven Feuerstein. MySQL Stored Procedure Programming. && BETWEEN … AND … BINARY Operasi bit AND & Membalik nilai bits ~ Operasi bit OR | Operasi bit XOR ^ Operator Case CASE Pembagian hasil nilai Integer DIV Operator pembagian / Keterangan Logika AND Mengecek nilai dalam Mengubah nilai string ke biner string .END$$ DELIMITER . Guy Harrison. 2006.

! ||. OR + REGEXP >> RLIKE * XOR Membalik nilai Logika OR Operator penambahan Pembandingan pola yang sama dengan ekspresi Geser kekanan Sama dengan operator REGEXP Times operator Jika didepan tanda bilangan nigatif logika XOR Mengecak yang nilainya tidak sama dalam range Operator tidak sama dengan Urutan/hirarki Operator Secara hirarki gabungan sejumlah operator seperti pada urutan dibawaw ini : . <> Pembanding yang tidak mirip/sama NOT LIKE Pembandingan pola yang tidak sama dengan ekspresi NOT REGEXP NOT.Nama <=> Keterangan Operator loiga untuk karakter NULL Operator sama dengan = Lebih besar atau sama dengan >= Perator lebih besar > Menguji nilai NOT NULL IS NOT NULL Menguji boolean benar/salah IS NOT Mengujin nilai NULL IS NULL Menguji boolean benar/salah IS Operator geser kekiri << Lebih kecil atau sama dengan <= Lebih kecil < Pencocokan pola tesks /mirip LIKE Operator pengurangan operator modulus % NOT BETWEEN … AND … !=.

’ test’). THEN. !=.8. -> 38. COLLATE ! .INTERVAL BINARY. WHEN. AND XOR ||.8 AS CHAR). <. <>. MOD -. -> 9 mysql> SELECT 1+’1′. <=>. /. CAST(38.8′ . >. ~ (unary bit inversion) ^ *. REGEXP. >> & | =. DIV. CASE. ELSE NOT &&. IN BETWEEN. + <<. -> 7 mysql> SELECT (1+2)*3. -> ‘2 test‘ mysql> SELECT 38.(unary minus). LIKE.8. ‘38. <=. OR := : mysql> SELECT 1+2*3. IS. -> 2 mysql> SELECT CONCAT(2. %. >=.

value2. -> 38.8′ Fungsi pembanding Nama Keterangan Mencari nilai pertama nonNULL Return the largest argument Mengecek nilai termasuk dealam anggota bagian himpunan Nilai index urutan dari bilangan satu ke bilangan berkutnya Mengecek nilai NULL Mengasilkan nilai yang terkecil Kebalikan dari IN( ) Membandingkan 2 nilai string COALESCE() GREATEST() IN() INTERVAL() ISNULL() LEAST() NOT IN() STRCMP() Contoh : COALESCE(value. · -> 'C' LEAST(value1.NULL)..'A'.8). . · -> 2 · mysql> SELECT GREATEST(34.value2.8. · -> 1 · mysql> SELECT COALESCE(NULL.1).NULL.. · -> 767. ‘38.) · mysql> SELECT COALESCE(NULL. CONCAT(38..mysql> SELECT 38.0).) · mysql> SELECT GREATEST(2.0 · mysql> SELECT GREATEST('B'. · -> NULL GREATEST(value1.5..767.0)..) · mysql> SELECT LEAST(2..0.'C').8.0).0.3..0...

) · mysql> SELECT 2 IN (0. 1.N3. OR XOR Kontrol Kondisi Nama CASE IF() IFNULL() NULLIF() Keterangan Oprasi Case Kondisi If/else Kondisi if/else nilai NULL hasil NULL jika expr1 = expr2 benar Keterangan Logika AND Logika value Logika OR Logika XOR CASE nilai WHEN [pembanding_1] THEN hasil_1 [WHEN [pembanding_2] THEN hasil_2…] [ELSE hasil_3] END CASE WHEN [kondisi_2] THEN hasil_1 [WHEN [kondisi_2] THEN hasil_2 …] [ELSE hasil_n] END mysql> SELECT CASE 1 WHEN 1 THEN ‘one’ -> WHEN 2 THEN ‘two’ ELSE ‘more’ END. ! ||.'A'.7). · -> 0 expr IN (value. 15.0.3.) · mysql> SELECT INTERVAL(23. 44.. · -> 3 · mysql> SELECT INTERVAL(10. 30... · -> 1 Logical Operators Nama AND.· -> 0 · mysql> SELECT LEAST(34. · -> 3.5. · -> 0 · mysql> SELECT 'wefwf' IN ('wee'. 200).3.0. 200). 44.. 17.'weg').'C').5.'wefwf'. 30. 1. 23. .0)..N2. 10.0.0 · mysql> SELECT LEAST('B'. 100.. · -> 2 · mysql> SELECT INTERVAL(22. · -> 'A' INTERVAL(N.767. 1000).N1. && NOT.

10).'test1'). -> 1 mysql> SELECT IFNULL(NULL.expr2.expr3) Jika expr1 benar hasil expr2.3).'no'). Ini sama dengan operasi CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END.'Islam'.'yes'). jika tidak hasil sama dengan expr1.'Budha' )))) as agm FROM mhs IFNULL(expr1.IF(agama='4'. -> 'no' SELECT IF (agama='1'. -> 'yes' mysql> CREATE TABLE tmp SELECT IFNULL(1. jika tidak expr2 mysql> SELECT IFNULL(1.10). -> ‗true‘ mysql> SELECT CASE BINARY ‘B’ -> WHEN ‘a’ THEN 1 WHEN ‘b’ THEN 2 END.'no'.0).IF(agama='2'.'test') AS test.expr2) Akan menghasilkan nilai NULL jika expr1 = expr2 bernilai benar.'yes'). -> NULL IF(expr1. -> 10 mysql> SELECT IFNULL(1/0.'Hindu'.1). +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | test | char(4) | | | | | +-------+---------+------+-----+---------+-------+ NULLIF(expr1. -> NULL .2.-> ‗one‘ mysql> SELECT CASE WHEN 1>0 THEN ‘true’ ELSE ‘false’ END.'Katholik'. mysql> DESCRIBE tmp. -> 'yes' mysql> SELECT IF(STRCMP('test'.'Kristen'. salah expr3 mysql> SELECT IF(1>2.'yes'. mysql> SELECT NULLIF(1. -> 3 mysql> SELECT IF(1<2.IF(agama='3'. -> 10 mysql> SELECT IFNULL(1/0.expr2) Jika expr1 tidak NULL hasil expr1 .

-> 1 Fungsi String Nama Keterangan Mengubah nilai karakter menjadi nilai ASCII Bilangan integer ke bilangan biner Penjang bit bilangan Memperoleh panjang karakter Memperoleh nilai interger ke karakter ASCII Sama dengan CHAR_LENGTH() Penggabungan teks.2). dengan kerakter pemisah Penggabungan teks Menampilkan nilai string menurut index urutan Menampilkan format nilai anggka dengan pemisah titik atau koma Sama dengan LOWER() Mencari nilai panjar string Mengambil potongan sederitan karakter Sama dengan SUBSTR() Menhilangkan karater blank/space Sama dengan UPPER() ASCII() BIN() BIT_LENGTH() CHAR_LENGTH() CHAR() CHARACTER_LENGTH() CONCAT_WS() CONCAT() ELT() FORMAT() LCASE() LENGTH() SUBSTR() SUBSTRING() TRIM() UCASE() .mysql> SELECT NULLIF(1.

Pada bagian ini akan dibahas tentang perintah dengan SQL pada MySQL. ada sejumlah karakter khusus yang mengandung arti dalam SQL atau juga desebut spesial kararakter. angka hexadecimal . boolean dan NULL. SELECT _utf8′some text‘.Nama UPPER() Share on Facebook       Keterangan Sama dengan UCASE() StumbleUpon Digg Reddit COMMENTS2 Comments CATEGORIESTutorial MySQL Database MySQL 3 30SEP MySQL – Struktur Bahasa MySQL Bahasa strutrektur di MySQL dikenal dengan SQL (Structure Query Language). Maka untuk menuliskan karakter tersebut menggunakan awalan backslash(―\‖) . angka desimal. SELECT n‘some text‘. Strings string adalah karakter yang dituliskan dengan menggunakan tanda petik tunggal (―‘‖) atau petik ganda (―) Contoh: ‗a string‘ ―Badiyanto‖ SELECT N‘some text‘. Nilai Literal Nilia literal antara lain : strings.

Sebuah angka secara default bilangan postitf tanpa tanda.Angka Anga berupa anggka desimal bulat tipenya adalah integer.00 Bilangan Hexadesimal Mysql juga mendukung penggunaan angka hexadesimal. atau tanda ―+‖ dan untuk negatif dengan tanda ―-‖ Contoh angka integer 1221 0 -32 Contoh angka untuk bilangan pecahan: 294. Dalam konteks bilangan mengunakan bilangan integer (64-bit precision). -> 10 . Dituliskan dengan format string dan dikonversikan ke bilangan biner (string).6809e+10 148.42 -32032. untuk angka pecahan dipisahkan dengan ―. Contoh: mysql> SELECT x‘4D7953514C‘.‖ . -> ‗MySQL‘ mysql> SELECT 0x0a+0.

-> ‘636174′ mysql> SELECT 0×636174.mysql> SELECT HEX(‗cat‘). -> ‗cat‘ Share on Facebook       StumbleUpon Digg Reddit COMMENTS2 Comments CATEGORIESTutorial MySQL .

You're Reading a Free Preview

Mengunduh
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->