MSSQL Server/AUTORENT

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

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

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

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;

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

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);

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

CREATE TABLE klient (
  klientID INT PRIMARY KEY Identity(1,1),
  kliendiNimi VARCHAR(50),
  telefon VARCHAR(20),
  aadress VARCHAR(50),
  soiduKogemus VARCHAR(30)
);
SELECT * FROM klient

Создание своей таблицы amet

CREATE TABLE amet (
  ametID INT PRIMARY KEY Identity(1,1),
  ametiNimi VARCHAR(50)
);
SELECT * FROM amet

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

CREATE TABLE tootaja (
  tootajaID INT PRIMARY KEY IDENTITY (1,1),
  tootajaNimi VARCHAR(50),
  ametID INT,
  FOREIGN KEY (ametID) REFERENCES amet(ametID),
);

SELECT * FROM tootaja

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

CREATE TABLE rendiLeping (
  lepingID INT PRIMARY KEY IDENTITY (1,1),
  rendiAlgus DATE,
  rendiLopp DATE,
  klientID INT,
  regNumber CHAR(6) UNIQUE,
  rendiKestvus INT,
  hindKokku DECIMAL(5,2),
  tootajaID INT,
  FOREIGN KEY (klientID) REFERENCES Klient(klientID),
  FOREIGN KEY (regNumber) REFERENCES auto(regNumber),
  FOREIGN KEY (tootajaID) REFERENCES tootaja(tootajaID)
);

SELECT * FROM rendiLeping

Диаграмма

SQL запросы

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

в какой машине — какая коробка передач

Покажи в какой машине — какая марка машины, используй INNER JOIN

Отобрази по каждому клиенту все договора аренды машин и машины, которые были взяты в арендую

Покажи сколько машин с автом коробкой, сколько с мануальной.

Отобрази какие машины — какой работник отдал в аренду.

Отобрази какие машины — какой работник отдал в аренду в выбранный промежуток времени.

Найди общее количество машин отданных в аренду в определенный промежуток времени и их суммарную стоимость.

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

Ограничение прав пользователя

USE [AUTORENT_Tsepelevits];
CREATE USER tootaja FOR LOGIN tootaja;

GRANT SELECT, INSERT ON [dbo].[Rendileping] TO tootaja;

Процедуры

Добавление марки

CREATE PROCEDURE addMark
    @AutoMark VARCHAR(30)
AS
BEGIN
    INSERT INTO mark (autoMark)
    VALUES (@AutoMark)
END
GO

Добавление клиента

CREATE PROCEDURE addKlient
    @KliendiNimi VARCHAR(50),
    @Telefon VARCHAR(20),
    @Aadress VARCHAR(50),
    @SoiduKogemus VARCHAR(30)
AS
BEGIN
    INSERT INTO klient (kliendiNimi, telefon, aadress, soiduKogemus)
    VALUES (@KliendiNimi, @Telefon, @Aadress, @SoiduKogemus)
END
GO

Удаление контракта по ID

CREATE PROCEDURE DeleteContract
    @ContractID INT
AS
BEGIN
    DELETE FROM rendiLeping
    WHERE lepingID = @ContractID
END
GO

Обновление Клиента

CREATE PROCEDURE UpdateKlient
    @KlientID INT,
    @FirstName VARCHAR(50),
    @LastName VARCHAR(50),
    @Telefon VARCHAR(20),
    @Aadress VARCHAR(50),
    @SoiduKogemus VARCHAR(30)
AS
BEGIN
    UPDATE klient
    SET kliendiNimi = @FirstName + ' ' + @LastName,
        telefon = @Telefon,
        aadress = @Aadress,
        soiduKogemus = @SoiduKogemus
    WHERE klientID = @KlientID
END
GO