0% menganggap dokumen ini bermanfaat (0 suara)
17 tayangan37 halaman

Pertemuan 8. Structured Query Language Bagain 3 2024

Diunggah oleh

ridwantaufik0544
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PPTX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
17 tayangan37 halaman

Pertemuan 8. Structured Query Language Bagain 3 2024

Diunggah oleh

ridwantaufik0544
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PPTX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 37

Program Studi Teknik Informatika

IF34413

Structured Query
Language Bagian 3

Pengantar Basis SUTONO, S.SI, M.KOM


Data
Pokok Bahasn

1. Responsi Query
2. Membuat Triger
3. Membuat Store Procedure
4. Membuat View
Perhatikan Physcal data Model
Persoalan
1. Tentukan Primary Key dalam Setiap table
2. Tentukan kardinalitas hubungan antar table
3. Simulasi Query Atas PhyscalDatamodel Di atas
4. Bawa Catatan dan Laptop
Cara Me-Restore Data Dengan Mysql Workbench

Pilih Administration  Data Import/Restore


Cara Me-Restore Data Dengan Mysql Workbench

Klik New : Name Of Schema to create isi dengan DbAline terus OK

Arahkan File Impor From Self-Contained File

Kemudian Klik Import Progress


Cara Me-Restore Data Dengan Mysql Workbench

Klik Star Import


Kasus 1

1. Tampilkan semua data pada Tmasterbuku dengan join relasi pada


kedua table TGroupCatagory dengan mengambil filed Name, Pada Tabel
TsubGroupCatagory
2. Tampilkan berapa jumlah persedian, dan jumlah total Stok setiap
GroupBuku pada table Tmasterbuku
3. Pada nomor 1 coba tampilkan beberapa filed, idbuku,judulbuku,
totalStock,Harga,GroupBuku,NamaGrup,SubGroupBuku, NamaSubgrup
Kasus 1
select a.*, b.nama,c.nama from tmasterbuku a,tgroupcatagory b,tsubgroupcatagory c where
a.GroupBuku=b.KodeCatagory and a.SubGroupBuku=c.SubGroup

select distinct a.groupbuku,b.nama,sum(harga*TotalStock) as


PersediaanBruto,sum( TotalStock) as TotalStok from tmasterbuku a,tgroupcatagory b
where a.GroupBuku=b.KodeCatagory group by a.groupbuku,b.nama
Kasus 2
Kasus 2

1.Tampilkan Persediaan Per Supplier, tampilkan nama


supplier bruto dan netto
2.Berapa Jumlah Stok berdasarkan KodeFamily
3.Berapa Jumlah Persediaan berdasarkan group buku,
dengan menampilkan nama supplier dan total Stok
nya
4.Tampilkan Persediaan Per unit, persupplier dan per
group
Trigers
Trigger adalah fungsi otomatis yang mengeksekusi
perintah SQL ketika ada perubahan data dalam tabel
database. Trigger berfungsi untuk: Menjaga integritas
data, Melakukan validasi, Menjalankan logika bisnis,
Mengatasi masalah integritas atau audit data
Trigers
Pada umumnya, statement yang digunakan dalam trigger hanya berupa
satu perintah saja. Namun, jika Anda ingin membuat beberapa perintah
di dalamnya, maka gunakan perintah tersebut ke dalam blok BEGIN …
END. Penggunaan trigger terjadi ketika adanya perubahan yang terjadi
pada record table. Dengan begitu, terdapat Anda perlu menambah
referensi ke record tersebut, yaitu OLD dan NEW. OLD menandakan
referensi record sebelum terjadinya perubahan, sedangkang OLD
menandakan referensi setelah terjadinya perubahan.
Tugas Trigers
Integritas Data Dengan adanya trigger, Anda dapat mempertahankan
integritas table yang terdapat dalam database. Sebab, Anda
dapat melakukan operasi-operasi yang berkaitan dengan
pengolahan database, seperti INSERT, UPDATE dan DELETE
Mencegah Error Trigger dalam MySQL dapat mencegah terjadinya error dalam
pengoperasian data. Jika terjadi error dalam pendefinisian trigger,
error tersebut tidak mengganggu trigger yang sedang berjalan.
Mencegah Proses Transaksi Dalam praktiknya, biasa trigger digunakan untuk melakukan proses
yang Tidak Sah transaksi. Anda dapat menyimpan record transaksi tersebut ke table
lain (history) tanpa harus takut jika data tersebut di-update atau
delete. Semua perubahan yang terjadi juga dapat diacak berdasarkan
waktu pembuatannya.
Membuat Tugas Kerja Ketika trigger telah dijalankan, maka Anda dapat menggunakan
menjadi Terjadwal berbagai bahasa pemrograman tanpa harus bingung bagaimana cara
mengaksesnya.
Syntak Umum dari Triger

DELIMITER $$
CREATE TRIGGER nama_trigger
{BEFORE | AFTER} {INSERT |
UPDATE| DELETE }
SYNTAK ON nama_table
UMUM FOR EACH ROW
BEGIN
KODE SQL (Trigers Body)
END$$
DELIMITER ;
Syntak Umum dari Triger

1. nama_trigger : nama trigger yang dibuat sesuai dengan karakteristik


penamaan dalam MySQL
2. [BEFORE|AFTER] : menunjukkan waktu untuk mengeksekusi trigger
secara otomatis, apakah sebelum atau sesudah perubahan pada row data
table. Jadi pilihannya adalah AFTER atau BEFORE.
3. [INSERT | UPDATE | DELETE] : digunakan untuk menentukan event
yang menyebabkan terjadinya trigger, pilIhan event tersebut terdiri dari
INSER, UPDATE dan DELETE.
4. nama_table : menunjukkan table yang akan dilakukan trigger didalamnya
5. trigger_body : menunjukkan statement perintah dalam MySQL yang
akan otomatis dijalankan jika event sedang aktif.
Syntak Trigers BEFORE INSERT
Trigger ini memiliki fungsi untuk menjalankan tugas trigger sebelum proses penambahan
(insert) data dalam suatu table dilakukan. Berikut sintaks trigger dalam MySQL :

CREATE TRIGGER nama_trigger


BEFORE INSERT
ON nama_table FOR EACH ROW
BEGIN
// deklarasi variable
END;
Syntak Trigers After INSERT
Trigger ini memiliki fungsi untuk menjalankan tugas trigger setelah proses penambahan
(insert) data dalam suatu table dilakukan. Berikut sintaks trigger dalam MySQL :

CREATE TRIGGER nama_trigger


AFTER INSERT
ON nama_table FOR EACH ROW
BEGIN
// deklarasi variable
END;
Syntak Trigers Trigger BEFORE UPDATE
Trigger ini memiliki fungsi untuk menjalankan tugas trigger sebelum proses pengubahan
(update) data dalam suatu table dilakukan. Berikut sintaks trigger dalam MySQL :

CREATE TRIGGER nama_trigger


BEFORE UPDATE
ON nama_table FOR EACH ROW
BEGIN
// deklarasi variable
END;
Syntak Trigers Trigger AFTER DELETE
Trigger ini memiliki fungsi untuk menjalankan tugas trigger sebelum proses penghapusan
(delete) data dalam suatu table dilakukan. Berikut sintaks trigger dalam MySQL :

CREATE TRIGGER nama_trigger


AFTER DELETE
ON nama_table FOR EACH ROW
BEGIN
// deklarasi variable
END;
Cara Membuat Triger

ON mendefinisikan table yang mengaktifkan TRIGGER

BEGIN END adalah pernyataan yang membungkus kode TRIGGER

Pastikan diawal gunakan DELIMITER $$ dan diakhir dikembalikan ke


DELIMITER ; seperti dalam membuat Stored Procedure

Hands On
Pada Hands-On TRIGGER akan dibuat 2 table yaitu table Mastrbuku
dan table log_masterbuku
Waktu Triger
Waktu TRIGGERs Keterangan TRIGGERs
BEFORE INSERT TRIGGER dijalankan sebelum record
dimasukkan ke database
AFTER INSERT TRIGGER dijalankan sesudah record
dimasukkan ke database
BEFORE UPDATE TRIGGER dijalankan sebelum record dirubah di
database
AFTER UPDATE TRIGGER dijalankan sesudah record dirubah
database

Waktu TRIGGER Keterangan TRIGGER


BEFORE DELETE TRIGGER dijalankan sebelum record dihapus di
database
AFTER DELETE TRIGGER dijalankan sesudah record dihapus di
database
Cara Duplikate tabel

• Create table log_tmasterbuku select *from


tmasterbuku limit 0

• create table log_tmasterbuku select


idbuku,judulbuku,kodeb,isbn,harga,GroupBuku,SubGr
oupBuku from tmasterbuku limit 0
Contoh Kasus membuat Trigers

Kita akan mambuat triger dengan pemicu pada table


Tmasterbuku, Ketika pada table Tmasterbuku di
lakukan update pada Filed Judulbuku maka akan insert
ke table log_masterbuku, sehingga datanya seperti di
bawah ini
Contoh Membuat Triger

at table dengan nama log_masterbuku dengan structure seperti berik

CREATE TABLE log_masterbuku(


id_log INT(10) AUTO_INCREMENT,
idbuku INT(10),
JudulBuku_lama VARCHAR(100),
JudulBuku_baru VARCHAR(100),
Tanggal_Ubah DATE,
PRIMARY KEY(id_log)
);
Cara Membuat Triger

Sintak untuk mlihat triger yang sudah kita buat


• SHOW TRIGGERS;
Cara Menghapus Triger
• DROP TRIGGER <trigger_name>;
• DROP TRIGGER update_log_masterbuku;

update tmasterbuku set


judulbuku='Update karena Proses Triger'
where IdBuku='9306';
Cara Membuat Triger Before Update
DELIMITER $$
CREATE TRIGGER
update_log_masterbuku
BEFORE UPDATE
ON tmasterbuku
FOR EACH ROW
BEGIN
INSERT INTO log_masterbuku
set idbuku = OLD.idbuku,
JudulBuku_lama=old.JudulBuku,
JudulBuku_baru=new.JudulBuku,
Tanggal_Ubah = NOW();
END$$
DELIMITER ;
Trigers Before Insert
Contoh : Kita akan memeriksa kode Subgroup pada Tabel tgroupcatagory, jika
kodekatagory sudah ada maka akan muncul Pesan “Kode Group Sudah ada”

DELIMITER $$
CREATE TRIGGER Insert_GroupKatagory
BEFORE INSERT ON tgroupcatagory
FOR EACH ROW
BEGIN
IF NOT EXISTS (SELECT KodeCatagory FROM tgroupcatagory WHERE
KodeCatagory=NEW.KodeCatagory) THEN
SET NEW.KodeCatagory = NEW.KodeCatagory, NEW.nama = NEW.nama;
ELSE
SIGNAL SQLSTATE '02000' SET MESSAGE_TEXT = 'Data Sudah Ada';
END IF;
END$$
DELIMITER ;
Trigers After Insert
Contoh : ketika ingin menambahkan data barang yang sudah terjual, maka otomatis
jumlah pada table Tmasterbuku,TdetailMasterbuku, tdetailmasterbukuunit akan
berkurang. Maka perintah untuk trigger dalam MySQL adalah

DELIMITER $$
CREATE TRIGGER Insert_After_Tsales
AFTER INSERT
ON tsales FOR EACH ROW
BEGIN
UPDATE tmasterbuku SET TotalStock=TotalStock-New.QtySales where IDBuku=NEW.IDBUku;
UPDATE tdetailmasterbuku SET Instock=Instock-New.QtySales where IDBuku=NEW.IDBUku and
KodeSupplier=NEW.KodeSupplier and KodeFamily=NEW.KodeFamily;
UPDATE tdetailmasterbukuunit SET Instock=Instock-New.QtySales where IDBuku=NEW.IDBUku
and KodeSupplier=NEW.KodeSupplier and KodeFamily=NEW.KodeFamily and Unit=NEW.KodeUnit;
END$$
DELIMITER;
Store Procedure

Apa itu Stored Procedure? Stored Procedure merupakan berbagai


pernyataan atau prosedur SQL yang tersimpan di dalam database.
Stored Procedure bisa menerima parameter sehingga Anda dapat
menulis pernyataan IF, melakuan pengaturan pada variabel, dan lain
sebagainya
Kelebihan Store Procedure
Performa lebih baik
Stored Procedure akan dikompilasi yang selanjutnya dicache dan akan digunakan
kembali. Dengan begitu dapat membaut waktu respon yang lebih cepat pada saat
Stored Procedure sama ingin dieksekusi kembali
Modular
jika ada beberapa aplikasi yang ingin memakai query sama, maka Anda bisa menduplikasikan kode yang
tidak dibutuhkan pada aplikasi. Cara terbaik yang bisa Anda lakukan adalah dengan menempatkan kode di
dalam database
Keamanan menjadi lebih baik
sebuah aplikasi yang menggunakan pernyataan SQL serta dibuat dengan cara dinamis diketahui
cenderung rentan ketika adanya serangan injeksi SQL. Sementara itu, Stored Procedure memiliki
kemampuan yang mampu sepenuhnya menghindari injeksi SQL dengan baik
Manfaat Store Procedure
Stored Procedure bisa Anda gunakan kapan saja seperti pembuatan prosedur menggunakan
bahasa pemrograman seperti Java/VB maupun bahasa pemrograman yang lain. Ketika ada
program yang memiliki banyak proses untuk dikerjakan, lebih baik program tersebut harus
dipecah menjadi bagian yang lebih kecil (procedure). Fungsi dari program utama tersebut
nantinya akan memanggil bagian-bagian lain dari program tersebut
Stored Procedure membuat kinerja menjadi lebih cepat serta efisien karena berbasis server
side. Jika Anda ingin membuat sebuah program yang lebih besar, pembuatan program
menggunakan server side terasa lebih mudah jika dibandingkan client side. Server side
bersifat netral pada seluruh aplikasi. Selain itu, database administrator tidak harus tahu
secara mendalam mengenai bahasa pemrograman seperti Java, PHP, dan lain-lain
Syntak Store Procedure
DELIMITER $$

CREATE PROCEDURE nama_procedure()

BEGIN

kode sql

END$$

DELIMITER ;

Sedangkan untuk menjalankan Stored procedure


adalah
CALL nama_procedure();
Contoh
Kita akan membuat Store Prosdure untuk menampilkan persediaan by
Departemen,
DELIMITER $$

CREATE PROCEDURE TanpilPersediaanByGroup()


BEGIN
select distinct a.groupbuku,b.nama,sum(harga*TotalStock) as
PersediaanBruto,sum( TotalStock) as TotalStok
from tmasterbuku a,tgroupcatagory b where a.GroupBuku=b.KodeCatagory group by
a.groupbuku,b.nama;
END$$
DELIMITER ;
VIEW
VIEW adalah perintah untuk membuat table virtual yang
menyimpan kode SQL. Dengan view kita bisa membuat
kode SQL yang komplek dikemas menjadi satu table
sederhana

View akan menyimpan kode SQL yang komplek tadi


menjadi single table virtual yang lebih mudah untuk
digunakan
Syntak VIEW
CREATE VIEW TmasterbukuGroup AS
select a.*, b.nama as NamaGrup,c.nama as NamaSubGrup
from tmasterbuku a,tgroupcatagory b,tsubgroupcatagory c
where a.GroupBuku=b.KodeCatagory and
a.SubGroupBuku=c.SubGroup;

Cara Manggil VIEW


select *from
TmasterbukuGroup
TERIMA KASIH

Anda mungkin juga menyukai