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