Pertemuan 5 - Function, Trigger, dan Optimasi Query
Tujuan Pembelajaran
Setelah mengikuti pertemuan ini, mahasiswa diharapkan mampu:
Memahami dan menggunakan berbagai Function dalam SQL Server (String, Date, dan Aggregate).
Membuat Trigger untuk otomatisasi tindakan dalam database.
Melakukan troubleshooting terhadap error dan performa query.
Melakukan optimasi query agar database berjalan lebih efisien.
1. Pengenalan Function di SQL Server
Function adalah perintah bawaan SQL Server untuk melakukan operasi tertentu, seperti manipulasi teks, tanggal, dan perhitungan.
Jenis-jenis Function
Jenis Function
Kegunaan
String Function
Mengolah dan memanipulasi teks
Date Function
Mengelola dan menghitung waktu/tanggal
Aggregate Function
Melakukan perhitungan statistik (SUM, AVG, dll)
2. String Function
Contoh Query
1 2 3 4 5 6 7 8
-- Mengubah teks menjadi huruf besar SELECTUPPER(Judul) AS JudulBesar FROM Buku;
-- Mengambil sebagian teks SELECTLEFT(Judul, 10) AS PotonganJudul FROM Buku;
-- Menggabungkan dua kolom teks SELECT CONCAT(Judul, ' - ', Penulis) AS InfoBuku FROM Buku;
3. Date Function
Contoh Query
1 2 3 4 5 6 7 8
-- Menampilkan tanggal hari ini SELECT GETDATE() AS TanggalSekarang;
-- Mengambil tahun dari tanggal pinjam SELECTYEAR(TanggalPinjam) AS TahunPinjam FROM Transaksi;
-- Menambah 7 hari dari tanggal pinjam SELECT DATEADD(DAY, 7, TanggalPinjam) AS TanggalKembali FROM Transaksi;
4. Aggregate Function
Contoh Query
1 2 3 4 5 6 7 8 9 10
-- Menghitung jumlah buku SELECTCOUNT(*) AS JumlahBuku FROM Buku;
-- Menghitung rata-rata tahun terbit SELECTAVG(TahunTerbit) AS RataRataTahun FROM Buku;
-- Menampilkan jumlah transaksi tiap anggota SELECT IDAnggota, COUNT(*) AS TotalTransaksi FROM Transaksi GROUPBY IDAnggota;
5. Trigger Overview
Trigger adalah prosedur otomatis yang dijalankan ketika terjadi perubahan data (INSERT, UPDATE, DELETE).
Contoh 1 - Trigger Setelah Menambah Buku
1 2 3 4 5 6 7
CREATETRIGGER trg_AfterInsertBuku ON Buku AFTER INSERT AS BEGIN PRINT 'Data buku baru telah ditambahkan!'; END;
Contoh 2 - Trigger untuk Update Stok Buku Setelah Transaksi
1 2 3 4 5 6 7 8 9
CREATETRIGGER trg_UpdateStokBuku ON Transaksi AFTER INSERT AS BEGIN UPDATE Buku SET Stok = Stok -1 WHERE IDBuku IN (SELECT IDBuku FROM inserted); END;
6. Troubleshooting Query
Contoh Penggunaan TRY…CATCH
1 2 3 4 5 6
BEGIN TRY INSERTINTO Anggota (Nama, Alamat) VALUES (NULL, 'Bandung'); END TRY BEGIN CATCH PRINT 'Terjadi kesalahan saat menambah data anggota!'; END CATCH;
Menampilkan Waktu Eksekusi Query
1 2 3
SET STATISTICS TIMEON; SELECT*FROM Transaksi; SET STATISTICS TIME OFF;
7. Optimasi Query
Teknik Umum
Gunakan index pada kolom WHERE atau JOIN.
Hindari SELECT *, ambil hanya kolom yang diperlukan.
Gunakan JOIN dengan kondisi efisien.
Gunakan Stored Procedure untuk query kompleks.
Contoh Optimasi
1 2 3 4 5 6
-- Kurang efisien SELECT*FROM Buku WHEREYEAR(TahunTerbit) =2020;
-- Lebih efisien SELECT Judul, Penulis FROM Buku WHERE TahunTerbit BETWEEN2020AND2021;
8. Latihan (Durasi ±2 jam)
Latihan 1 - Function Dasar
Tampilkan nama anggota dalam huruf besar.
Tampilkan 5 huruf pertama dari nama buku.
Hitung jumlah buku yang diterbitkan setelah tahun 2015.
Latihan 2 - Date Function
Tampilkan tanggal pinjam dan tanggal kembali (7 hari setelah pinjam).
Hitung jumlah transaksi pada tahun 2024.
Latihan 3 - Trigger
Buat trigger trg_LogTransaksi untuk mencatat setiap transaksi baru ke tabel LogTransaksi.
Buat trigger trg_CekStok yang menolak transaksi jika stok buku = 0.
Latihan 4 - Troubleshooting & Optimasi
Buat query yang error, lalu tangani menggunakan blok TRY...CATCH.
Bandingkan waktu eksekusi antara SELECT * dan query dengan kolom tertentu.
9. Tugas Mandiri
Buat laporan analisis performa query berisi:
Contoh query lambat dan versi optimasinya.
Penjelasan teknik optimasi yang digunakan.
Minimal 3 contoh function dan 1 trigger buatanmu berdasarkan database perpustakaan.