Kamis, 11 November 2021

CONTEKAN

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'