Untitled

mail@pastecode.io avatar
unknown
mysql
7 months ago
4.5 kB
1
Indexable
Never
-- Створення таблиці "Клієнти"
CREATE TABLE Клієнти (
    Id INT PRIMARY KEY,
    ПІБ VARCHAR(255),
    Посвідчення_водія VARCHAR(255),
    Дата_отримання_посвідчення_водія DATE
);

-- Створення таблиці "Моделі"
CREATE TABLE Моделі (
    Id INT PRIMARY KEY,
    Назва_моделі VARCHAR(255),
    Марка VARCHAR(255),
    Ціна_за_день_оренди DECIMAL(10, 2),
    Місткість INT,
    Тип_кузова VARCHAR(255)
);

-- Створення таблиці "Автомобілі"
CREATE TABLE Автомобілі (
    Id INT PRIMARY KEY,
    Держномер VARCHAR(20),
    Рік_випуску INT,
    Колір VARCHAR(255),
    Стан VARCHAR(255),
    Пробіг INT,
    Модель_Id INT,
    FOREIGN KEY (Модель_Id) REFERENCES Моделі(Id)
);

-- Створення таблиці "Договори_на_оренду"
CREATE TABLE Договори_на_оренду (
    Id INT PRIMARY KEY,
    Клієнт_Id INT,
    Автомобіль_Id INT,
    Дата_укладення_договору DATETIME,
    Тривалість_договору NUMERIC(3, 0),
    Вартість_договору DECIMAL(10, 2),
    Дата_повернення DATETIME,
    FOREIGN KEY (Клієнт_Id) REFERENCES Клієнти(Id),
    FOREIGN KEY (Автомобіль_Id) REFERENCES Автомобілі(Id)
);

-- Перевірка на термін дії водійського посвідчення
DELIMITER //
CREATE TRIGGER Перевірка_терміну_посвідчення
BEFORE INSERT ON Договори_на_оренду
FOR EACH ROW
BEGIN
    DECLARE дія DATE;
    SELECT Дата_отримання_посвідчення_водія INTO дія FROM Клієнти WHERE Id = NEW.Клієнт_Id;
    IF DATE_ADD(дія, INTERVAL 10 YEAR) < NOW() THEN
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Термін дії посвідчення закінчився';
    END IF;
END;
//
DELIMITER ;


ALTER TABLE Клієнти
ADD COLUMN Новий_стовпець VARCHAR(255);

ALTER TABLE Моделі
MODIFY COLUMN Ціна_за_день_оренди DECIMAL(12, 2);

UPDATE Автомобілі
SET Стан = 'В хорошому стані'
WHERE Id = 1;

DELETE FROM Договори_на_оренду
WHERE Клієнт_Id = 2 AND Автомобіль_Id = 1;

-- Вставка даних в таблицю "Клієнти"
INSERT INTO Клієнти (Id, ПІБ, Посвідчення_водія, Дата_отримання_посвідчення_водія)
VALUES
    (1, 'Іванов Іван Іванович', 'AB123456', '2020-01-01'),
    (2, 'Петров Петро Петрович', 'CD789012', '2015-03-15'),
    (3, 'Сидоров Сидір Сидорович', 'EF345678', '2019-06-20');

-- Вставка даних в таблицю "Моделі"
INSERT INTO Моделі (Id, Назва_моделі, Марка, Ціна_за_день_оренди, Місткість, Тип_кузова)
VALUES
    (1, 'Civic', 'Honda', 50.00, 5, 'Седан'),
    (2, 'Camry', 'Toyota', 60.00, 5, 'Седан'),
    (3, 'X5', 'BMW', 80.00, 7, 'Позашляховик');

-- Вставка даних в таблицю "Автомобілі"
INSERT INTO Автомобілі (Id, Держномер, Рік_випуску, Колір, Стан, Пробіг, Модель_Id)
VALUES
    (1, 'АВ1234ВС', 2020, 'Чорний', 'В ідеальному стані', 10000, 1),
    (2, 'ВС5678АВ', 2018, 'Сріблястий', 'Технічно справний', 15000, 2),
    (3, 'СВ9012ІВ', 2019, 'Синій', 'Є невеликі пошкодження', 20000, 3);

-- Вставка даних в таблицю "Договори_на_оренду"
INSERT INTO Договори_на_оренду (Id, Клієнт_Id, Автомобіль_Id, Дата_укладення_договору, Тривалість_договору, Вартість_договору, Дата_повернення)
VALUES
    (1, 1, 2, '2023-01-01 08:00:00', 7, 420.00, '2024-01-08 10:00:00'),
    (2, 2, 1, '2023-02-15 12:00:00', 5, 300.00, '2024-02-20 15:30:00'),
    (3, 3, 3, '2023-03-20 10:30:00', 10, 800.00, '2024-02-20 15:30:00');

SELECT * FROM Клієнти;
SELECT * FROM Моделі;
SELECT * FROM Автомобілі;
SELECT * FROM Договори_на_оренду;





Leave a Comment