Работа с субд mysql Учебное пособие по выполнению лабораторных работ


Скачать 1.11 Mb.
Название Работа с субд mysql Учебное пособие по выполнению лабораторных работ
страница 8/16
Тип Учебное пособие
rykovodstvo.ru > Руководство эксплуатация > Учебное пособие
1   ...   4   5   6   7   8   9   10   11   ...   16

Лабораторная работа № 5
Создание сложных запросов на выборку


Теоретические сведения

Рассмотрим следующие вопросы:

  • использование объединений в запросах к нескольким таблицам;

  • создание вложенных запросов.

В реаль­ных приложениях часто требуется использовать сразу несколько таблиц БД. Запросы, которые обращаются одновременно к нескольким таблицам, называются многотабличными или сложными запросами.

Абсолютные ссылки на базы данных и таблицы. В запросе мож­но прямо указывать необходимую БД и таблицу. Напри­мер, можно представить ссылку на столбец u_surname из таблицы users в виде users.u_surname. Аналогично можно уточнить БД, таблица из которой упоминается в запросе. Если необходимо, то вместе с БД и таблицей можно указать и столбец, например:



При использовании сложных запросов это позволяет избежать двусмысленности при указании источника необходи­мой информации.

Использование объединений для запросов к нескольким таблицам. Хорошо спроектированная реляционная БД эффективна из-за связей между таблицами. При выборе информации из нескольких таблиц такие связи называют объединениями.

В качестве примера объединения двух таблиц рассмотрим запрос, извлекающий из БД book фамилии покупателей вместе с номерами сделанных ими заказов:



Выражение WHERE важно с точки зрения получения ре­зультата. Набор условий, используемых для объединения таб­лиц, называют условием объединения. В данном примере условие связы­вает таблицы orders и users по внешним ключам.

Объединение нескольких таблиц аналогично объединению двух таблиц. Например, необходимо выяснить, какому каталогу принадлежит товарная позиция из заказа, сделанного 10 февраля 2009 г. в 09:40:29:



Самообъединение таблиц. Можно объединить таб­лицу саму с собой (когда интересуют связи между строками одной и той же таблицы). Пусть нужно выяснить, какие книги есть в каталоге, содержащем книгу с названием «Компьютерные сети». Для этого необходимо найти в таблице books номер каталога (b_cat_ID) с этой книгой, а затем посмотреть в таблице books книги этого каталога.



В этом запросе для таблицы books определены два разных псев­донима (две от­дельных таблицы b1 и b2, которые должны содержать одни и те же данные). После этого они объединяются, как любые другие таблицы. Сна­чала ищется строка в таблице b1, а затем в таблице b2 – строки с тем же значением номера каталога.

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

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



Вместо JOIN с тем же результатом можно использовать CROSS JOIN (перекрестное объединение) или INNER JOIN (внутреннее объединение). Пример запроса, выдающего число товарных позиций в каталогах:



Допустим, происходит расширение ассортимента и в списке каталогов появляется новый каталог «Компьютеры»:



Предыдущий запрос не отразит наличие нового каталога (таблица books не содержит записей, относящихся к новому каталогу). Выходом является использование левого объединения (таблица catalogs должна быть левой таблицей):



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



В список не входят покупатели, которые не сделали ни одной покупки. Чтобы вывести полный список покупателей, необходимо вместо перекрестного объединения таблиц users и orders использовать левое объединение (левой таблицей должна быть таблица users):



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

Пусть требуется вывести названия и цены товарных позиций из таблицы books для каталога «Базы данных» таблицы catalogs:



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

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

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

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



Наиболее часто вложенные запросы используются в операциях сравнения в условиях, которые задаются ключевыми словами WHERE, HAVING или ON.

Однако следующий вложенный запрос вернет ошибку:



Чтобы выбрать строки из таблицы catalogs, у которых первичный ключ совпадает с одним из значений, возвращаемых вложенным запросом, следует воспользоваться конструкцией IN:



Ключевое слово ANY может применяться с использованием любого оператора сравнения. Используется логика ИЛИ, т. е. достаточно, чтобы срабатывало хотя бы одно из многих условий. Запрос вида WHERE X > ANY (SELECT Y …) можно интерпретировать как «где X больше хотя бы одного выбранного Y». Соответственно, запрос вида WHERE X < ANY (SELECT Y …) интерпретируется как «где X меньше хотя бы одного выбранного Y». Рассмотрим запрос, возвращающий имена и фамилии покупателей, совершивших хотя бы одну покупку:



Ключевое слово ALL также может применяться с использованием любого оператора сравнения, но при этом используется логика И, то есть должны срабатывать все условия. Запрос вида WHERE X > ALL (SELECT Y …) интерпретируется как «где X больше любого выбранного Y». Соответственно, запрос вида WHERE X < ALL (SELECT Y …) интерпретируется как «где X меньше, чем все выбранные Y». Рассмотрим запрос, возвращающий все товарные позиции, цена которых превышает среднюю цену каждого из каталогов:



Результирующая таблица, возвращаемая вложенным запросом, может не содержать ни одной строки. Для проверки этого факта могут использоваться ключевые слова EXISTS и NOT EXISTS.

Запрос, формирующий список покупателей, совершивших хотя бы одну покупку, можно записать следующим образом:



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

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

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

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

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


Пример выполнения работы

1. Создадим многотабличный запрос на выборку, который выводит фамилии, имена и отчества покупателей магазина, сделавших менее двух покупок:



2. Создадим запрос на выборку с вложенным запросом, выводящим перечень книг, которые не заказывались покупателями:


1   ...   4   5   6   7   8   9   10   11   ...   16

Похожие:

Работа с субд mysql Учебное пособие по выполнению лабораторных работ icon Описание субд mysql
Субд mysql является программным обеспечением с открытым исходным кодом, распространяемым по лицензии gnu (gpl) и коммерческой лицензии...
Работа с субд mysql Учебное пособие по выполнению лабораторных работ icon Учебное пособие по выполнению лабораторных работ разработано в соответствии...
Механизация и электрификация сельскохозяйственного производства: учебное пособие по выполнению лабораторных работ / И. П. Машкарева,...
Работа с субд mysql Учебное пособие по выполнению лабораторных работ icon C одержание
Целью данной работы является описание конфигурирования, администрирования и программирования субд mysql и создание программы иллюстрирующей...
Работа с субд mysql Учебное пособие по выполнению лабораторных работ icon Учебное пособие к выполнению лабораторных работ по дисциплине «Микропроцессорная техника»
Разработка прикладного программного обеспечения для микропроцессорных систем на основе микроконтроллера
Работа с субд mysql Учебное пособие по выполнению лабораторных работ icon Учебное пособие к выполнению лабораторных работ по дисциплине «Микропроцессорная техника»
Разработка прикладного программного обеспечения для микропроцессорных систем на основе микроконтроллера
Работа с субд mysql Учебное пособие по выполнению лабораторных работ icon Стандартное задание 7 Расширенное задание 8 Рекомендации по выполнению...
Данное методическое пособие представляет собой руководство по установке и настройке необходимого программного обеспечения и выполнению...
Работа с субд mysql Учебное пособие по выполнению лабораторных работ icon Методические указания по выполнению практических и лабораторных работ...
Учебно-методическое пособие предназначенодля студентов 3 курса, обучающихся по профессии 23. 01. 03 Автомеханик. Пособие содержит...
Работа с субд mysql Учебное пособие по выполнению лабораторных работ icon Методическое пособие по выполнению лабораторных работ по дисциплине...
Изыскания и основы проектирования, автомобильных дорог. Методическое пособие по выполнению лабораторных работ по дисциплине «Основы...
Работа с субд mysql Учебное пособие по выполнению лабораторных работ icon Коновалов В. М. К64 Пособие к выполнению лабораторных работ по дисциплине...
К64 Пособие к выполнению лабораторных работ по дисциплине «Прикладное программное обеспечение». Выпуск М.: Мгту га, 2002 г. 36 с
Работа с субд mysql Учебное пособие по выполнению лабораторных работ icon Методические указания для выполнения лабораторных работ и «Базы данных»
Лабораторная работа №1 «Организация хранения данных в субд ms access»
Работа с субд mysql Учебное пособие по выполнению лабораторных работ icon Методические указания к лабораторным работам по курсу Сети ЭВМ и...
Вы познакомились с принципами установки и настройки Web-сервера с поддержкой языка серверных сценариев php. В этой работе мы продолжим...
Работа с субд mysql Учебное пособие по выполнению лабораторных работ icon Методические указания по выполнению лабораторных работ Издательство
Инженерная геодезия. Методические указания по выполнению лабораторных работ. Составители: Шешукова Л. В., Тютина Н. М., Клевцов Е....
Работа с субд mysql Учебное пособие по выполнению лабораторных работ icon Методические указания по выполнению лабораторных работ по дисциплине...
Методические указания по выполнению лабораторных работ рассмотрены и утверждены на заседании кафедры «Безопасность труда и инженерная...
Работа с субд mysql Учебное пособие по выполнению лабораторных работ icon Учебно-методическое пособие по выполнению лабораторных работ для...
Учебно-методическое пособие по выполнению лабораторных работ для студентов по специальности 13. 02. 11 «Техническая эксплуатация...
Работа с субд mysql Учебное пособие по выполнению лабораторных работ icon Методическое пособие по выполнению лабораторных работ Томск, 2014
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Работа с субд mysql Учебное пособие по выполнению лабораторных работ icon Федеральное агентство воздушного транспорта московский государственный
В 14 Авиационные приборы и информационно-измерительные системы, пособие по выполнению лабораторных работ

Руководство, инструкция по применению




При копировании материала укажите ссылку © 2024
контакты
rykovodstvo.ru
Поиск