CARRENT task

1.Ülesanne

2. САМОСТОЯТЕЛЬНОЕ СОСТАВЛЕНИЕ SQL ЗАПРОСОВ

2.1

CREATE TABLE klient(
klientID int not null Primary key IDENTITY(1,1),
kliendiNimi varchar(50),
telefon varchar(20),
aadress varchar(50),
soiduKogemus varchar(30)
);
INSERT INTO klient(kliendiNimi,telefon,aadress,soiduKogemus)
VALUES ('Matvei','telefon1','aadress1','soiduKogemus1');
INSERT INTO klient(kliendiNimi,telefon,aadress,soiduKogemus)
VALUES ('Anna','telefon2','aadress2','soiduKogemus2');
INSERT INTO klient(kliendiNimi,telefon,aadress,soiduKogemus)
VALUES ('Ilja','telefon3','aadress3','soiduKogemus3');
INSERT INTO klient(kliendiNimi,telefon,aadress,soiduKogemus)
VALUES ('Daniel','telefon4','aadress4','soiduKogemus4');
INSERT INTO klient(kliendiNimi,telefon,aadress,soiduKogemus)
VALUES ('Martin','telefon5','aadress5','soiduKogemus5');
SELECT * FROM klient

2.2

CREATE TABLE rendiLeping(
lepingID int not null Primary key IDENTITY(1,1),
rendiAlgus date,
rendiLopp date,
klientID int,
FOREIGN KEY (klientID) REFERENCES klient(klientID),
regNumber char(6),
FOREIGN KEY (regNumber) REFERENCES auto(regNumber),
rendiKestvus int,
hindKokku decimal(5,2),
tootajaID int,
FOREIGN KEY (tootajaID) REFERENCES tootaja(tootajaID)
);
INSERT INTO rendiLeping(rendiAlgus,rendiLopp,klientID,regNumber,rendiKestvus,hindKokku,tootajaID)
VALUES ('2015-9-21','2017-9-21',1,'KNA216',3,143,1);
INSERT INTO rendiLeping(rendiAlgus,rendiLopp,klientID,regNumber,rendiKestvus,hindKokku,tootajaID)
VALUES ('2015-12-16','2017-4-16',2,'MFA215',2,235,2);
INSERT INTO rendiLeping(rendiAlgus,rendiLopp,klientID,regNumber,rendiKestvus,hindKokku,tootajaID)
VALUES ('2015-1-2','2017-12-26',3,'MSF153',3,342,3);
INSERT INTO rendiLeping(rendiAlgus,rendiLopp,klientID,regNumber,rendiKestvus,hindKokku,tootajaID)
VALUES ('2015-2-25','2017-11-14',4,'KAF252',5,725,4);
INSERT INTO rendiLeping(rendiAlgus,rendiLopp,klientID,regNumber,rendiKestvus,hindKokku,tootajaID)
VALUES ('2015-5-12','2017-4-19',5,'AEG252',1,136,5);

2.3

CREATE TABLE tootaja(
tootajaID int not null Primary key IDENTITY(1,1),
tootajaNimi varchar(50),
ametID int,
FOREIGN KEY (ametID) REFERENCES amet(ametID),
);
INSERT INTO tootaja(tootajaNimi,ametID)
VALUES ('Maksim',1);
INSERT INTO tootaja(tootajaNimi,ametID)
VALUES ('Darja',2);
INSERT INTO tootaja(tootajaNimi,ametID)
VALUES ('Aleksandr',3);
INSERT INTO tootaja(tootajaNimi,ametID)
VALUES ('Pavel',2);
INSERT INTO tootaja(tootajaNimi,ametID)
VALUES ('Katerina',3);

2.4

CREATE TABLE amet(
ametID int not null Primary key IDENTITY(1,1),
amet varchar(30)
);
INSERT INTO amet(amet)
VALUES ('amet1');
INSERT INTO amet(amet)
VALUES ('amet2');
INSERT INTO amet(amet)
VALUES ('amet3');
SELECT * FROM amet

При помощи запросов Select выведи данные из  связанных таблиц.

select * from auto, mark, kaigukast
where mark.markID=auto.markID and kaigukast.kaigukastID=auto.kaigukastID
select * from auto
INNER JOIN mark ON mark.markID=auto.markID
INNER JOIN kaigukast ON kaigukast.kaigukastID=auto.kaigukastID

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

4.1.

Покажи в какой машине - какая коробка передач.
SELECT auto.regNumber, kaigukast.kaigukast
FROM auto, kaigukast
Where kaigukast.kaigukastID=auto.kaigukastID

4.2.

Покажи в какой машине - какая марка машины, используй INNER JOIN
SELECT auto.regNumber, mark.autoMark
FROM auto
INNER JOIN mark ON mark.markID=auto.markID

4.3.

Отобрази по каждому клиенту все договора аренды машин и машины, которые были взяты в арендую
SELECT klient.kliendiNimi, rendileping.lepingId, auto.regNumber
FROM rendileping
INNER JOIN klient ON rendileping.klientId=klient.klientId
INNER JOIN auto ON rendileping.regNumber=auto.regNumber

4.4.

Покажи сколько машин с автом коробкой, сколько с мануальной.
SELECT kaigukast.kaigukast, Count(auto.autoId) AS kogus
FROM auto, kaigukast
Where auto.kaigukastId=kaigukast.kaigukastId
GROUP by  kaigukast.kaigukast

4.5.

Отобрази какие машины - какой работник отдал в аренду.
SELECT auto.regNumber, tootaja.tootajaNimi 
from auto, tootaja, rendileping
where tootaja.tootajaId=rendileping.tootajaId and rendileping.regNumber=auto.regNumber

4.6.

Отобрази какие машины - какой работник отдал в аренду в выбранный промежуток времени.
SELECT auto.regNumber, tootaja.tootajaNimi 
from auto, tootaja, rendileping
where tootaja.tootajaId=rendileping.tootajaId and rendileping.regNumber=auto.regNumber
and (rendileping.rendiAlgus between '2022-01-10' and '2022-03-12')

У меня нет аренд в это время(2022-01-10 and 2022-03-12)

4.7.

Найди общее количество машин отданных в аренду в определенный промежуток времени и их суммарную стоимость.
SELECT COUNT(auto.regNumber) as kogus,sum(rendileping.hindKokku) as summa
FROM auto,tootaja,rendileping
WHERE tootaja.tootajaID=rendileping.tootajaID and rendileping.regNumber=auto.regNumber

4.8.

свой запрос - текст, sql, ответ
SELECT auto.regNumber, auto.varv
FROM auto
WHERE auto.varv=auto.varv

Пользователи.

5.1.

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

Процедуры

6.1.

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

GO
Create Procedure addKlient_Mark
	@kliendiNimi VARCHAR(50),
    @telefon varchar(20),
	@aadres varchar(50),
    @soidukogemus varchar(30),
	@autoMark VARCHAR(30)
AS
BEGIN
INSERT INTO klient(kliendiNimi, telefon, aadress, soidukogemus) 
VALUES(@kliendiNimi, @telefon, @aadres, @soidukogemus)
INSERT INTO mark(autoMark) 
VALUES(@autoMark);
END
EXEC addKlient_Mark @kliendiNimi='Denis',@telefon='telefon6',@aadres='aadress6',@soidukogemus='soiduKogemus6',@autoMark='Opel';
Select * from klient
Select * from mark

6.2.

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

GO
Create Procedure delete_dogovor
@id int
AS
BEGIN
DELETE FROM rendiLeping WHERE lepingID=@id;
END
EXEC delete_dogovor @id = 1;

6.3.

Свою процедуру на действие, отличное от ранее созданных.

O
Create Procedure dobavlenie_stolbika
AS
BEGIN
ALTER TABLE tootaja
ADD AGE int;
END
EXEC dobavlenie_stolbika

en_US