МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Інститут комп’ютерних технологій, автоматики та метрології
кафедра “Електронних обчислювальних машин”
/
Звіт
до лабораторної роботи № 2
з дисципліни «Організація баз даних»
на тему:
«Використання запитів SELECT, WHERE, LIKE, HAVING, GROUP BY, ORDER BY»
Варіант 8
Львів 202*
ЛАБОРАТОРНА РОБОТА №2
Використання запитів SELECT, WHERE, LIKE, HAVING, GROUP BY, ORDER BY
Мета роботи: отримати навички створення баз даних засобами Microsoft SQL Server 2012, а також заповнення даними створеної бази даних.
ЗАВДАННЯ
1. Написати по три запити в використанням:
SELECT
WHERE
LIKE
HAVING
GROUP BY
ORDER BY
ПОРЯДОК ВИКОНАННЯ
Відповідно до діаграми побудованої в лабораторній роботі No1 створити скріпти для таблиць. Таблиці повинні містити первинні та вторинні ключі відповідно діаграм (приклад https://www.youtube.com/watch?v=WKDAX7wN4QQ )
Наповнити таблиці даними (кожна таблиця повинна містити не менше 10 рядків) приклад https://www.youtube.com/watch?v=Kgr8pqEn_ak
Ознайомитись і вивчити команди, які описані у теоретичних відомостях
При захисті лабораторної роботи взяти індивідуальне завдання у викладача
Вхідні дані
Варіант
Завдання
8
База даних автосалону
Виконання завдання
-- Створюємо базу даних для автосалонуCREATE DATABASE CAR_DEALERSHIP;GOUSE CAR_DEALERSHIP;GO-- Таблиця співробітниківCREATE TABLE Employees( employee_id INT PRIMARY KEY, first_name VARCHAR(100) NOT NULL, last_name VARCHAR(100) NOT NULL, position VARCHAR(100) NOT NULL, salary DECIMAL(10, 2) NOT NULL);GO-- Таблиця автомобілівCREATE TABLE Cars( car_id INT PRIMARY KEY, brand VARCHAR(100) NOT NULL, model VARCHAR(100) NOT NULL, year INT NOT NULL, price DECIMAL(10, 2) NOT NULL);GO-- Таблиця клієнтів (посилається на менеджера із таблиці Employees)CREATE TABLE Customers( customer_id INT PRIMARY KEY, first_name VARCHAR(100) NOT NULL, last_name VARCHAR(100) NOT NULL, date_of_birth DATE, -- можна використовувати DATE або DATETIME phone VARCHAR(25), email VARCHAR(100), personal_manager_id INT, FOREIGN KEY (personal_manager_id) REFERENCES Employees (employee_id));GO-- Таблиця особливостей автомобілів (ключова комбінація car_id + feature_name)CREATE TABLE Car_Features( car_id INT NOT NULL, feature_name VARCHAR(100) NOT NULL, PRIMARY KEY (car_id, feature_name), FOREIGN KEY (car_id) REFERENCES Cars (car_id));GO-- Таблиця продажів (посилається на автомобілі та співробітників)CREATE TABLE Sales( sale_id INT PRIMARY KEY, car_id INT, employee_id INT, sale_date DATE, total_price DECIMAL(10, 2), FOREIGN KEY (car_id) REFERENCES Cars (car_id), FOREIGN KEY (employee_id) REFERENCES Employees (employee_id));GO-- Додавання даних до таблиці EmployeesINSERT INTO Employees (employee_id, first_name, last_name, position, salary)VALUES (1, 'John', 'Smith', 'Sales Manager', 60000.00), (2, 'Emily', 'Johnson', 'Sales Representative', 45000.00), (3, 'Michael', 'Brown', 'Service Manager', 55000.00), (4, 'Sarah', 'Davis', 'Finance Specialist', 50000.00), (5, 'David', 'Wilson', 'Sales Representative', 45000.00), (6, 'Jennifer', 'Martinez', 'Customer Service', 40000.00), (7, 'Robert', 'Anderson', 'Mechanic', 48000.00), (8, 'Lisa', 'Taylor', 'Marketing Specialist', 52000.00), (9, 'Thomas', 'Jones', 'Sales Representative', 45000.00), (10, 'Jessica', 'Clark', 'General Manager', 75000.00);-- Додавання даних до таблиці CarsINSERT INTO Cars (car_id, brand, model, year, price)VALUES (1, 'Toyota', 'Camry', 2023, 28999.99), (2, 'Honda', 'Accord', 2023, 30499.99), (3, 'Ford', 'Mustang', 2023, 40999.99), (4, 'Chevrolet', 'Silverado', 2023, 45500.00), (5, 'BMW', 'X5', 2023, 65000.00), (6, 'Mercedes', 'C-Class', 2023, 55000.00), (7, 'Audi', 'A4', 2023, 52000.00), (8, 'Tesla', 'Model 3', 2023, 48000.00), (9, 'Nissan', 'Altima', 2023, 26500.00), (10, 'Volkswagen', 'Golf', 2023, 28000.00);-- Додавання даних до таблиці CustomersINSERT INTO Customers (customer_id, first_name, last_name, date_of_birth, phone, email, personal_manager_id)VALUES (1, 'William', 'Johnson', '1985-05-15', '555-123-4567', 'william.johnson@email.com', 1), (2, 'Emma', 'Williams', '1990-03-22', '555-234-5678', 'emma.williams@email.com', 2), (3, 'Oliver', 'Brown', '1978-12-10', '555-345-6789', 'oliver.brown@email.com', 1), (4, 'Sophia', 'Miller', '1995-08-05', '555-456-7890', 'sophia.miller@email.com', 5), (5, 'James', 'Davis', '1982-06-30', '555-567-8901', 'james.davis@email.com', 2), (6, 'Charlotte', 'Garcia', '1988-11-18', '555-678-9012', 'charlotte.garcia@email.com', 9), (7, 'Benjamin', 'Rodriguez', '1975-04-25', '555-789-0123', 'benjamin.rodriguez@email.com', 1), (8, 'Amelia', 'Wilson', '1992-09-12', '555-890-1234', 'amelia.wilson@email.com', 5), (9, 'Henry', 'Anderson', '1980-07-08', '555-901-2345', 'henry.anderson@email.com', 9), (10, 'Mia', 'Thomas', '1998-01-20', '555-012-3456', 'mia.thomas@email.com', 2);-- Додавання даних до таблиці Car_FeaturesINSERT INTO Car_Features (car_id, feature_name)VALUES (1, 'Bluetooth'), (1, 'Backup Camera'), (1, 'Cruise Control'), (2, 'Bluetooth'), (2, 'Navigation'), (3, 'Leather Seats'), (3, 'Sunroof'), (4, 'Four-Wheel Drive'), (4, 'Towing Package'), (5, 'Premium Sound System'), (5, 'Heated Seats'), (5, 'Adaptive Cruise Control'), (6, 'Lane Departure Warning'), (6, 'Parking Sensors'), (7, 'Blind Spot Detection'), (8, 'Autopilot'), (8, 'Electric Range 300 miles'), (9, 'Fuel Efficiency'), (10, 'Compact Size');-- Додавання даних до таблиці SalesINSERT INTO Sales (sale_id, car_id, employee_id, sale_date, total_price)VALUES (1, 1, 1, '2023-01-15', 28999.99), (2, 3, 2, '2023-01-22', 40999.99), (3, 5, 1, '2023-02-05', 65000.00), (4, 7, 5, '2023-02-18', 52000.00), (5, 9, 9, '2023-03-10', 26500.00), (6, 2, 2, '2023-03-25', 30499.99), (7, 4, 1, '2023-04-08', 45500.00), (8, 6, 5, '2023-04-20', 55000.00), (9, 8, 9, '2023-05-12', 48000.00), (10, 10, 2, '2023-05-30', 28000.00);-- SELECT запитиSELECT brand, model, price FROM Cars;SELECT first_name, last_name, position FROM Employees;SELECT customer_id, first_name, last_name FROM Customers;-- WHERE запитиSELECT brand, model, price FROM Cars WHERE price < 50000;SELECT first_name, last_name, salary FROM Employees WHERE position = 'Sales Representative';SELECT first_name, last_name, email FROM Customers WHERE personal_manager_id = 1;-- LIKE запитиSELECT brand, model FROM Cars WHERE model LIKE '%a%';SELECT first_name, last_name FROM Employees WHERE last_name LIKE 'J%';SELECT first_name, last_name FROM Customers WHERE email LIKE '%email.com';-- GROUP BY запитиSELECT employee_id, COUNT(*) as total_sales FROM Sales GROUP BY employee_id;SELECT car_id, COUNT(*) as feature_count FROM Car_Features GROUP BY car_id;SELECT YEAR(sale_date) as sale_year, SUM(total_price) as yearly_revenue FROM Sales GROUP BY YEAR(sale_date);-- HAVING запитиSELECT employee_id, COUNT(*) as total_sales FROM Sales GROUP BY employee_id HAVING COUNT(*) >= 2;SELECT car_id, COUNT(*) as feature_count FROM Car_Features GROUP BY car_id HAVING COUNT(*) > 1;SELECT YEAR(sale_date) as sale_year, SUM(total_price) as yearly_revenue FROM Sales GROUP BY YEAR(sale_date) HAVING SUM(total_price) > 50000;-- ORDER BY запитиSELECT brand, model, price FROM Cars ORDER BY price DESC;SELECT first_name, last_name, salary FROM Employees ORDER BY salary DESC;SELECT car_id, sale_date, total_price FROM Sales ORDER BY sale_date;
Висновок: Я отримав навички створення баз даних засобами MySQL, а також заповнення даними створеної бази даних.