CREATE DATABASE db22_penyewaan
use db22_penyewaan
CREATE TABLE customer (id_customer nvarchar(5) PRIMARY KEY, nama nvarchar(50), telp varchar(15), alamat nvarchar(255), tgl_regist date, jenis_layanan nvarchar(20))
----------------------------------------------------------------------------------------
INSERT INTO customer VALUES ('CS001','Ratu','085777546521','Jl. Warung Pojok','2015-01-10','Reguler')
INSERT INTO customer VALUES ('CS002','Ibrahim','088121216335','Jl. Sudirman','2015-03-13','Reguler')
INSERT INTO customer VALUES ('CS003','Syaiful','082132887469','Jl. Plumpang','2016-04-01','High')
INSERT INTO customer VALUES ('CS004','Indah','081321547795','Jl. Tipar Cakung','2016-05-09','Reguler')
INSERT INTO customer VALUES ('CS005','Angga','081122224468','Jl. Tipar Timur','2017-03-15','High')
CREATE TABLE mobil (no_plat NVARCHAR(10) PRIMARY KEY,
nama_mobil NVARCHAR (50),
warna NVARCHAR (30),
harga_sewa INT,
status INT)
CREATE TABLE sewa (no_transaksi NVARCHAR(5) PRIMARY KEY,
id_customer NVARCHAR (5),
no_plat NVARCHAR (10),
tgl_sewa DATE,
lama_sewa INT)
INSERT INTO mobil
VALUES('B1108KLI','Toyota Yaris','Hitam','320000','1');
INSERT INTO mobil
VALUES('B8655FXA','Honda Jazz','Silver','330000','1');
INSERT INTO mobil
VALUES('B9001HUL','Honda Brio','Hitam','295000','0');
INSERT INTO mobil
VALUES('B1248UXX','Daihatsu Ceria ','Merah','310000','0');
INSERT INTO mobil
VALUES('B6654JKO','Daihatsu Ayla ','Putih','280000','1');
INSERT INTO mobil
VALUES('B5587JJK','Nissan GT-R ','Merah','370000','1');
INSERT INTO mobil
VALUES('B6588KHL','Toyota Corona','Hitam','350000','1');
INSERT INTO sewa
VALUES('TR001','CS004','B5587JJK','2017-02-15','1');
INSERT INTO sewa
VALUES('TR002','CS003','B8655FXA','2017-02-22','3');
INSERT INTO sewa
VALUES('TR003','CS005','B6654JKO','2017-03-05','2');
INSERT INTO sewa
VALUES('TR004','CS001','B1108KLI','2017-03-14','5');
INSERT INTO sewa
VALUES('TR005','CS002','B6588KHL','2017-03-20','1');
select * from customer
select * from mobil
select * from sewa
4a. Tampilkan data mobil yang berwarna hitam
select * from mobil where warna = 'Hitam'
4b. Tampilkan harga mobil diatas Rp. 300,000,-
select * from mobil where harga_sewa >= '300000'
4c. Ubahlah layanan menjadi High untuk customer yang memiliki ID CS001
update customer set jenis_layanan = 'High' where id_customer='CS001'
4d. Tampilkan data customer yang menyewa mobil pada tanggal 05 Maret 2017
select customer.* FROM customer INNER JOIN sewa ON sewa.id_customer = customer.id_customer WHERE tgl_sewa = '2017-03-05';
4e. Tampilkan data transaksi untuk customer yang memiliki tgl_regist pada tahun 2015 – 2016
select sewa.* FROM sewa INNER JOIN customer ON customer.id_customer = sewa.id_customer WHERE tgl_regist BETWEEN '2015-01-10' AND '2016-05-09'
4f. Tampilkan nama_customer, telp, nama_mobil, harga_sewa dan lama_sewa untuk transaksi yang memiliki tgl_sewa pada bulan maret 2017
select customer.nama, customer.telp, mobil.nama_mobil, mobil.harga_sewa, sewa.lama_sewa from
sewa inner join customer on customer.id_customer = sewa.id_customer
inner join mobil on mobil.no_plat = sewa.no_plat where tgl_sewa between '2017-03-01' and '2017-03-30'
4g. Delete Record TR005
delete from sewa where no_transaksi='TR005'
4h. Buatlah trigger untuk mengupdate status menjadi 1 untuk no_plat yang diinput pada tabel sewa
GO
alter TRIGGER update_status ON sewa
AFTER insert
AS BEGIN
DECLARE @no_plat nvarchar(15)
SELECT @no_plat = no_plat FROM inserted
UPDATE mobil SET status = 1 WHERE no_plat = @no_plat
END
GO
INSERT INTO sewa
VALUES('TR006','CS002','B9001HUL','2017-03-20','7');
4i. Buatlah trigger untuk mengupdate status menjadi 0 untuk no_plat yang dihapus dari tabel sewa
GO
create TRIGGER update_status1 ON sewa
AFTER delete
AS BEGIN
DECLARE @no_plat nvarchar(15)
SELECT @no_plat = no_plat FROM deleted
UPDATE mobil SET status = 0 WHERE no_plat = @no_plat
END
GO
delete from sewa where no_transaksi='TR004'
4j. Buatlah procedure untuk menampilkan pesan “Mobil dengan no plat XXX sedang disewa selama XX” dengan menginput no_plat. (XXX adalah no_plat dan XX adalah lama_sewa)
go
alter procedure tampil_sewa (@no_plat varchar (50))
as begin
declare @sewa int
set @sewa = (SELECT lama_sewa FROM sewa where no_plat = @no_plat )
print 'Mobil Dengan No. Plat : '
print @no_plat
print 'Disewakan Selama : '
print @sewa
end
go
exec tampil_sewa 'B5587JJK'
4k. Buatlah procedure untuk memunculkan jumlah customer yang memiliki layanan Regular/High dengan menginput tipe layanan yang ingin ditampilkan
go
create procedure layanan_tampil (@jenis_layanan nvarchar(50))
AS BEGIN
declare @jml int
Set @jml = (select COUNT(jenis_layanan) from customer where jenis_layanan = @jenis_layanan)
print @jml
end
go
exec layanan_tampil 'High'
4l. Buatlah procedure untuk menampilkan data transaksi sewa suatu mobil dengan menginput nama_mobil
go
create procedure sewa_tampil (@nama_mobil nvarchar(50))
AS BEGIN
declare @jml int
Set @jml = (select COUNT(jenis_layanan) from customer where jenis_layanan = @jenis_layanan)
print @jml
end
go
exec layanan_tampil 'High'