САМОСТОЯТЕЛЬНОЕ СОСТАВЛЕНИЕ SQL ЗАПРОСОВ
делал в XAMPP
создаю таблицу klient
CREATE TABLE klient(
klientID int not null PRIMARY KEY AUTO_INCREMENT,
kliendiNimi varchar(50),
telefon varchar(50),
aadress varchar(50),
soiduKogems varchar(50)
)

создаю таблицу rendiLeping
CREATE TABLE rendiLeping(
lepingID int not null PRIMARY KEY AUTO_INCREMENT,
rendiAlgus date,
rendiLopp date,
klientID int,
regnumber varchar(6),
rendiKestvus int,
hindKokku decimal(5,2),
tootajaID int)

создаю таблицу tootaja
CREATE TABLE tootaja(
tootajaID int not null PRIMARY KEY AUTO_INCREMENT,
tootajaNimi varchar(50),
ametID int)

создаю таблицу amet
CREATE TABLE amet(
ametID int not null PRIMARY KEY AUTO_INCREMENT,
ametinimi varchar(30)
)

создаю вторичные ключи для таблиц
ALTER TABLE rendileping
ADD FOREIGN KEY (klientID) REFERENCES klient(klientID);
ALTER TABLE rendileping
ADD FOREIGN KEY (regnumber) REFERENCES auto(regNumber);
ALTER TABLE rendileping
ADD FOREIGN KEY (tootajaID) REFERENCES tootaja(tootajaID);
ALTER TABLE tootaja
ADD FOREIGN KEY (ametID) REFERENCES amet(ametID);

связи таблиц

заполняю их
INSERT INTO amet(ametinimi)
values("Konsultant");
INSERT INTO klient(kliendiNimi,telefon,aadress,soiduKogems)
values("Vasja","58967425","sõpruse pst. 1","jah");
INSERT INTO tootaja(tootajaNimi,ametID)
values("Vladimir",1);
INSERT INTO auto(regNumber,markID,Dvarv,v_aasta,km)
values("954MSA",1,"must","2001","2000");
INSERT INTO mark(autoMark)
values("Mercedes-Benz");
INSERT INTO rendileping(rendiAlgus,rendiLopp,klientID,regnumber,rendiKestvus,hindKokku,tootajaID)
values("2023-01-01","2023-07-01",1,"954MSA",6,140,1);
При помощи запросов Select выведи данные из связанных таблиц.
select * from auto, mark, kaigukast
where mark.markID=auto.markID and kaigukast.kaigukastID=auto.kaigukastID

или через INNER JOIN
select * from auto
INNER JOIN mark ON mark.markID=auto.markID
INNER JOIN kaigukast ON kaigukast.kaigukastID=auto.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, rendileping.lepingId, auto.regNumber
FROM rendileping
INNER JOIN klient ON rendileping.klientId=klient.klientId
INNER JOIN auto ON rendileping.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, tootaja.tootajaNimi
from auto, tootaja, rendileping
where tootaja.tootajaId=rendileping.tootajaId and rendileping.regNumber=auto.regNumber

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

Найди общее количество машин отданных в аренду в определенный промежуток времени и их суммарную стоимость
SELECT COUNT(regnumber) AS kogus, SUM(hindKokku) as hind
from rendileping
where (rendileping.rendiAlgus between '2023-01-10' and '2023-03-12');

свой запрос – текст, sql, ответ
Показать у какого работника – какая профессия
SELECT tootaja.tootajaNimi, amet.ametinimi
FROM tootaja, amet
WHERE amet.ametID=tootaja.tootajaID

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

даю глобальное право на просмотр таблиц

даю право на добавление записей в таблицу rendileping

захожу за пользователя

смотрю другие таблицы

пользователь не может добавить запись в другие таблицы
INSERT INTO auto(regNumber,markID,varv,v_aasta,kaigukastID,km)
VALUES("765FGH",1,"kollanne","2010",1,1)

добавляю запись в таблицу rendileping
INSERT INTO rendileping(rendiAlgus,rendiLopp,klientID,regnumber,rendiKestvus,hindKokku,tootajaID)
values("2023-05-05","2023-10-05",1,"954MSA",5,140,1);


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

добавляю пользователя через процедуру


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

удаляю через процедуру


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

