Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаб 5.docx
Скачиваний:
14
Добавлен:
28.06.2021
Размер:
160.16 Кб
Скачать

Практическая работа

При выполнении лабораторной работы необходимо:

  • для заданной предметной области построить многотабличный запрос на выборку с использованием объединения;

  • для заданной предметной области построить запрос на выборку, содержащий вложенный запрос;

  • составить отчет по лабораторной работе.

Ход выполнения Описание основных команд

Основное объединение. Набор таблиц, перечисленных в выражении FROM и разделенных запятыми, – это декартово произведение (полное или перекрестное объединение), которое возвращает полный набор ком­бинаций. Добавление к нему условного выражения WHERE превраща­ет его в объединение по эквивалентности, ограни­чивающее число возвращаемых запросом строк.

Вместо запятой в выражении FROM можно использовать ключевое слово JOIN. В этом случае вместо WHERE лучше использовать ключевое слово ON.

Вместо JOIN с тем же результатом можно использовать CROSS JOIN (перекрестное объединение) или INNER JOIN (внутреннее объединение).

Вложенный запрос. Позволяет использовать результат, возвращаемый одним запросом, в другом запросе. Так как результат возвращает только оператор select, то в качестве вложенного запроса всегда выступает SELECT-запрос. В качестве внешнего запроса может выступать запрос с участием любого SQL-оператора: select, insert, update, delete, create table и др.

Получить аналогичный результат можно при помощи многотабличного запроса, но имеется ряд задач, которые решаются только при помощи вложенных запросов. Вложенный запрос может применяться не только с условием WHERE, но и в конструкциях DISTINCT, GROUP BY, ORDER BY, LIMIT и т. д. Различают:

  • вложенные запросы, возвращающие одно значение;

  • вложенные запросы, возвращающие несколько строк.

Ввод команд

Найдем названия книг в текущих заказах и их количество после того, как все существующие заказы будут закрыты, с помощью данного запроса:

SELECT book_name, book_count - order_number as total FROM books JOIN orders ON book_ID = order_book_ID ORDER BY book_name;

Р езультат работы запроса представлен на рис. 1:

Рис. 1. Результат многотабличного запроса с использованием оператора объединения

Найдем имена людей, совершивших каждый из существующих заказов, и полную цену этих заказов с помощью данного запроса:

SELECT user_name, user_surname, total_count.total FROM users JOIN (SELECT order_user_ID, book_price * order_number AS total FROM books JOIN orders ON book_ID = order_book_ID) AS total_count ON total_count.order_user_ID = user_ID;

Р езультат работы запроса представлен на рис. 2:

Рис. 2. Результат запроса на выборку, содержащий вложенный запрос

Выводы

В данной работе было рассмотрено создание и применение сложных запросов на выборку, содержащих объединение нескольких таблиц и использующих подзапросы. Были составлены 2 сложных запроса на выборку к базе данных books и продемонстрированы результаты их работы.

Соседние файлы в предмете Интеллектуальные базы данных