AUTORENT database / SQL Server

Создание таблиц

create table auto
(
autoID int not null Primary key identity(1,1),
regNumber char(6) unique,
markId int,
varv varchar(20),
v_aasta int,
kaigukastId int,
km decimal (7,2)
)
create table klient
(
klientId int PRIMARY KEY identity(1,1,),
kliendiNimi varchar(50),
telefon varchar(20),
aadress varchar(50),
soiduKogemus varchar(30)
);
 
create table redniLeping
(
lepingId int PRIMARY KEY identity(1,1,),
rendiAlgus date,
klientId int,
regNumber char(6),
rendiKestvus int,
hindKokku decimal(5,2),
tootajaId int
);
 
create table tootaja2
(
tootajaId int PRIMARY KEY identity(1,1,),
tootajaNimi varchar(50),
ametiId int
);
 
ALTER TABLE rednileping
ADD FOREIGN KEY (klientId) REFERENCES klient(klientId);
ALTER TABLE rednileping
ADD FOREIGN KEY (regNumber) REFERENCES auto(regNumber);
ALTER TABLE rednileping
ADD FOREIGN KEY (tootajaId) REFERENCES tootaja2(tootajaId);
 
create table amet
(
ametId int PRIMARY KEY AUTO_INCREMENT,
amet varchar(50),
keskminePalk decimal (7,2)
);
 
ALTER TABLE rednileping
add ametId int;
ALTER TABLE rednileping
ADD FOREIGN KEY (ametId) REFERENCES amet(ametId);
create table mark
(
markId int primary key identity(1,1),
autoMark varchar(50)
)
create table kaigukast
(
kaigukastId int primary key identity(1,1),
kaigukast varchar(50)
)
ALTER TABLE auto
ADD FOREIGN KEY (kaigukastId) REFERENCES kaigukast(kaigukastId);

Задания SELECT запросы

#Покажи в какой машине - какая коробка передач.
 
select auto.regNumber, kaigukast.kaigukast from auto, kaigukast
where kaigukast.kaigukastID=auto.kaigukastID
#Покажи в какой машине - какая марка машины, используй INNER JOIN
 
SELECT auto.regNumber, mark.autoMark from auto
INNER JOIN mark ON mark.markID=auto.markID
#Отобрази по каждому клиенту все договора аренды машин и машины, которые были взяты в арендую
 
SELECT klient.kliendiNimi, rednileping.lepingId, auto.regNumber from rednileping
INNER JOIN klient on rednileping.klientId=klient.klientId
INNER JOIN auto on rednileping.regNumber=auto.regNumber
#Покажи сколько машин с автом коробкой, сколько с мануальной.
 
select kaigukast.kaigukast, count(auto.autoID) AS kogus
 
from auto, kaigukast
WHERE auto.kaigukastID=kaigukast.kaigukastID
group by kaigukast.kaigukast
#Отобрази какие машины - какой работник отдал в аренду.
 
select auto.regNumber, tootaja2.tootajaNimi from auto, tootaja2, rednileping
where tootaja2.tootajaId=rednileping.tootajaId AND rednileping.regNumber=auto.regNumber
#Отобрази какие машины - какой работник отдал в аренду в выбранный промежуток времени.
 
select auto.regNumber, tootaja2.tootajaNimi from auto, tootaja2, rednileping
where tootaja2.tootajaId=rednileping.tootajaId AND rednileping.regNumber=auto.regNumber and (rednileping.rendiAlgus BETWEEN '2022-01-10' and '2022-07-12')
#Найди общее количество машин отданных в аренду в определенный промежуток времени и их суммарную стоимость.
 
select count(rednileping.regNumber) as autoKogus, sum(rednileping.hindKokku) as hindKokku from rednileping
where (rednileping.rendiAlgus BETWEEN '2022-05-10' and '2022-05-30')
#Найди цена проданных машин за определённый промежуток времени
 
select avg(rednileping.hindKokku) as keskmineHind from rednileping
where (rednileping.rendiAlgus BETWEEN '2022-05-10' and '2022-05-30')

Добавление пользователя

Добавить пользователя tootaja, с паролем 123456 и правами просмотра и добавления записей в таблицу Rendileping и правом просмотра остальных таблиц. Проверь права пользователя.

Процедуры

Составь процедуру для добавления новых марок машин и новых клиентов.

create procedure uusAutoMarkJaUusKlient
 
@uusAutoMark varchar (50),
@uusKlient varchar (50)
as
begin
INSERT INTO mark(autoMark)
VALUES (@uusAutoMark);
INSERT INTO klient(kliendiNimi)
VALUES (@uusKlient);
end;
#проверка
execute uusAutoMarkJaUusKlient @uusAutoMark='Mazda',@uusKlient='Boris';

Составь процедуру для удаления договора по его id.

create procedure rendilepinguKustutamine
 
@id int
as
begin
delete from rednileping
where lepingId=@id;
select * from rednileping;
end;
#проверка
execute rendilepinguKustutamine @id=4;

Свою процедуру на действие, отличное от ранее созданных.
‘Просмотреть все договора с определённого по определённый срок.’

create procedure lepinguVaatamine
 
@millest date,
@milleni date
as
begin
select * from rednileping
where (rendiAlgus BETWEEN @millest and @milleni);
end;
#проверка
execute lepinguVaatamine @millest='2022-05-03',@milleni='2022-05-19';