AUTORENT andmebaas

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(6,2)

);

SELECT * FROM auto
-------------------------------------------------
 
CREATE TABLE mark(
markID int not null Primary key IDENTITY(1,1),
autoMark varchar(30) UNIQUE
);
--------------------------------------------------
INSERT INTO mark(autoMark)
VALUES ('Ziguli');
INSERT INTO mark(autoMark)
VALUES ('Lambordzini');
INSERT INTO mark(autoMark)
VALUES ('BMW');
SELECT * FROM mark;

 ———————————————————

CREATE TABLE kaigukast(
kaigukastID int not null Primary key IDENTITY(1,1),
kaigukast varchar(30) UNIQUE
);
INSERT INTO kaigukast(kaigukast)
VALUES ('Automaat');
INSERT INTO kaigukast(kaigukast)
VALUES ('Manual');
SELECT * FROM kaigukast;
-----------------------------------------------------
ALTER TABLE auto
ADD FOREIGN KEY (markID) REFERENCES mark(markID);
ALTER TABLE auto
ADD FOREIGN KEY (kaigukastID) REFERENCES kaigukast(kaigukastID);

CREATE TABLE klient(
klientIDint INT not null Primary key IDENTITY(1,1),
kliendiNimi varchar(50),
telefon varchar(20),
aadress varchar (50),
soiduKogemus varchar(30)
)

CREATE TABLE tootaja(
tootajaID INT not null Primary key IDENTITY(1,1),
tootajaNimi varchar(50),
ametID int,
foreign key (ametID) REFERENCES amet (ametID));

CREATE TABLE rendiLeping(
lepingID INT not null Primary key IDENTITY(1,1),
rendiAlgus date,
rendiLopp date,
hindKokku decimal(5,2),
klientIDint int,
regNumber varchar (6),
tootajaID int,
foreign key (klientIDint) REFERENCES klient(klientIDint));

CREATE TABLE rendiLeping(
lepingID INT not null Primary key IDENTITY(1,1),
rendiAlgus date,
rendiLopp date,
hindKokku decimal(5,2),
rendiKestvus int,
klientIDint int,
regNumber char (6),
tootajaID int,
foreign key (klientIDint) REFERENCES klient(klientIDint),
foreign key (regNumber) REFERENCES auto (regNumber),
foreign key (tootajaID) REFERENCES tootaja(tootajaID));
SELECT auto.regNumber, kaigukast.kaigukast
FROM auto, kaigukast

Where kaigukast.kaigukastID=auto.kaigukastID

Заполнение таблиц

INSERT INTO auto(regNumber,markID,v_aasta,kaigukastID,varv,km)
VALUES(‘800LOL’,3,’2015′,1,’MUST’,1000)

отображаю данные из трех таблиц с учетом вторичного ключа или связи между таблицами.

INSERT INTO klient(kliendiNimi,telefon,aadress,soiduKogemus)
VALUES(‘timur’,’aaaaa’,’sopruse’,’500′)

INSERT INTO tootaja(tootajaNimi,ametID)
VALUES(‘AAA’,3)

INSERT INTO amet(amet_nimi)
VALUES(‘timur’)

select * from rendiLeping

показываю в какой машине - какая коробка передач.
показываюв какой машине - какая марка машины, используй INNER JOIN
Отобразил по каждому клиенту все договора аренды машин и машины, которые были взяты в арендую

Показал сколько машин с автом коробкой, сколько с мануальной.
Отобразил какие машины - какой работник отдал в аренду.
Отобрази какие машины - какой работник отдал в аренду в выбранный промежуток времени.

SELECT auto.regNumber, tootaja.tootajaNimi
from auto, tootaja, rendileping
where tootaja.tootajaId=rendileping.tootajaId and rendileping.regNumber=auto.regNumber
and (rendileping.rendiAlgus between ‘2023-10-11’ and ‘2023-10-12’)

СОЗДАНИЕ ПОЛЬЗОВАТЕЛЯ

grant select to tootaja;
grant insert on object::rendLeping to tootaja;

select * from amet;
insert into rendLeping(rendiAlgus,rendiLopp,klientIDint,regNumber,rendiKestvus,hindKokku,tootajaID)
values('2023-10-11','2023-10-12',1,'800LOL',1,1,1);
create table test(
test int);

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

USE autorent_miskevych
go
CREATE PROCEDURE uus_mark_klient
@mark varchar(30),
@kliendinimi varchar(50),
@telefon varchar(20),
@aadress varchar(50),
@soiduKogemus varchar(30)
AS
BEGIN
INSERT INTO mark(autoMark)
VALUES (@mark);
SELECT * FROM mark;
INSERT INTO klient(kliendiNimi,telefon,aadress,soiduKogemus)
values(@kliendinimi,@telefon,@aadress,@soiduKogemus);
SELECT * FROM klient;
END

EXEC uus_mark_klient @mark=’bmw1′,@kliendinimi=’ashab’,@telefon=’a2233′,@aadress=’tellimuse’,@soiduKogemus=’100′;

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

CREATE PROCEDURE delete_dogovor
@kustutaId int
AS
BEGIN
SELECT * FROM rendLeping ;
DELETE FROM rendLeping
WHERE lepingID=@kustutaId;
SELECT * FROM rendLeping;
END

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

USE autorent_miskevych
go
CREATE PROCEDURE otsing_auto
@taht char(1)
AS
BEGIN
SELECT * FROM mark
WHERE autoMark LIKE @taht+’%’;
END

EXEC otsing_auto’b’