ЛР-1
.docxМинистерство цифрового развития, связи и массовых коммуникаций Российской Федерации
Ордена Трудового Красного Знамени
Федеральное государственное бюджетное образовательное учреждение высшего образования
Кафедра «Математическая кибернетики и информационные технологии»
Отчёт по лабораторной работе №1
по дисциплине «Математические методы в больших данных» на тему:
«Простейшие запросы»
Выполнили: студенты БСТ****
Проверила: Пугачёва Мария Алексеевна
Москва 2021
Оглавление
Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации 1
Ордена Трудового Красного Знамени 1
Федеральное государственное бюджетное образовательное учреждение высшего образования 1
Кафедра «Математическая кибернетики и информационные технологии» 1
Отчёт по лабораторной работе №1 1
по дисциплине «Математические методы в больших данных» на тему: 1
«Простейшие запросы» 1
1
1
Выполнили: студенты БСТ**** 1
1
Проверила: Пугачёва Мария Алексеевна 1
1
Москва 2021 1
Оглавление 1
1. Установить MySQL. Можно вместе со средой или использовать альтернативы DBeaver/DataGrip. 4
2. Запустить dump-файл для создания и заполнения базы 4
3. Придумать запросы в соответствии со структурой базы и реализовать их: 4
4 запроса по одной таблице 4
3 запроса на join двух таблиц 4
2 запроса на join 2х и более таблиц 4
2 запроса с использованием вложенных запросов 4
Результаты работы зафиксировать в формате отчета со скриншотами работы. Желательно, продемонстрировать работы на своем ПК. 4
В качестве рабочей среды использована MySQL Workbench 5
Запросы по одной таблице 5
Запрос 1 - получение всех книг с указанием автора 5
SELECT title,author FROM books; 5
5
Запрос 2 - получение должностей работников с зарплатой от 60 000 5
SELECT DISTINCT position FROM employees WHERE salary >= 60000; 5
5
Запрос 3 - получение всех поставщиков, с которыми работали до 2020 года 6
SELECT DISTINCT supplier FROM test_database.supplies WHERE date < DATE("2020-01-01"); 6
6
Запрос 4 - получение кол-ва книг у каждого автора 6
SELECT author, COUNT(author) FROM books GROUP BY author; 6
6
Запросы на join двух таблиц 6
Запрос 1 - получение имён клиентов в заказах с указанием адреса доставки 6
SELECT clients.full_name, orders.delivery_address FROM clients INNER JOIN orders ON (clients.id = orders.clients_id); 6
7
Запрос 2 - получение названий всех имеющихся на складах книг 7
SELECT DISTINCT books.title FROM books INNER JOIN spaces_has_books ON (books.ISBN = spaces_has_books.books_ISBN) WHERE spaces_has_books.count_in_space > 0; 7
7
Запрос 3 - получение имён и должностей работников, которые исполняли заказы в 2019 году 7
SELECT DISTINCT employees.full_name,employees.position FROM employees INNER JOIN orders ON (employees.id = orders.employees_id) WHERE orders.delivery_date RLIKE "^2020-"; 7
8
Запросы на join двух и более таблиц 8
Запрос 1 - получение имён клиентов и работников в заказах с указанием адреса доставки и стоимости заказа 8
SELECT employees.full_name as "Работник", clients.full_name as "Клиент", orders.delivery_address, orders.total_price FROM clients INNER JOIN orders ON (clients.id = orders.clients_id) INNER JOIN employees ON (employees.id = orders.employees_id); 8
8
Запрос 2 - получение имён работников, адресов складов в запросах с указанием дат запроса и его выполнения 8
SELECT employees.full_name, spaces.address, requests.request_date, requests.complete_date FROM employees INNER JOIN employees_has_requests ON (employees.id = employees_has_requests.employees_id) INNER JOIN requests ON (requests.id = employees_has_requests.requests_id) INNER JOIN spaces ON (spaces.id = requests.spaces_id); 8
9
Запросы с использованием вложенных запросов 9
Запрос 1 - получение названий книг, которые были заказаны с ценой более 500 рублей 9
SELECT books.title FROM books WHERE books.ISBN IN (SELECT books_has_orders.books_ISBN FROM books_has_orders WHERE books_has_orders.position_cost/books_has_orders.book_count > 500); 9
9
Запрос 2 - получение названий книг, которые заказывали в 2020 году 9
SELECT books.title FROM books WHERE books.ISBN IN (SELECT books_has_orders.books_ISBN FROM books_has_orders WHERE books_has_orders.orders_id IN (SELECT orders.id FROM orders WHERE orders.order_date RLIKE "^2020")); 9
10
Мною было освоено использование запросов SELECT в запросе данных из одной таблицы, из нескольких с помощью оператора JOIN, а также вложенные запросы. 11
Задание
Установить MySQL. Можно вместе со средой или использовать альтернативы DBeaver/DataGrip.
Запустить dump-файл для создания и заполнения базы
Придумать запросы в соответствии со структурой базы и реализовать их:
4 запроса по одной таблице
3 запроса на join двух таблиц
2 запроса на join 2х и более таблиц
2 запроса с использованием вложенных запросов
Результаты работы зафиксировать в формате отчета со скриншотами работы. Желательно, продемонстрировать работы на своем ПК.
Выполнение работы
В качестве рабочей среды использована MySQL Workbench
Запросы по одной таблице
Запрос 1 - получение всех книг с указанием автора
SELECT title,author FROM books;
Запрос 2 - получение должностей работников с зарплатой от 60 000
SELECT DISTINCT position FROM employees WHERE salary >= 60000;
Запрос 3 - получение всех поставщиков, с которыми работали до 2020 года
SELECT DISTINCT supplier FROM test_database.supplies WHERE date < DATE("2020-01-01");
Запрос 4 - получение кол-ва книг у каждого автора
SELECT author, COUNT(author) FROM books GROUP BY author;
Запросы на join двух таблиц
Запрос 1 - получение имён клиентов в заказах с указанием адреса доставки
SELECT clients.full_name, orders.delivery_address FROM clients INNER JOIN orders ON (clients.id = orders.clients_id);
Запрос 2 - получение названий всех имеющихся на складах книг
SELECT DISTINCT books.title FROM books INNER JOIN spaces_has_books ON (books.ISBN = spaces_has_books.books_ISBN) WHERE spaces_has_books.count_in_space > 0;
Запрос 3 - получение имён и должностей работников, которые исполняли заказы в 2019 году
SELECT DISTINCT employees.full_name,employees.position FROM employees INNER JOIN orders ON (employees.id = orders.employees_id) WHERE orders.delivery_date RLIKE "^2020-";
Запросы на join двух и более таблиц
Запрос 1 - получение имён клиентов и работников в заказах с указанием адреса доставки и стоимости заказа
SELECT employees.full_name as "Работник", clients.full_name as "Клиент", orders.delivery_address, orders.total_price FROM clients INNER JOIN orders ON (clients.id = orders.clients_id) INNER JOIN employees ON (employees.id = orders.employees_id);
Запрос 2 - получение имён работников, адресов складов в запросах с указанием дат запроса и его выполнения
SELECT employees.full_name, spaces.address, requests.request_date, requests.complete_date FROM employees INNER JOIN employees_has_requests ON (employees.id = employees_has_requests.employees_id) INNER JOIN requests ON (requests.id = employees_has_requests.requests_id) INNER JOIN spaces ON (spaces.id = requests.spaces_id);
Запросы с использованием вложенных запросов
Запрос 1 - получение названий книг, которые были заказаны с ценой более 500 рублей
SELECT books.title FROM books WHERE books.ISBN IN (SELECT books_has_orders.books_ISBN FROM books_has_orders WHERE books_has_orders.position_cost/books_has_orders.book_count > 500);
Запрос 2 - получение названий книг, которые заказывали в 2020 году
SELECT books.title FROM books WHERE books.ISBN IN (SELECT books_has_orders.books_ISBN FROM books_has_orders WHERE books_has_orders.orders_id IN (SELECT orders.id FROM orders WHERE orders.order_date RLIKE "^2020"));
Вывод
Мною было освоено использование запросов SELECT в запросе данных из одной таблицы, из нескольких с помощью оператора JOIN, а также вложенные запросы.