A. Berdasarkan tabel diatas, tuliskan syntax SQL untuk instruksi dibawah ini:
- Buat database "Perpustakaan".
- Buat Store Procedure untuk menambahkan lebih dari 2 data pada tabel Buku dan tabel Penerbit dengan menggunakan Transaction (Commit dan Rollback) dan jalankan Store Procedure tersebut.
- Buat Function untuk menghitung "Total Buku" berdasarkan Penerbit yang dikehendaki.
- Buat Trigger untuk mengurangi stok secara otomatis ketika terjadi peminjaman pada buku yang dipinjam.
- Tampilkan kolom nama_buku, stok, penerbit, total_buku, dimana total_buku didapat dari Function yang sudah dibuat sebelumnya.
B. Buat form transaksi tambah, ubah, hapus, dan cari data Buku berbasis web menggunakan tag
HTML dan PHP.
HTML dan PHP.
JAWABAN, A:
1. Membuat database "Perpustakaan"
CREATE DATABASE perpustakaan
Menampilkan database
SHOW DATABASES
Menggunakan database "Perpustakaan"
USE perpustakaan
Menghapus database "Perpustakaan"
DROP DATABASE perpustakaan
Membuat tabel "Penerbit"
CREATE TABLE penerbit(
id_penerbit INT PRIMARY KEY,
penerbit VARCHAR(50)
)
Membuat tabel "Buku"
CREATE TABLE buku(
id_buku INT PRIMARY KEY,
id_penerbit INT,
nama_buku VARCHAR(50),
stok INT
)Membuat tabel "Peminjaman"
CREATE TABLE peminjaman(
id_pinjam INT PRIMARY KEY,
id_buku INT,
tgl_pinjam VARCHAR(50),
jumlah INT
)Menampilkan tabel yang sudah dibuat
SHOW TABLES
Menghapus tabel yang sudah dibuat
DROP TABLE penerbit
Menambahkan record tabel Penerbit dan Buku
INSERT INTO penerbit VALUES(1, 'Andi Offset')
INSERT INTO buku VALUES(1, 1, 'Database Programming', 100)
Mengubah record tabel Penerbit
UPDATE penerbit SET penerbit='Andi Jogja' WHERE id_penerbit=1
Menghapus record tabel Buku
DELETE FROM buku WHERE id_buku=1
2. Jawaban pada nomor 2 ini dibagi menjadi dua, yaitu jika id_penerbit pada tabel penerbit
dan id_buku pada tabel buku merupakan Primary Key, dan berikutnya untuk id_penerbit
dan id buku bukan Primary Key.
a. Store Procedure + Commit Rollback untuk id_penerbit dan id_buku Primary Key.
DELIMITER $$
CREATE PROCEDURE `perpustakaan`.`tambahdata`(
idp INT, terbit CHAR(25),
idb INT, buku CHAR(25), stok INT
)
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
SELECT "Maaf, ID Penerbit Duplicat";
ROLLBACK;
END;
START TRANSACTION;
INSERT INTO penerbit VALUES(idp, terbit);
INSERT INTO buku VALUES(idb, idp, buku, stok);
COMMIT;
END$$
DELIMITER ;
b. Store Procedure + Commit Rollback untuk id_penerbit & id_buku bukan
Primary Key.
DELIMITER $$
CREATE PROCEDURE `perpustakaan`.`tambahdata`(
idp INT, terbit CHAR(25), idb INT,
buku CHAR(25), stok INT
)
BEGIN
DECLARE cari INT;
SELECT id_penerbit
FROM penerbit
WHERE id_penerbit=idp INTO cari;
START TRANSACTION;
INSERT INTO penerbit VALUES(idp,terbit);
INSERT INTO buku VALUES(idb,idp,buku,stok);
IF (cari=idp) THEN
SELECT "Maaf, Id Penerbit Duplicat";
ROLLBACK;
ELSE
SELECT "BERHASIL";
COMMIT;
END IF;
END$$
DELIMITER ;
3. Function Total Buku berdasarkan Penerbit.
DELIMITER $$
CREATE
FUNCTION `perpustakaan`.`totalbuku`(id INT)
RETURNS INT
BEGIN
RETURN(SELECT SUM(stok) FROM buku
WHERE id_penerbit=id);
END$$
DELIMITER ;
4. Trigger Menggurangi Stok Secara Otomatis.
DELIMITER $$
CREATE
TRIGGER `perpus`.`kurangistok` AFTER INSERT
ON `perpus`.`peminjaman`
FOR EACH ROW BEGIN
UPDATE buku SET stok=stok-new.jumlah
WHERE id_buku=new.id_buku;
END$$
DELIMITER ;
5. Menampilkan kolom nama_buku, stok, penerbit, totalbuku.
SELECT nama_buku, stok, penerbit, totalbuku(3)
FROM buku, penerbit
WHERE penerbit.id_penerbit=buku.id_penerbit
DELIMITER $$
CREATE PROCEDURE `perpustakaan`.`tambahdata`(
idp INT, terbit CHAR(25), idb INT,
buku CHAR(25), stok INT
)
BEGIN
DECLARE cari INT;
SELECT id_penerbit
FROM penerbit
WHERE id_penerbit=idp INTO cari;
START TRANSACTION;
INSERT INTO penerbit VALUES(idp,terbit);
INSERT INTO buku VALUES(idb,idp,buku,stok);
IF (cari=idp) THEN
SELECT "Maaf, Id Penerbit Duplicat";
ROLLBACK;
ELSE
SELECT "BERHASIL";
COMMIT;
END IF;
END$$
DELIMITER ;
3. Function Total Buku berdasarkan Penerbit.
DELIMITER $$
CREATE
FUNCTION `perpustakaan`.`totalbuku`(id INT)
RETURNS INT
BEGIN
RETURN(SELECT SUM(stok) FROM buku
WHERE id_penerbit=id);
END$$
DELIMITER ;
4. Trigger Menggurangi Stok Secara Otomatis.
DELIMITER $$
CREATE
TRIGGER `perpus`.`kurangistok` AFTER INSERT
ON `perpus`.`peminjaman`
FOR EACH ROW BEGIN
UPDATE buku SET stok=stok-new.jumlah
WHERE id_buku=new.id_buku;
END$$
DELIMITER ;
5. Menampilkan kolom nama_buku, stok, penerbit, totalbuku.
SELECT nama_buku, stok, penerbit, totalbuku(3)
FROM buku, penerbit
WHERE penerbit.id_penerbit=buku.id_penerbit
No comments:
Post a Comment