Showing posts with label Belajar SQL. Show all posts
Showing posts with label Belajar SQL. Show all posts

Tuesday, 17 June 2014

Belajar Stored Procedure dan Trigger

Met siang guys, oke pada kesempatan kali ini saya akan menjelaskan sedikit tentang Stored Procedure dan Trigger. Apa sih Stored Procedure dan Trigger itu? Pengin tau? Simak aja artikel ini guys, moga bisa membantu.


Stored Procedure
Definisi
Stored procedure adalah prosedur (spt subprogram dalam bhs pemrograman) yang disimpan di dalam database.

MySQL mendukung dua jenis “rutin” (subprogram):
· Stored procedure yang dapat dipanggil,
· Fungsi yang menghasilkan nilai yang dapat dipakai dalam statemen SQL lain.


Mengapa Strored Procedure?Dengan stored procedure maka eksekusi menjadi cepat. Tidak ada kompilasi. Peningkatan kecepatan datang dari reduksi lalu-lintas jaringan. Jika ada pekerjaan pengecekan berulang, looping, multiple statement, dikerjakan dengan pemanggilan tunggal ke prosedur yang telah disimpan ke server.

Stored procedure adalah komponen. Andaikan aplikasi kemudian ditulis dalam bahasa berbeda, tidak ada masalah, karena logika berada didalam database bukan dalam aplikasi.




Trigger

Definisi
Trigger adalah blok PL/SQL atau prosedur yang berhubungan dengan table, view, skema atau database yang dijalankan secara implicit pada saat terjadi sebuah event. Trigger merupakan store procedure yang dijalankan secara automatis saat user melakukan modifikasi data pada tabel. Modifikasi data yang dilakukan pada tabel yaitu berupa perintah INSERT, UPDATE, dan DELETE. INSERT , UPDATE dan DELETE bisa digabung jadi satu trigger yang dinamakan Multiple Trigger.


Tipe dari trigger adalah:
· Application trigger: diaktifkan pada saat terjadi event yang berhubungan dengan sebuah aplikasi
· Database trigger   : diaktifkan pada saat terjadi event yang berhubungan dengan data (seperti operasi DML) atau event yang berhubungan dengan sistem (semisal logon atau shutdown) yang terjadi pada sebuah skema atau database.

Trigger perlu dibuat pada saat:
· Membentuk sebuah aksi tertentu terhadap suatu event
· Memusatkan operasi global

Trigger tidak perlu dibuat, jika:
· Fungsionalitas yang diperlukan suatu ada pada Oracle server
· Duplikat atau sama dengan fungsi trigger yang lain.

Sintak penulisan dari database trigger, berisi komponen berikut :
1. Trigger timing :
    a. Untuk tabel : BEFORE, AFTER
    b. Untuk view : INSTEAD OF
2. Trigger event : INSERT, UPDATE atau DELETE
3. Nama tabel : yaitu nama tabel atau view yang berhubungan dengan trigger
4. Tipe trigger : Baris atau Pernyataan (statement)
5. klausa WHEN : untuk kondisi pembatasan
6. trigger body : bagian prosedur yang dituliskan pada trigger

Trigger timing adalah waktu kapan trigger diaktifkan. Ada tiga macam trigger timing, yaitu:
· BEFORE       : trigger dijalankan sebelum DML event pada tabel
· AFTER         : trigger dijalankan setelah DML event pada tabel
· INSTEAD OF : trigger dijalankan pada sebuah view.

Trigger event ada 3 kemungkinan : INSERT, UPDATE atau DELETE.
Pada saat trigger event UPDATE, kita dapat memasukkan daftar kolom untuk mengidentifikasi kolom mana yang berubah untuk mengaktifkan sebuah trigger (contoh : UPDATE OF salary ... ). Jika tidak ditentukan, maka perubahannya akan berlaku untuk semua kolom pada semua baris.

Tipe trigger ada 2 macam, yaitu :
· Statement : trigger dijalankan sekali saja pada saat terjadi sebuah event. Statement trigger juga dijalankan sekali, meskipun tidak ada satupun baris yang                                 dipengaruhi oleh event yang terjadi.
· Row          : trigger dijalankan pada setiap baris yang dipengaruhi oleh terjadinya sebuah event. Row trigger tidak dijalankan jika event dari trigger tidak berpengaruh pada satu baris pun.

Trigger sering digunakan, antara lain untuk:
· Melakukan update data otomatis jika terjadi perubahan. Contohnya adalah dalam sistem penjualan, jika dientri barang baru maka stock akan bertambah secara otomatis.
· Trigger dapat digunakan untuk mengimplementasikan suatu sistem log. Setiap terjadi perubahan, secara otomatis akan menyimpan ke tabel log.
· Trigger dapat digunakan untuk melakukan validasi dan verifikasi data sebelum data tersebut disimpan.

Berikut ini bentuk umum perintah untuk membuat triggers:
CREATE TRIGGER name
[BEFORE|AFTER] [INSERT|UPDATE|DELETE]
ON tablename
FOR EACH ROW statement

Keterangan dari bentuk umum perintah membuat trigger:
· name, Nama trigger mengikuti peraturan penamaan variabel / identifier dalam MySQL
· [BEFORE | AFTER] digunakan untuk menentukan kapan proses secara otomatis akan dieksekusi, sebelum atau sesudah proses.
· [INSERT | UPDATE | DELETE] digunakan untuk menentukan event (proses) yang dijadikan trigger (pemicu) untuk menjalankan perintah-perintah di dalam triggers.
· tablename, merupakan nama tabel dimana trigger berada.
· statement, merupakan sekumpulan perintah atau query yang akan secara otomatis dijalankan jika event / proses yang didefinisikan sebelumnya aktif.

Untuk menghapus trigger, dapat menggunakan perintah DROP TRIGGER dengan diikuti dengan nama tabel dan nama triggernya. Berikut ini bentuk umum dan contoh perintah untuk menghapus trigger.

Bentuk umum dan contoh menghapus trigger:
DROP TRIGGER tablename.triggername;

Contoh menghapus trigger bernama ‘before_insert’ yang ada di tabel pelanggan.
DROP TRIGGER penjualan.before_insert;




Perbedaan Store Procedure dengan Trigger 

Trigger adalah fitur dari Database Engine MS SQL Server yang berfungsi untuk mengeksekusi query jika tabel mengalami event seperti ketika di tambah, ketika di edit atau ketika salah satu dari data pada tabel itu dihapus.

Stored Procedure juga merupakan salah satu dari fitur Database Engine MS SQL Server yang digunakan untuk mempercepat proses kerja dari pada pengolahan data.

Dimunculkan Prosedur karena jika pada aplikasi mengirimkan query, maka hal tersebut akan membuat network traffic menjadi semakin sibuk dan jika sudah sibuk, maka akan membuat kerja dari pada server makin bertambah.
dengan adanya SP, maka hal – hal seperti Network Traffic yang terlalu sibuk bisa dihindarkan, kemudian dengan menggunakan SP juga bisa membuat proses pengolahan data bisa terkontrol, sebab kita bisa memberikan otorisasi kepada user yang ada di dalam database engine MS SQL Server.
Sebenarnya trigger maupun SP itu bekerja jika dieksekusi.
Bukan berarti karena trigger g secara langsung bekerja, tetap saja awalnya juga butuh eksekusi query tertentu. Jadi Trigger adalah Event pada tabel dan SP adalah untuk mengolah data dari tabel.







Terimakasih telah mampir di blog ini, semoga bermanfaat. Jika anda punya pertanyaan, silahkan tulis pertanyaan Anda di kolom komentar aja. Dan jika Anda ingin mengetahui informasi tentang Stored Procedure dan Trigger lebih lanjut, Anda bisa mendownload file disini guys.

Thursday, 29 May 2014

Belajar CASE

Perintah CASE sering digunakan untuk menampilkan nilai tertentu dari beberapa barisan data dengan syarat-syarat atau kondisi yang kita berikan. Kalau kita belajar bahasa pemrograman tentu kita kenal dengan perintah IF Condition, fungsinya CASE hampir sama. Bedanya perintah CASEdigunakan untuk beberapa kondisi sekaligus, dan didalam SQL perintahCASE tidak bisa berdiri sendiri melainkan harus disisipkan dalam perintahSELECT. Jadi berbeda dengan perintah IF yang lebih bebas, akan tetapi perintah IF hanya berguna apabila dimasukan dalam STORE PROCEDURE,FUNCTION dan TRIGGER. Perbedaannya dalam SQL sangat jelas sekali, karena perintah CASE disisipkan dalam perintah SELECT jadi yang dihasilkan langsung berupa DATASET dan langsung bisa dilihat hasilnya.


Perintah CASE ini mempunyai dua format :
1. Simple Case function :
Maksudnya adalah perintah CASE sederhana. Bentuk Sintaknya:

CASE input_expression
WHEN when_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
]
END


2. Searched CASE function:
Maksudnya perintah CASE ini diikuti dengan syarat kondisi boolean, seperti >, <, >=, <= , dan lain-lain. Sintaknya sebagai berikut:

CASE
WHEN Boolean_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
]
END

Oke langsung aja saya akan memberikan contoh CASE untuk kawan-kawan semua, tentu tujuannya agar Anda bisa lebih paham tentang penggunaan CASE. Berikut adalah syntaknya guys:        


1CREATE DATABASE Northwind
    
    MAKSUD DARI SCRIPT DIATAS:

  • Artinya kita membuat database baru dengan nama “Northwind”. Nama database bisa Anda ganti sesuai keinginan Anda guys.



2.CREATE TABLE products (Products_ID INT(10) PRIMARY KEY      AUTO_INCREMENT, Products_Name VARCHAR(100), UnitsInStock INT(10))

     MAKSUD DARI SCRIPT DIATAS:
·        Artinya kita membuat table baru bernama “Products”.
·        Nah, didalam table tersebut terdapat 3 field, yaitu Products_ID, Products_Name dan UnitsInStock. Terus dibelakang field Products_ID itu kan ada int(10) yaa, maksudnya int(10) itu field Products_ID hanya bisa diisi dengan 10 angka. Lalu kenapa angka? Bukan huruf? Karena type datanya adalah int, bukan varchar atau datetime, dll. Untuk type data yang lebih lengkap, anda bisa melihatnya di link ini guys.
·        Terus di field Products_ID setelah int(10) ada kata PRIMARY KEY, maksudnya field Products_ID ini telah menjadi primary key, yaitu kunci utama/no identitas dalam isi field. Itu artinya inilah yang menjadi pembeda antara isi field satu dengan isi field lain, karena tidak ada yang sama.
·        Lalu setelah perintah “PRIMARY KEY” terdapat perintah “AUTO_INCREMENT”. Maksud perintah AUTO_INCREMENT yaitu akan mengisi data secara otomatis dari primary key tersebut. Misal primary key-nya adalah int(angka), maka akan muncul angka 1,2,3,4,dst secara otomatis tanpa kita menginputnya di script SQL.



3. INSERT INTO products VALUES
('', 'Chai', '39'),
('', 'Chang', '17'),
('', 'Aniseed Syrup', '13'),
('', 'Chef Antons Cajun Seasoning', '53'),
('', 'Chef Antons Gumbo Mix', '0'),
('', 'Grandmas Boysenberry Spread', '120'),
('', 'Uncle Bobs Organic Dried Pears', '15'),
('', 'Northwoods Cranberry Sauce', '6'),
('', 'Mishi Kobe Niku', '29'),
('', 'Ikura', '31'),
('', 'Queso Cabrales', '22'),
('', 'Queso Manchego La Pastora', '86'),
('', 'Konbu', '24'),
('', 'Tofu', '35'),
('', 'Genen Shouyu', '39')

       MAKSUD DARI SCRIPT DIATAS:
·         Perintah  INSERT INTO maksudnya kita akan mengisi data ke field products dengan values/data ('', '(isi terserah Anda )', '(isi terserah Anda)'). Lalu kenapa ada satu field yang tidak di isi?? Kenapa hayoo? Ada yang tahu?? Yups jawabanyya karena itu sudah menjadi primary key, jadi tidak perlu diisi karena nanti akan muncul secara otomatis. Agar lebih jelas mending langsung dicoba aja guys. .


4. SELECT Products_ID, Products_Name, UnitsInStock,
CASE
WHEN UnitsInStock <5 THEN 'Stock Habis'
WHEN UnitsInStock BETWEEN 5 AND 15 THEN 'Harus Order'
ELSE 'Stock Cukup'
END AS Keterangan
FROM Products

       MAKSUD DARI SCRIPT DIATAS:
·        SELECT artinya kita akan memilih data yang akan ditampilkan. Disini saya memilih untuk menampilkan data Products_ID, Products_Name, dan UnitsInStock.
·         CASE artinya “yang mana”
·         WHEN (ketika) UnitsInStock <5 (bacanya kurang dari 5. Jika >5 bacanya lebih dari 5. Jika =5 bacanya sama dengan 5, dll) maka akan muncul tulisan 'Stock Habis', kemudian
·         WHEN (ketika) UnitsInStock BETWEEN (diantara) 5 dan 10 maka akan muncul tulisan 'Harus Order'.
·        ELSE artinya “jika tidak” diantara keduanya maka akan muncul tulisan 'Stock Cukup'.
·         END, itu artinya adalah akhir dari rumus tersebut.
·         Selanjutnya jika kita ingin menampilkan itu semua di kolom baru, kita harus menambahkan AS, lalu setelah AS ada nama kolom baru yang kita inginkan. Disini saya menamakan kolom baru tersebut dengan nama Keterangan.
·         FROM Products artinya kita mengambil data tersebut dari table Products




Oke itu adalah contoh CASE yang pernah saya pelajari guys. Gimana? Ente berhasil menerapkannya dikomputer ente gak? Klo gak berhasil yaa sudah, mungkin Anda kurang beruntung..wkwk #juskid. Klo misalnya belum berhasil silahkan dicoba lagi guys, mungkin syntak yang Anda tulis ada yang salah. Terus buat yang udah berhasil, gue punya soal nih buat kalian…,
1.      Buatlah table baru didalam database Northwind dengan nama table customer. Didalam table tersebut terdapat 3 field, yaitu CustomerID,CompanyName, dan Country. Sedangkan type data untuk semua field tersebut adalah varchar. Masing-masing jumlah inputan untuk field tersebut (secara urut) adalah 10 karakter, 100 karakter dan 50 karakter.
2.      Tambahkan data dibawah ini kedalam teble tersebut.
CustomerID
CompanyName
Country
ALFKI
Alfreds Futterkiste
Germany
ANATR
Ana Trujillo Emparedados y helados
Mexico
ANTON
Antonio Moreno Taqueria
Mexico
AROUT
Around the Horn
UK
BERGS
Berglunds snabbkop
Swedan
BLAUS
Blauer See Delikatessan
Germany
BOTTM
Bottom-Dollar Markets
Canada
BSBEV
Bs Beverages
UK
CACTU
Cactus Comidas para Ilever
Argentina
DRACD
Drachenblut Delikatessan
Germany
DUMON
Du monde entier
France
EASTC
Eastern Connection
UK
GOURL
Gourmet Lanchonetes
Brazil
GREAL
Great Lakes Food Market
USA

3.      Tampilkan nilai customerID, CompanyName dan tambahkan 1 field lagi bernama Negara, dimana Negara yang country-nya adalah UK menjadi “United Kingdoms” dan USA menjadi “United State of America”. Untuk lebih jelasnya lihatlah gambar akhir dari soal tersebut.




Gimana guys, soalnya mudah bukan???hehe. Jika Anda berhasil menyelesaikan soal diatas, saya ucapkan selamat, namun jika Anda belum berhasil, tetaplah berusaha. Anda pasti bisa. Oiyya, buat Anda yang pengin mengintip jawaban dari soal diatas, Anda bisa download filenya disini. Buat Anda yang pengin download file contoh CASE yang sudah saya jelaskan diatas, Anda bisa download file-nya disini.

Sunday, 25 May 2014

Tugas Database Lanjutan

Ini adalah latihan soalnyaa. Download disini.
Nah, ini adalah file Database dengan xampp. Download disini. Trimakasih. . :)

Monday, 19 May 2014

Membuat Database Supermarket menggunakan XAMPP


XAMPPXampp merupakan software yang membantu kita dalam pembuatan database website sekaligus membantu dalam pembuatan website itu sendiri. Kalau di Windows namanya Xampp, tapi Linux namanya Lamp.
Kebetulan (sekali) saya mempunyai blog yang kiranya dapat berguna untuk teman teman dalam pembuatan database, tidak hanya bisa tapi juga tahu caranya. Yuuk langsung aja download contoh database Supermarket yang dibuat menggunakan xampp. Ini link'nya:
Download Contoh Phpmyadmin (Supermarket)