Senin, 19 September 2011

PBD - Stored Procedures, Functions dan Trigger pada SQL Server.

Nama / NIM : Achmad Vierdan Habibi / 10410100218
Dosen : Tan Amelia
Tugas : membuat tulisan tentang materi Stored Procedures, Functions dan Trigger pada SQL Server.


Stored Procedure adalah kumpulan perintah SQL yang diberi nama dan disimpan di server. Stored Procedure biasanya berisi perintah-perintah umum yang berhubungan dengan database pada server, dan menghasilkan sekumpulan record. Stored Procedure ditulis dalam bentuk sebuah script. Dalam SQL Server store procedure memiliki kemampuan antara lain :

  1. Menerima parameter input dan mengembalikan beberapa nilai parameter output dari procedure yang dipanggil.
  2. Mengandung statement pemrograman yang melakukan operasi terhadap database termasuk memanggil store procedure lain.
  3. Memberikan status yang mengindikasikan keberhasilan atau kegagalan eksekusi store procedure
Keuntungan pemakaian store procedure adalah :
  • Merupakan pemrograman modular
  • Store procedure dibuat sekali dan dapat dipakai berulang untuk komputasi yang sama
  • Memungkinkan eksekusi lebih cepat
  • Ketika pertama kali dijalankan store procedure akan tersimpan dalam memori. Sehingga memungkinkan eksekusi berikutnya lebih cepat.
  • Mengurangi trafik jaringan
  • Barisan kode transact SQL yang seharusnya dilewatkan jaringan, akan digantikan dengan statement tunggal pemanggilan store procedure
  • Dapat digunakan sebagai mekanisme sekuriti
  • Pengguna dimungkinkan mengeksekusi Store procedure, walau mungkin tidak dapat mengeksekusi procedure didalamnya secara langsung.
FUNCTION
Function atau fungsi dalam perintah SQL digunakan untuk menghasilkan sebuah nilai atau output. Ada berbagai macam fungsi yang ada pada SQL.

Fungsi Agregasi/Agregates
Fungsi yang dihasilkan dari sebuah group data. 
  • SUM : Untuk menjumlah suatu kolom tertentu yang telah definisikan dalam perintah select.
Sintak :
SELECT SUM (nama_kolom) FROM nama_tabel
[WHERE = Kondisi]
Contoh :
SELECT SUM (SKS) FROM Mata_Kuliah

  • COUNT : Untuk menghitung jumlah baris dalam sebuah tabel.
Sintak :
SELECT COUNT nama_kolom FROM nama_tabel
[WHERE]
Contoh :
SELECT COUNT (*) FROM mahasiswa
SELECT COUNT (SKS) FROM Mata_Kuliah
  • AVG : Untuk menghitung nilai rata – rata dari suatu kolom tertentu yang telah definisikan dalam perintah select
Sintak :
SELECT AVG nama_kolom FROM nama_tabel
[WHERE]
Contoh :
SELECT AVG (SKS) FROM Mata_Kuliah
  • MIN : Untuk mengetahui nilai terkecil dari sebuah kolom tertentu dalam perintah select
Sintak :
SELECT MIN nama_kolom FROM nama_tabel
[WHERE]
Contoh :
SELECT MIN (SKS) FROM Mata_Kuliah
  • MAX : Untuk mengetahui nilai terbesar dari sebuah kolom tertentu dalam perintah select
Sintak :
SELECT MAX nama_kolom FROM nama_tabel
[WHERE]
Contoh :
SELECT MAX (SKS) FROM Mata_Kuliah


Fungsi Waktu

  • GETDATE : Untuk menampilkan tanggal sekarang
Contoh :
SELECT GETDATE()
  • DATEADD : Untuk memambah jumlah hari, tanggal atau tahun yang ditentukan.
Sintak :
DATEADD (datepart, jumlah, tanggal)
Contoh :
SELECT DATEADD (day, 10, getdate())
SELECT DATEADD (Month, 10, getdate())
  • DATEDIFF : Untuk mengetahui rentan waktu (bisa hari, bulan, tahun)
Sintak :
DATEDIFF (datepart,tanggal_awal, tanggal_akhir)
Contoh :
SELECT DATEDIFF (month, '01/01/2007','01/01/2008')
  • DATENAME : Untuk menampilkan nama hari, bulan atau tahun.
Sintak :
DATENAME (datepart, tanggal)
Contoh :
SELECT DATENAME (month, getdate()) AS 'BulanSekarang'

Fungsi Aritmatika
  • SQRT : Untuk mencari akar dari niai tertentu
Contoh :
SELECT SQRT (100)
  • CEILING : Untuk pembulatan ke atas dari angka decimal
Contoh :
SELECT CEILING (25.25)
Keterangan : Akan menghasilkan nilai 26
  • FLOOR : Untuk pembulatan ke bawah dari angka decimal
Contoh :
SELECT FLOOR (25.25)
Keterangan : Akan menghasilkan nilai 25

Fungsi Karakter
  • LOWER dan UPPER 
  • LOWER : mengubah huruf besar ke huruf kecil
  • UPPER : mengubah huruf kecil ke huruf besar
Contoh :
1. SELECT LOWER (Nama) FROM Mahasiswa
2. SELECT UPPER (Nama) FROM Mahasiswa
  • LEN : Untuk menghitung jumlah karakter
Contoh :
SELECT Nama, LEN (Nama) FROM Mahasiswa
  • LTRIM dan RTRIM
  • LTRIM : memotong karakter spasi di kiri string
  • RTRIM : memotong karakter spasi di kanan string
Contoh :
SELECT LTRIM (' Sistem Basis Data')
SELECT RTRIM ('Sistem Basis Data ')
Keterangan :
Akan menghasilkan “Sistem Basis Data”
  • SUBSTRING : Mengambil beberapa karakter dari sebuah deretan string
Contoh :
SELECT SUBSTRING ('Sistem Basis Data',8,5)
Keterangan :
Mengambil string dari karakter ke 8 sebanyak 5 karakter.
Hasilnya adalah ‘Basis’
  • LEFT dan RIGHT
  • LEFT : Mengambil beberapa karakter dari kiri
  • RIGHT : Mengambil beberapa karakter dari kanan
Contoh :
SELECT LEFT ('Sistem Basis Data',6)
Keterangan : Mengambil string sebanyak 6 karakter dari sebelah kiri.
Hasilnya adalah ‘Sistem



TRIGGER
Trigger adalah Stored Procedure khusus yang dijalankan secara otomatis pada saat atau sesudah modifikasi data. Perintah-perintah yang akan mengaktifkan Trigger adalah UPDATE, INSERT, dan DELETE. Trigger dipakai untuk menjaga integritas data dan mengimplementasikan aturan bisnis yang kompleks. Trigger dibuat dengan memakai bahasa Transact-SQL atau SQL Enterprise Manager. Tugas-tugas manajemen Trigger meliputi mengubah, mengganti nama, menampilkan, menghapus dan membuat Trigger tidak aktif.

Trigger memakai dua tabel maya yaitu Inserted dan Deleted untuk mendeteksi modifikasi data. Untuk memprogram Trigger, Anda harus mendalami kedua tabel tersebut dan bahasa Transact-SQL. Untuk menjaga integritas data, Anda dapat memakai beberapa alternatif, yaitu Trigger atau Konstrain (Rule). Anda juga dapat memakai kunci utama dan kunci unik untuk mengidentifikasi baris dalam sebuah tabel secara unik. Anda juga dapat memakai nilai default dan domain untuk membatasi nilai-nilai yang diperbolehkan pada sebuah kolom. Referential Integrity dipakai untuk menjamin keabsahan hubungan antar tabel. Sebaliknya Anda memakai konstrain-konstrain tersebut sebelum memilih Trigger, karena Trigger dapat melakukan proses yang lebih rumit tetapi beban sistem lebih berat.


Pakailah Trigger untuk kasus-kasus berikut:
- Jika pemakaian cara deklaratif tidak dapat memenuhi kebutuhan yang diperlukan. Misalnya, buatlah Trigger untuk mengubah sebuah nilai numerik dalam tabel jika sebuah record di dalam tabel tersebut dihapus.
- Sebuah perubahan harus mengubah tabel-tabel lain yang terhubung. Misalnya jika data order ditambahkan, tabel lain yang menyimpan data stok akan berubah.
- Jika database didenormalisasi dan memerlukan cara otomasi untuk mengubah data redundan yang ada dibeberapa tabel.
- Jika sebuah nilai pada sebuah tabel harus divalidasi dengan data pada tabel lain.
- Jika diperlukan pesan kesalahan dan penangganan kesalahan secara khusus.
Kemampuan-kemampuan yang dimiliki Trigger:
- Trigger dapat menjaga referential integrity dengan melakukan perubahan data atau penghapusan kunci tamu (Foreign Key) di dalam database.
- Trigger dapat bekerja pada beberapa kolom dalam sebuah database bahkan pada objek di luar database. Anda juga dapat memakai Trigger pada View.
- Sebuah Trigger dapat melakukan beberapa aksi dan Trigger dapat diaktifkan oleh beberapa event. Misalnya Anda membuat sebuah Trigger yang akan diaktifkan jika terjadi proses INSERT, UPDATE atau DELETE. Dengan perintah Transact-SQL, Anda dapat mendefinisikan aturan bisnis untuk tiap event.
Selain kemampuan-kemampuan tersebut, Trigger juga mempunyai keterbatasan. Trigger tidak dapat dibuat pada sebuah tabel sistem atau temporer, meskipun perintah di dalama Trigger mengacu ke tabel sistem atau tabel temporer.
Trigger tidak dapat diaktifkan secara manual, tetapi diaktifkan secara otomatis jika terjadi event INSERT, UPDATE, dan DELETE. Dalam Trigger selalu berisi satu atau beberapa event tersebut sebelum perintah Transact-SQL didefinisikan. Tipe-tipe Trigger sesuai dengan event-nya. Misalnya Anda membuat sebuah Trigger UPDATE sehingga jika terjadi pengubahan data pada sebuah tabel, Trigger tersebut dapat diaktifkan. Sebuah Trigger dapat diaktifkan oleh beberapa event.
Pada saat terjadi INSERT atau UPDATE yang diaktifkan Trigger, Trigger menyimpan data baru atau data hasil modifikasi di dalam sebuah tabel yang bernama INSERTED. Jika terjadi DELETE yang mengaktifkan Trigger, data yang dihapus akan tersimpan ditabel yang bernama Deleted. Tabel tersebut berada dimemori dan dibaca oleh Trigger dengan perintah-perintah Transact-SQL. Kemampuan ini penting anda ketahui, karena pada umumnya Trigger membandingkan data dalam tabel Inserted dan Deleted dengan data baru sebelum proses Commit. Dengan kedua tabel tersebut, Trigger dapat melakukan proses Roll-Back.

Tidak ada komentar:

Posting Komentar