Загрузка данных


-- 1. Создание БД
CREATE DATABASE Автосалон;
-- Подключитесь к БД: \c Автосалон

-- 2. Таблицы
CREATE TABLE Автомобили (
    id SERIAL PRIMARY KEY,
    марка VARCHAR(50) NOT NULL,
    модель VARCHAR(50) NOT NULL,
    цена NUMERIC(12,2) NOT NULL CHECK (цена > 0),
    год_выпуска INT CHECK (год_выпуска BETWEEN 1900 AND 2100)
);

CREATE TABLE Клиенты (
    id SERIAL PRIMARY KEY,
    фамилия VARCHAR(50) NOT NULL,
    имя VARCHAR(50) NOT NULL,
    дата_рождения DATE NOT NULL
);

CREATE TABLE Продажи (
    id SERIAL PRIMARY KEY,
    автомобиль_id INT NOT NULL REFERENCES Автомобили(id),
    клиент_id INT NOT NULL REFERENCES Клиенты(id),
    дата_продажи DATE NOT NULL
);

-- 3. Данные
INSERT INTO Автомобили (марка, модель, цена, год_выпуска) VALUES
('BMW', 'X5', 5500000, 2023),
('Lada', 'Vesta', 1200000, 2022),
('Audi', 'A4', 1800000, NULL);

INSERT INTO Клиенты (фамилия, имя, дата_рождения) VALUES
('Иванов', 'Иван', '1975-05-10'),
('Кузнецов', 'Пётр', '2025-01-15'),
('Сидоров', 'Олег', '1990-08-20');

INSERT INTO Продажи (автомобиль_id, клиент_id, дата_продажи) VALUES
(1, 1, '2026-02-01'),
(2, 2, '2026-03-10'),
(3, 3, '2026-04-05');

-- 4. Запросы

-- Автомобили дороже 1 500 000, выпущенные после 2020
SELECT * FROM Автомобили WHERE цена > 1500000 AND год_выпуска > 2020;

-- Поднять цену всех Lada Vesta на 5%
UPDATE Автомобили SET цена = цена * 1.05 WHERE марка = 'Lada' AND модель = 'Vesta';

-- Всем авто без года выпуска установить 2026
UPDATE Автомобили SET год_выпуска = 2026 WHERE год_выпуска IS NULL;

-- Удалить клиентов, родившихся до 1980
DELETE FROM Продажи WHERE клиент_id IN (SELECT id FROM Клиенты WHERE дата_рождения < '1980-01-01');
DELETE FROM Клиенты WHERE дата_рождения < '1980-01-01';

-- Клиенты с фамилией на К, родившиеся в 2025
SELECT * FROM Клиенты WHERE фамилия LIKE 'К%' AND EXTRACT(YEAR FROM дата_рождения) = 2025;

-- Последние 5 продаж
SELECT * FROM Продажи ORDER BY дата_продажи DESC LIMIT 5;

-- Продажи BMW за 2026 год
SELECT п.* FROM Продажи п
JOIN Автомобили а ON п.автомобиль_id = а.id
WHERE а.марка = 'BMW' AND EXTRACT(YEAR FROM п.дата_продажи) = 2026;