Отчет по лабораторной работе №7 «Запросы на соединение отношений» по дисциплине «Базы данных». Базы данных 7. Отчет по лабораторной работе 7 Запросы на соединение отношении
![]()
|
МИНОБРНАУКИ РОССИИ Федеральное государственное бюджетное образовательное учреждение высшего образования «Тульский государственный университет» Институт прикладной математики и компьютерных наук Отчет по лабораторной работе №7 «Запросы на соединение отношений» по дисциплине «Базы данных» Выполнил студент группы 220611: Щеглов П.Р. Проверил: доцент каф. ВТ Набродова И.Н. Тула 2023 Цель работыЦель работы – изучить и практически применить запросов на соединение отношений. Задания на лабораторную работу1. Напишите запрос, демонстрирующий соединение двух таблиц с помощью конструкции SELECT ... FROM TABLE1, TABLE2 WHERE... . Перепишите тот же запрос с помощью конструкции JOIN. Убедитесь, что результаты выполнения запросов одинаковы. 2. Напишите запрос, демонстрирующий смысл и назначение конструкции LEFT JOIN. Перепишите его с помощью конструкции RIGHT JOIN. Убедитесь, что результаты выполнения запросов одинаковы. 3. Напишите запрос, в котором таблица соединяется (JOIN) сама с собой. 4. Напишите запрос, в котором агрегация происходит по результату соединения таблиц. То есть, в запросе должны присутствовать агрегирующая функция (SUM, AVG, MAX, MIN или COUNT), GRUOP BY и HAVING, WHERE и JOIN (внутренний или внешний). Будьте внимательны к этому заданию, оно высоко оценивается. Выполнение работыПродемонстрируем таблицы и их данные с которыми будем работать и выполнять нужные запросы (см. рисунок 1 и 2). ![]() Рисунок 1 - Данные таблиц products и sub ![]() ![]() Рисунок 2 - Данные таблицы clients ![]() ![]() ![]() Рисунок 3 - Объединение двух таблиц (1) Запрос через конструкцию SELECT ... FROM TABLE1, TABLE2 WHERE... выглядит следующим образом: select name, rating from products, clients where cost>100 and rating>200; Запрос через конструкцию JOIN выглядит следующим образом: select name, rating from products join clients on rating>200 where cost>100; ![]() Рисунок 4 - Объединение двух таблиц (2) О ![]() Операция left join создает левое внешнее соединение. С помощью левого внешнего соединения выбираются все записи первой (левой) таблицы, даже если они не соответствуют записям во второй (правой) таблице. Right join, работает аналогично, но для правой таблицы, соответственно. Запрос для левой части будет выглядеть следующим образом: ![]() ![]() Рисунок 5 - Список фруктов с рейтингом 100 (1) select rating, name from clients left join products on cost=100 where rating>200; Запрос для правой части будет выглядеть следующим образом: ![]() ![]() Рисунок 6 - Список фруктов с рейтингом 100 (2) select rating, name from clients right join products on cost=100 where rating>200; Запрос выводящий сорт и рейтинг товаров, начиная с 5 товара. ![]() ![]() Рисунок 7 - Список сортов и рейтинга товаров Запрос, в котором таблица соединяется (JOIN) сама с собой будет выглядеть следующим образом: select a.cname, b.rating from clients as a join clients as b on a.cnum_id = b.cnum_id where a.cnum_id>3004 and b.cnum_id>3004; Запрос, выводящий имя продуктов, их количество, а также сорт продукта, и количество таких записей. ![]() ![]() Рисунок 8 - Названия продуктов, их сорта и количество. Запрос будет выглядеть следующим образом: select distinct name, quantity, cname, count(*) from products join clients on rating>250 where cost=100 group by cname, name, quantity having quantity>21; Вывод В процессе выполнения лабораторной работы изучены и практически применены запросы на соединение отношений. |