Android

Android Operating System.

Database Management System

Create your own database with MySQL.

PHPMyAdmin

A tool written in PHP intended to handle the administration of MySQL over the WWW.

JQuery

The Write Less, Do More, JavaScript Library.

Java

Java Programming Language.

Jawaban UTS SMBD Semester Ganjil 2013/2014

Berikut ini jawaban UTS semester ganjil 2013/2014 IST Akprind Yogyakarta.
Mohon maaf jika ada kekurangan, jika lebih mohon dikembaikan hehehe

Download disini

Membuat Trigger di PostgreSQL

Kali ini saya akan menjelaskan cara membuat trigger di PostgreSQL. Pada kasus ini kita memiliki dua tabel yaitu tabel penjualan, dan tabel penjualan_item. Pertama kita buat dulu tabel-tabelnya:
CREATE TABLE penjualan(id_penjualan serial PRIMARY KEY, no_penjualan char(5), tgl_penjualan date, kd_customer char(5), total_penjualan int);
CREATE TABLE item(id_item serial PRIMARY KEY, id_penjualan char(5) references penjualann, kd_item char(5), quantity int, harga int);
Pada kasus ini kita akan membuat suatu trigger untuk  meng"update" nilai dari field total_penjualan pada table penjualan jika ada perubahan data pada tabel item, maka field total_penjualan akan ter"update" otomatis, dimana nilai total penjualan adalah perkalian dari  harga dengan quantity.

CREATE OR REPLACE FUNCTION tr_penjualan_item()
RETURNS trigger AS 
$$ 
BEGIN  
IF TG_OP = 'INSERT' THEN 
update penjualan set total_penjualan = total_penjualan + (NEW.quantity * NEW.harga) where id_penjualan = NEW.id_penjualan;
RETURN NEW;  
END IF;  
IF TG_OP = 'UPDATE' THEN 
update penjualan set total_penjualan = total_penjualan - (OLD.quantity * OLD.harga) where id_penjualan = OLD.id_penjualan;  
update penjualan set total_penjualan = total_penjualan + (NEW.quantity * NEW.harga) where id_penjualan = OLD.id_penjualan;
RETURN NEW;  
END IF;  
IF TG_OP = 'DELETE' THEN 
update penjualan set total_penjualan = total_penjualan - (OLD.quantity * OLD.harga) where id_penjualan = OLD.id_penjualan;  
RETURN OLD;  
END IF; 
END; 
$$ 
language plpgsql ;
CREATE TRIGGER tr_sales_item AFTER INSERT OR UPDATE OR DELETE ON item FOR EACH ROW EXECUTE PROCEDURE tr_penjualan_item();
Berikut hasil dari trigger diatas:
Pertama kita insert data ke tabel-tabel tersebut:
INSERT INTO penjualan (no_penjualan, tgl_penjualan, kd_customer, total_penjualan) values ('P0001','2014-01-01',0)
INSERT INTO penjualan_item (id_penjualan, kd_item, quantity, harga) values (1,'I001',2,10000)

Setelah terjadi perubahan pada tabel penjualan_item, maka trigger tr_sales_item akan secara otomatis berjalan dan mengeksekusi function tr_penjualan_item(), karena nilai awal dari total penjualan adala 0, maka nilai total_penjualan setelah terjadi perubahan pada table penjualan_item adalah 0 + (10000*2) = 20000.


Baiklah sekian tentang Trigger di PostgreSQL, Terima Kasih...

Membuat Replikasi Database Pada MySQL

Setelah melewati hari-hari yang melelahkan, akhirnya berhasil juga membuat replikasi MySQL. Sebelummya kita akan mengenal sekilas tentang replikasi terlebih dahulu. Replikasi adalah sebuah teknik untuk melakukan copy dan pendistribusian data dan objek-objek database dari satu database ke database lain dan melaksanakan sinkronisasi antara database sehingga konsistensi data dapat terjamin.
 
Langkah-langkah replikasi:
 
1. Pastikan antara komputer Master dengan Komputer Slave telah terhubung jaringan.
Tes koneksi antara dua komputer tersebut dengan melakukan ping pada command prompt pada kedua komputer.

Pada Master :


 


Pada Slave :


 

2. Buatlah Database dengan struktur dan isi table yang sama, (pada komputer Master maupun pada komputer Slave).



 
3. Lakukan konfigurasi pada komputer Server 1 (Master) terlebih dahulu.
Ketik di command prompt:
mysql>  GRANT REPLICATION SLAVE ON *.* TO  ‘<nama user>’@’<IP slave>’ IDENTIFIED BY ‘<password user>’;
mysql>  FLUSH PRIVILEGES;
4. Masukkan ke directory C:/xampp/mysql/bin/my.cnf



Edit dengan notepad, cari [mysqld] tambahkan code di bawah ini:
server-id = 1
log-bin = C:\xampp\mysql\mysql-bin.log
binlog-do-db = varios_db



Jika sudah selesai simpan file konfigurasi MySQL. Lalu restart service MySQL.
5. Pada command prompt ketik :

mysql> RESET MASTER;
 
 
mysql> SHOW MASTER STATUS;
 
 

6. Selanjutnya, lakukan konfigurasi pada komputer Server 2 (Slave).
Masuklah ke directory C:/xampp/mysql/bin/my.cnf



Edit dengan notepad, cari [mysqld] tambahkan code di bawah ini:
server-id = 2
master-host = 192.168.10.26
master-user = slave
master-password = slave
master-connect-retry = 60
replicate-do-db = varios_db




jika sudah selesai simpan, lalu restart service MySQL.


7. Lakukan aktivasi replikasi, dengan masuk ke terminal Slave. Ketikkan kode berikut ini:
mysql> SLAVE STOP;
mysql> CHANGE MASTER TO MASTER_HOST='192.168.10.26',MASTER_USER='slave', MASTER_PASSWORD='slave', MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=106;

mysql> START SLAVE;

mysql> SHOW SLAVE STATUS\G







Jika status menunjukan seperti gambar di atas artinya  aktivasi replikasi di slave berhasil dan berjalan dengan baik.
Untuk mencoba replikasi, lakukan perubahan data di salah satu tabel pada database yang ada di MASTER. Lalu Refresh database di SLAVE, maka data yang ada di tabel SLAVE juga otomatis akan berubah sama dengan yang di MASTER.

Membuat Aplikasi Peta GIS dengan Google Maps API

Nah, kali ini saya akan membagikan sebuah aplikasi peta GIS Sederhana dengan memanfaatkan Google Map API. Tepatnya tadi siang, ketika mengerjakan sebuah project agency travel dimana si klien minta dimasukkan layanan peta google. Tidak terlalu sulit memang untuk memasukkan layanan peta google ke halaman web, tinggal daftarkan nama web kita, dan kita akan mendapatkan API key dari google. Jika bermain-main dengan peta google ini, saya jadi ingat dengan layanan peta google yang hadir lebih dulu, yaitu Google Earth. Dengan aplikasi ini, kita bisa melihat peta secara 3 dimensi dan enaknya lagi kita bisa menandai beberapa tempat strategis dengan fungsi mark yang terdapat di aplikasi tersebut. “Kelemahannya apa?”. Yaw aplikasi ini harus diinstalkan di komputer kita masing-masing dan lumayan boros resources. Sehingga kurang cocok untuk perangkat mobile/bergerak yang lagi booming akhir-akhir ini. Maka dari itu saya punya ide untuk membuat aplikasi peta sederhana yang bisa diakses via browser, dan ada fitur untuk menandai tempat-tempat strategis dimana koordinat tempat-tempat tersebut kita simpan ke dalam database.

Saya menggunakan bantuan jQuery untuk menyimpan dan menghapus koordinat yang terdapat di dalam database via AJAX. Logikanya cukup mudah, pertama-tama tampilkan peta dengan fungsi berikut
function loadDataLokasiTersimpan(){
('#kordinattersimpan').load('tampilkan_lokasi_tersimpan.php');
}
setInterval (loadDataLokasiTersimpan, 3000);
   
function peta_awal(){
loadDataLokasiTersimpan();
var settingpeta = {
zoom: 10,
center: koorAwal,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
peta = new google.maps.Map(document.getElementById("kanvaspeta"),settingpeta);
google.maps.event.addListener(peta,'click',function(event){
tandai(event.latLng);
});
}
Jika ingin menampilkan koordinat peta yang tersimpan di dalam database, bisa menggunakan fungsi di bawah ini :
function carikordinat(lokasi){
var settingpeta = {
zoom: 10,
center: lokasi,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
peta = new google.maps.Map(document.getElementById("kanvaspeta"),settingpeta);
tanda = new google.maps.Marker({
position: lokasi,
map: peta
});
google.maps.event.addListener(tanda, 'click', function() {
infowindow.open(peta,tanda);
});
google.maps.event.addListener(peta,'click',function(event){
tandai(event.latLng);
});
}
Dan yang terakhir, kita akan membuat sebuah penanda/marker tempat-tempat yang menurut kita strategis. Untuk menandai, kita bisa menggunakan fungsi di bawah ini :
function tandai(lokasi){
$("#koorX").val(lokasi.lat());
$("#koorY").val(lokasi.lng());
tanda = new google.maps.Marker({
position: lokasi,
map: peta
});
}
Nah, sekian dulu postingan saya ini. Kalau ada pertanyaan, silahkan komentar di bawah postingan ini. Semoga bisa bermanfaat untuk rekan-rekan yang kebetulan sedang belajar Google Map API.

Happy Blogging and Keep Coding

Download disini

Rangkuman Praktikum SMBD Part II

Tabel dengan PRIMARY KEY
Untuk menjadikan filed kunci agar tidak terjadi duplikasi data
mysql> create table t_pegawai(id_mhs varchar(12) primary key, nama_peg varchar(50), alamat_peg varchar(50));
Table dengan nilai UNIQUE
Memberikan batasan bahwa nilai dalam sebuah kolom  harus distinct (atau tidak ada  data yang nilainya  sama)
mysql> create table t_parkir(id_parkir varchar(5) primary key, plat_no varchar(12), merk varchar(10), UNIQUE(plat_no));
Parameter IF NOT EXISTS
Untuk  mengecek apakah sebuah tabel dengan nama yang  sama sudah ada  atau belum sebelum membuat tabel
mysql> create table IF NOT EXISTS t_pegawai(id_peg varchar(8) primary key, nama_peg varchar(50), alamat_peg varchar(50));
Menyalin tabel dengan statement SELECT
Kita juga bisa membuat tabel baru dengan mengkopy isi dari tabel yang sudah ada, caranya
Pastikan kita sudah punya tabel yang sudah ada isinya.
mysql> create table t_parkir_copy as select*from t_parkir;
Membuat TEMPORARY TABLE
Temporary table adalah pembuatan table secara temporary atau sementara, jadi tabel tersebut akan ada sewaktu kita buat hingga kita mematikan SQL kita.
Sebagai contoh kita akan membuat tabel t_temporary
mysql> create temporary table t_temporary(id int(8));
Tabel dengan FOREIGN KEY
Satu atau beberapa kolom pada table yang merupakan primary key pada table satu namun diletakan pada table dimana tablenya berelasi dengan table dirinya
Misal kita punya  dua tabel yang saling berkaitan contoh :
tabel induk        : t_mobil dengan field(id_mobil, type)
tabel anak          : t_stok dengan field(id_stok, id_mobil, stok)
Kita buat dulu tabel induknya :
mysql> create table t_mobil(id_mobil varchar(8) primary key, type varchar(20));
mysql> desc t_mobil;
Buat tabel anak :
mysql> create table t_stok(id_stok varchar(8) primary key, id_mobil varchar(8), stok int(5), foreign key(id_mobil) references t_mobil(id_mobil));
Menambah Kolom pada Tabel
Dalam menambah kolom dalam tabel kita bisa menggunakan perintah alter table, contohnya kita akan menambahkan kolom pada tabel t_mobil :
mysql> alter table t_mobil add harga bigint(11);
Modifikasi Nama Tabel
Dalam memodifikasi definisi tabel contohnya jika kita ingin mengganti definisi dari t_mobil maka caranya :
mysql> alter table t_mobil rename to t_car;
Modifikasi Definisi Tabel
Dalam memodifikasi definisi tabel contohnya jika kita ingin mengganti definisi dari t_car maka caranya :
mysql> alter table t_car modify type varchar(15), modify series varchar(10);
Mengganti Nama KolomDalam memodifikasi nama kolom contohnya jika kita ingin mengganti nama kolom dari t_car maka caranya :
mysql> alter table t_car change harga harga_mobil bigint(11);
Menghapus Kolom
Cara untuk menghapus kolom dengan perintah ALTER TABLE adalah sbb, misal kita akan menghapus salah satu kolom di t_car, maka caranya :
mysql> alter table t_car drop harga_mobil;
Menghapus & Menambah Primary Key
Cara untuk menghapus & menambah primary key dengan perintah ALTER TABLE adalah sbb, misal kita akan menghapus & menambah primary key di suatu table, maka caranya :

Hapus primary key: mysql> alter table t_pegawai drop primary key;

Tambah primary key: mysql> alter table t_pegawai add primary key (id_peg);
Menghapus Semua Data dalam Tabel
Untuk menghapus seluruh isi dalam tabel menggunakan perintah TRUNCATE
Misal kita akan menghapus seluruh table dari tabel t_parkir_copy maka sytxnya sbb       
mysql> truncate table t_parkir_copy;
Mengubah data menggunakan UPDATE
Mengubah data dalam suatu tabel bisa dilakukan juga tanpa menggunakan perintah ALTER TABLE yaitu menggunakan perintah UPDATE, contohnya
mysql> update t_user set merk_kend='NISSAN' where no_plat='B-3454-SDE';
Mengganti data dari tabel
Kali ini cara mengganti data tabel tapi menggunakan perintah REPLACE, yang membedakan perintah ini dengan yang lain adalah, jika REPLACE digunakan pada tabel yang memiliki PRIMARY KEY atau nilai UNIQUE
mysql> replace into t_parkir( id_parkir, plat_no , merk) values ('11104','BH-36-B','ISUZU');
Menghapus data dari tabel
Menghapus data dalam basisdata bisa menggunakan perintah DELETE,
mysql> delete from t_parkir where id_parkir='11105';

Rangkuman Praktikum SMBD Part III

Mengambil Data dengan SELECT
Perintah select untuk mengambil data sudah sering kita pakai sebelumnya, untuk mengambil seluruh data yang ada di dalam suatu tabel kita bisa menggunakan perintah SELECT * FROM <nama_tabel>
CONTOH :
mysql> select * from pegawai;
 Query menggunakan parameter kondisi WHERE
Statement WHERE disini akan digunakan untuk memfilter atau mengatur kolom dan baris mana yang akan kita munculkan atau kita ambil.
PERINTAH DASAR :
SELECT * FROM <nama_table> WHERE <kondisi>
CONTOH :
mysql> select * from pegawai where jabatan='Staff Junior';

Query data bertipe teks dengan pattern matching
Menampilkan data dengan mencocokan (matching) dengan kondisi yang kita inginkan.
Dengan menggunakan perintah ‘LIKE’ untuk perintah ‘seperti’ dan ‘NOT LIKE’ untuk perintah ‘tidak seperti’ dan beberapa simbol matching yg ada di SQL yaitu ‘_’ dan ‘%’ untuk lebih jelasnya bisa lihat di contoh :
mysql> select nama_peg from pegawai where jabatan like 'M______';
Pada perintah diatas menunjukkan bahwa data yang diminta adalah data yang memuat Jabatan berawalan M dan berjumlah 7 huruf.
mysql> select nama_peg from pegawai where jabatan like 'M%';

Perintah di atas menunjukkan data yang diminta adalah data nama pegawai yang jabatannya berawalan huruf ‘M’
 mysql> select nama_peg from pegawai where alamat_peg like '%A';
 Perintah di atas menunjukkan data yang diminta adalah data nama pegawai yang alamatnya berakhiran huruf ‘A’

Membatasi hasil query dengan LIMIT

Perintah LIMIT ini akan membatasi jumlah data yang akan kita tampilkan.
mysql> select * from pegawai LIMIT 5;
Mengelompokkan hasil query menggunakan GROUP BY
Penampilan data dikelompokkan dengan GROUP BY, data yang ditampilkan adalah dta pertama dari kolom yang ditunjuk sebagai parameter GROP BY.
CONTOH :
mysql> select * from pegawai GROUP BY gaji;
Mendapatkan jumlah anggota setiap kelompok menggunakan COUNT
Perintah COUNT() ini berkaitan dengan perintah GROUP BY, yaitu untuk mengetahui jumlah dari anggota GROUP, untuk lebih jelasnya bisa melihat contoh :
mysql> select gaji, count(*) FROM pegawai GROUP BY gaji;
Parameter kondisional dengan HAVING
Penggunaan HAVING sangat mirip dengan penggunaan WHERE contoh :
mysql> select * from pegawai HAVING gaji > 6000000;
Mengurutkan hasil query menggunakan ORDER BY
Perintah ORDER BY adalah perintah untuk mengurutkan tabel secara ASC atau DESC,
CONTOH :
mysql> select * from pegawai ORDER BY nama_peg;
Cross JoinOperasi tabel yang pertama adalah cross join atau disebut juga sebagai Cartesian join. Pada cross join,  semua data dalam tabel yang pertama dipasangkan dengan semua data pada tabel yang kedua. Berikut  adalah contohnya
mysql> select * from pegawai_join, jabatan;
Equi-Join atau Inner Join
Inner  join menggabungkan tabel  dengan membandingkan nilai  yang sama antara dua buah kolom.  Kolom yang dibandingkan dapat kita spesifikasikan.
mysql> SELECT * FROM pegawai, jabatan WHERE pegawai.jabatan = jabatan. nama_jabatan;
Natural Join
Natural  join sebenarnya mirip dengan INNER JOIN.  Namun kita tidak perlu menspesifikasikan kolom mana yang ingin kita bandingkan. Secara automatis, MySQL akan mencari kolom pada dua buah tabel yang memiliki nilai yang sama dan membandingkannya. Sebagai contoh, untuk tabel pegawai_join dan jabatan, yang dibandingkan adalah kolom id_jabatan yang ada di keduanya.
mysql> select * from pegawai_join NATUR AL JOIN jabatan;
Left Join dan Right Join
Left join dan right join digunakan untuk menghindari data yang hilang karena mungkin ada data yang belum direferensi  oleh tabel  yang lain.
mysql> select * from jabatan t1 LEFT JOIN pegawai_join t2 ON t1.id_jabatan = t2. id_jabatan;
mysql> select * from pegawai_join t1 RIGHT JOIN jabatan t2 ON t1.id_jabatan = t2.id_jabatan;

Rangkuman Praktikum SMBD Part IV

TRIGGER
Trigger adalah sebuah objek database yang diasosiasikan dengan sebuah tabel. Trigger diaktifkan ketika sebuah event terjadi pada tabel yang diasosiasikan. Tabel yang diasosiasikan dengan trigger haruslah sebuah tabel yang permanen dan bukan temporary tabel.

Membuat Trigger
Trigger bisa dibuat dengan syntax sbb :

CREATE TRIGGER <trigger_name> <trigger_time> <trigger_event> ON <table> FOR EACH ROW <trigger_body statements>

Pada sintaks di atas, trigger_name adalah nama dari trigger yang akan kita buat.

Trigger_time adalah saat aktivasi trigger. Parameter trigger_time dapat berisi BEFORE atau AFTER, yang menandakan apakah aktivasi trigger dilakukan sebelum atau sesudah terjadi perubahan pada tabel.

Trigger_event menunjukkan jenis statement yang mengaktifkan trigger.

Trigger_event dapat didefinisikan sebagai salah satu dari:
  • INSERT: trigger diaktifkan ketika sebuah baris baru ditambahkan ke tabel, sebagai contoh melalui statement INSERT, LOAD DATA, atau REPLACE.UPDATE: trigger diaktifkan ketika sebuah baris dimodifikasi, sebagai contoh melalui statement UPDATE.
  • DELETE: trigger diaktifkan ketika sebuah baris dihapus, melalui statement DELETE dan REPLACE. Namun demikian, DROP TABLE dan TRUNCATE TABLE tidak mengaktifkan trigger DELETE
  • Tidak boleh ada dua buah trigger yang sama pada sebuah tabel yang memiliki trigger_time dan trigger_event yang sama. Sebagai contoh, kita tidak dapat membuat dua buah BEFORE UPDATE trigger pada satu buah tabel yang sama, namun kita dapat membuat trigger BEFORE UPDATE dan AFTER UPDATE untuk satu tabel yang sama.

Trigger_body merupakan definisi statement yang dijalankan ketika sebuah trigger diaktifkan. Jika ada beberapa statement yang ingin dijalankan, statement-statement tersebut dapat didefinisikan di antara BEGIN … AND.

Keyword OLD dan NEW dapat digunakan untuk mereferensi nilai sebelum dan sesudah trigger dilakukan. Sebagai contoh OLD.nama_kolom menunjukkan nilai kolom sebelum data tersebut dihapus atau diupdate, sedangkan NEW.nama_kolom menunjukkan nilai kolom sebuah data yang akan dimasukkan atau nilai kolom data setelah diupdate.

BEFORE TRIGGER
Berikut adalah contoh trigger yang dijalankan sebelum data dimasukkan ke dalam sebuah tabel.
mysql> DELIMITER (spasi)#
mysql> CREATE TRIGGER sebelum_insert BEFORE INSERT ON pegawai FOR EACH ROW
BEGIN
IF NEW.gaji IS NULL OR NEW.gaji = 0
THEN
SET NEW.gaji = 500000;
ELSE
SET NEW.gaji = NEW.gaji + 100000;
END IF;
END #
Query OK, 0 rows affected (0.23 sec)
Mysql> DELIMITER(spasi);

Dalam TRIGGER diatas adalah salah satu contoh trigger yang akan dijalankan sebelum sebuah even dipanggil (BEFORE INSERT). Dalam trigger ini akan mengganti nilaigaji jika gaji yang di-INSERT-kan bernilai NULL atau 0 dan akan menambahkan nilai 100rb jika kita masukkan selain NULL dan 0.

Namun demikian, kita tidak dapat mengupdate tabel yang sama dengan tabel yang diasosiasikan dengan trigger menggunakan trigger.
Mysql> DELIMITER #
mysql> CREATE TRIGGER before_update BEFORE UPDATE ON pegawai FOR EACH ROW BEGIN
UPDATE pegawai SET gaji=gaji+(NEW.gaji - OLD.gaji) WHERE nip=NEW.nip;
END #
Query OK, 0 rows affected (0.03 sec)
mysql> DELIMITER ;
mysql> UPDATE pegawai SET gaji = 2000000 WHERE nip="PEG-1017";
ERROR 1442 (HY000): Can't update table 'pegawai' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

AFTER TRIGGER
Berikut adalah contoh trigger yang dijalankan setelah update dilakukan terhadap tabel
Untuk mencobanya kita buat dulu table pencatat, nanti di table pencatat ini akan kita buat syntax untuk mencatat perubahan yang terjadi.
mysql> create table pencatat(catatan varchar(50));
Query OK, 0 rows affected (0.48 sec)
mysql> delimiter #
mysql> CREATE TRIGGER trigger_cat AFTER UPDATE ON pegawai FOR EACH ROW
BEGIN
INSERT INTO pencatat
VALUES(concat('akun ',NEW.nip,' dari ',OLD.gaji, ' to ',NEW.gaji));
END
#
Query OK, 0 rows affected (0.17 sec)
mysql> delimiter ;
TRIGGER diatas akan dieksekusi setelah perintah UPADATE dijalankan.

Melihat dan Menghapus Trigger yang Sudah Dibuat

Untuk melihat TRIGGER kita bisa menggunakan syntax
mysql> show triggers in lab4;
mysql> drop trigger before_update;

Rangkuman Praktikum SMBD Part V







Fuction
Sebuah function dapat digunakan secara langsung dalam statement SELECT, UPDATE, dan DELETE. Hasil dari function dapat dikembalikan sebagai output. Sebuah function hanya dapat mengembalikan sebuah nilai saja.

Membuat fuction
mysql> delimiter //

mysql> create function nama_lengkap(in_nama_depan varchar(15), in_nama_belakang varchar(15))

-> returns varchar(35)

-> begin

-> return concat(in_nama_depan,' ',in_nama_belakang);

-> end //

Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;

Melihat fuction yang telah dibuat
Function apa saja yang telah kita buat dapat dilihat menggunakan statement SHOW FUNCTION STATUS.

mysql> show function status;

Menghapus functionFunction yang telah dibuat dapat dihapus menggunakan DROP FUNCTION nama_function.

mysql> DROP FUNCTION full_name;

Query OK, 0 rows affected (0.00 sec)

mysql> SHOW FUNCTION STATUS;

Empty set (0.00 sec)

Procedure
Procedure dapat berisi statement SQL (INSERT, UPDATE, DELETE, SELECT) atau operasi lain yang disimpan dalam database. Sebuah procedure dapat dipanggil menggunakan statement CALL nama_procedure disertai parameter yang diperlukan.

Membuat procedure
sintaks untuk membuat procedure adalah sebagai berikut;
CREATE PROCEDURE nama_procedure (parameter_procedure())routine_body

Berikut contoh pembuatan procedure:

mysql> delimiter //

mysql> create procedure show_pekerja()

-> begin

-> select*from pekerja;

-> end //

Query OK, 0 rows affected (0.00 sec)

mysql> call show_pekerja ();

Parameter dalam procedure
Procedure menerima parameter (proc_parameter) yang didefinisikan sebagai berikut: proc_parameter:[ IN | OUT | INOUT ] param_name type

Dalam parameter procedure, didefinisikan jenis parameter, yaitu IN, OUT, atau INOUT. Bila tidak dispesifikasikan saat pembuatan, maka default jenis parameter yang dipilih adalah IN.

· Parameter IN mengirimkan sebuah nilai ke dalam procedure. Procedure bisa saja merubah nilai parameter ini, namun perubahan tersebut tidak visibel terhadap pemanggil procedure ketika procedure tersebut selesai.

· Parameter OUT mengirimkan nilai dari procedure ke pemanggil. Nilai inisial dari parameter ini adalah NULL dan nilainya visibel terhadap pemanggil.

· Parameter INOUT diinisialisasi oleh pemanggil, dapat dimodifikasi oleh procedure, dan perubahan nilai parameter visibel terhadap pemanggil ketika procedure selesai.

Parameter IN
Berikut adalah contoh penggunaan parameter IN:

mysql> delimiter $

mysql> create procedure getPekerjaByAlamat (in namaAlamat varchar(255))

-> begin

-> select*from pekerja where alamat LIKE namaAlamat;

-> end $

mysql> delimiter ;

Pada contoh di atas, dibuat procedure getPekerjaByAlamat dengan satu parameter masukan berjenis IN bernama namaAlamat. Procedure ini digunakan untuk menampilkan data pada tabel pekerja dengan nama kota sesuai parameter masukan. Pemanggilan procedure ini dapat dilihat pada contoh di bawah ini. Pada contoh ini, kita memasukkan Sleman” sebagai parameter masukan procedure.

mysql> call getPekerjaByAlamat("Sleman");

Parameter OUT
Berikut adalah contoh penggunaan parameter OUT;

mysql> delimiter :)

mysql> create procedure getNumPekerja (out numPekerja int)

-> begin

-> select count(*) into numPekerja from pekerja;

-> end :)

Query OK, 0 rows affected (0.02 sec)

mysql> delimiter ;

Pada contoh di atas, dibuat procedure untuk menampilkan jumlah pekerja dalam tabel. Hasil query tersebut disimpan dalam variabel numPekerja dengan statement INTO numPekerja. Pemanggilan pekerja dengan parameter OUT dilakukan dengan menggunakan variabel session yang diawali dengan karakter @. Pemanggilan procedure getNumPekerja ditunjukkan sebagai berikut:

mysql> call getNumPekerja(@num);

Parameter INOUT
Berikut adalah contoh penggunaan parameter INOUT:

mysql> delimiter ^^

mysql> create procedure increase(inout number int)

-> begin

-> set number = number + 15;

-> end ^^

Query OK, 0 rows affected (0.04 sec)

mysql> delimiter ;

Pada contoh di atas, kita membuat procedure increase untuk menambahkan input dengan nilai 15. Memodifikasi nilai parameter input dilakukan dengan menggunakan SET. Contoh berikut memperlihatkan bagaimana memanggil procedure increase. Kita mendefinisikan terlebih dahulu variabel session @num dengan nilai 100. Kemudian setelah pemanggilan increase, nilai @num menjadi 115.

mysql> set @num = 100;

Query OK, 0 rows affected (0.00 sec)

mysql> call increase(@num);

Query OK, 0 rows affected (0.00 sec)

mysql> select @num;

Melihat procedure yang telah dibuat
Procedure yang telah kita buat dapat dilihat menggunakan statement SHOW PROCEDURE STATUS sebagai berikut:

mysql> show procedure status;

Menghapus procedure
Procedure yang telah kita buat dapat dihapus menggunakan DROP PROCEDURE.

Mysql> DROP PROCEDURE increaseGaji;

Procedure Input Data
mysql> create table hoho( nama varchar(10), alamat varchar(10));

Query OK, 0 rows affected (0.13 sec)

mysql> delimiter #

mysql> create procedure isi( in nama varchar(10), alamat varchar(10))

-> begin

-> insert into hoho values(nama, alamat);

-> end #

Query OK, 0 rows affected (0.02 sec)

call isi("Didi","Sleman");

call isi("Fera","Abarawa");

call isi("Rara","Jogja");

Procedure Hapus Data

mysql> delimiter #

mysql> create procedure hapus_data(in par_nama varchar(10))

-> begin

-> delete from hoho where nama=par_nama;

-> end#

Query OK, 0 rows affected (0.00 sec)

Mysql> delimiter ;

Call hapus_data(“Didi”);

Rangkuman Pratikum SMBD Part I

Minggu ini sudah diajarkan beberapa contoh untuk membuat database, melihat database yang sudah kita buat sebelumnya, memakai database yang sudah kita buat sebelumya, membuat tabel baru, melihat hasil tabel yang sudah kita buat sebelumnya, memasukkan data kedalam tabel dan menghapus tabel dan database.

Membuat database
CREATE DATABASE(spasi)NAMA_DATABASE;
Contoh : mysql> create : database t_mhs;
Query OK, 1 row affected (0.09 sec)

Melihat hasil database yang sudah kita buat sebelumnya
SHOW DATABASES;
Memakai database yang sudah kita buat sebelumnya
USE(spasi)NAMA_DATABASE;
Contoh : mysql> use t_mhs;
Database changed
Membuat table baru 
CREATE TABLE NAMA_TABEL(Nama_Kolom1(spasi)tipe_data(ukuran),Nama_Kolom2(spasi)tipe_data(ukuran),Nama_Kolom3(spasi)tipe_data(ukuran),Nama_Kolom4(spasi)tipe_data(ukuran));
Contoh : mysql> create table t_mhs(nim varchar(10), nama_mhs  varchar(50), alamat varchar(50), no_telp varchar(12));
Query OK, 0 rows affected (0.16 sec)
Melihat hasil table yang sudah kita buat sebelumnya
DESC(spasi)NAMA_TABEL;
Menginputkan data ke dalam tabel menggunakan perintah INSERT
mysql >INSERT(spasi)INTO(spasi)NAMA_TABEL(spasi)VALUES(’DATA_KOLOM1’, ’DATA_KOLOM2’, ’DATA_KOLOM3’, ’DATA_KOLOM4’);
Contoh: mysql> insert into t_mhs values( '111051357', 'adi', 'Sleman','085785367478');
Query OK, 1 row affected (0.05 sec)
mysql> insert into t_mhs values( '111077857', 'benny', 'Semarang','085738907478');
Query OK, 2 row affected (0.05 sec)
mysql> insert into t_mhs values( '111078357', 'dewi', 'surabaya','085785367478');
Query OK, 3 row affected (0.05 sec)
mysql> insert into t_mhs values( '111090357', 'aries', 'bali','085785367478');
Query OK, 4 row affected (0.05 sec)
mysql> insert into t_mhs values( '111023357', 'hendra', 'jogja','085785367478');
Query OK, 5 row affected (0.05 sec)
Menginputkan data ke dalam tabel menggunakan LOAD DATA
Persiapkan file yang berisi data yang akan diinputkan ke tabel di database kita, sesuai dengan urutan yg kita buat di MYSQL. Simpan dengan format .txt
Contoh : (dibuat di MS.EXEL dan disimpan dengan nama data.txt = format TEXT(MS-DOS) )

111051358  surya     Sleman  085789367478

111077859  bowo      Sleman  085739907478

111078352  dyah     Sleman  085785067478

111090351  andi     Sleman  085785967478

111023354  agung   Sleman  085785667478
LOAD(spasi)DATA(spasi)LOCAL(spasi)INFILE(spasi) ’LOKASI-FILE’(spasi) INTO(spasi)
TABLE(spasi) NAMA_TABEL
Contoh : mysql> load data local infile 'D://km1/data.txt' into table t_mhs;
Query OK, 5 rows affected (0.03 sec)
Records: 5  Deleted: 0  Skipped: 0  Warnings: 0
Menghapus table
Buat dulu table baru
mysql> create table mat_kul(id_matkul varchar(10), nama_matkul varchar(50), sks int(1), semester int(1), dosen varchar(10));
Query OK, 0 rows affected (0.02 sec)
mysql> desc mat_kul;
Lihat tabel yang ada
mysql> show tables;
Hapus TABEL
DROP(spasi)TABLE(spasi)NAMA_TABEL
mysql> drop table mat_kul;
Query OK, 0 rows affected (0.02 sec)
Buat database baru
mysql> create database coba;
Lihat database yang ada
mysql> show databases;
Hapus database 
mysql> drop database coba;

Sistem Informasi Reservasi Hotel


Posting kali ini saya akan membahas tentang tugas terakhir saya pada mata kuliah SMBD (akhirnya...:D). Pada tugas ini, saya membuat sistem informasi reservasi hotel dengan menggunakan PHP dan database MySQL. Langsung saja saya tampilkan printscreen dari sistem reservasi hotel yang saya buat.

Berikut adalah tampilan form reservasi, Form reservasi diatas terdiri dari data pemesan, data kamar, dan lama tinggal.


 
Selanjutnya dengan menekan tombol kirim pada form reservasi, maka otomatis data kamar, tamu, dan lama tinggal akan disimpan pada database. Setelah selesai mengisi form reservasi pengunjung akan diberitahukan bahwa proses reservasi sudah berhasil, seperti berikut:


Selanjutnya berikut ini adalah halaman login admin, 


Ini adalah halaman list kamar, pada halaman ini admin dapat melakukan proses tambah data kamar, edit data kamar, dan hapus data kamar.


Kemudian ini adalah halaman daftar order/daftar booking kamar. Pada halaman ini admin dapat melakukan proses checkin dengan menekan tombol kunci pada kolom action.






Setelah memilih tombol kunci tadi, maka admin akan dialihkan ke halaman aktivasi checkin. Pada halaman checkin ini admin diharuskan memilih kamar yang dipesan sesuai dengan jumlah kamar pada saat tamu booking.


Setelah proses checkin selesai, maka admin dapat melihat daftar checkin, pada halaman list checkin, seperti berikut. Pada halaman ini admin juga dapat melakukan proses hapus, dan checkout, selain itu admin juga dapat melihat detail checkin.






Halaman Detail checkin.




Kemudian apabila tamu sudah selesai menginap, maka dilakukan proses checkout. Proses checkout dapat dilakukan dengan memilih tombol checkout pada halaman list checkin. Setelah memilih tombol checkout, maka admin akan dialihkan ke halaman checkout. 


Proses checkout akan dilakukan seletah memilih tombol checkout pada halaman checkout seperti diatas.


Daftar checkout tadi dapat dilihat pada halaman list checkout, seperti berikut:





Dan berikut adalah halaman detail checkout.

Download:
PHP
Database

Sekian dan terima nasi kasi..


UPDATE : File PHP sudah saya ubah dengan menggunakan koneksi mysqli, mengingat XAMPP versi 7 keatas sudah harus menggunakan mysqli. 
Program sudah berjalan dengan baik, mohon maaf apabila lama tidak pernah update blog, karena kesibukan dalam bekerja :)) 
semoga bermanfaat