Самостоятельная работа Создание запросов с использованием стандартных слов union, intersect и minus по дисциплине «Базы данных»
Download 61.34 Kb.
|
4-Labaratoriya ishi Mavzu Union, Intersect va Minus standart
- Bu sahifa navigatsiya:
- Объединение результатов запросов к двум таблицам с помощью оператора SQL UNION
- Операции пересечения и разности множеств в SQL
Пример 5. Есть база данных портала объявлений.
Пусть сначала требуется получить данные о категориях и частях категорий объявлений, в которых подано более 100 объявлений в неделю. Пишем следующий запрос: SELECT Category, Part, Units, Money FROM ADS WHERE Units > 100 Результатом выполнения запроса будет следующая таблица:
Теперь требуется извлечь данные о категориях и частях категорий объявлений, за которые выручено более 10000 денежных единиц в неделю. Пишем следующий запрос: SELECT Category, Part, Units, Money FROM ADS WHERE Money > 10000 Результатом выполнения запроса будет следующая таблица:
Теперь требуется извлечь данные, которые соответствуют критериям и первого, и второго запросов. Объединяем запросы при помощи оператора UNION: SELECT Category, Part, Units, Money FROM ADS WHERE Units > 100 UNION SELECT Category, Part, Units, Money FROM ADS WHERE Money > 10000 Результатом выполнения запроса будет следующая таблица:
Примеры запросов к базе данных "Портал объявлений-1" есть также в уроках об операторах INSERT, UPDATE, DELETE, HAVING. Страница 2 (Объединение результатов сложных запросов) Объединение результатов запросов к двум таблицам с помощью оператора SQL UNIONДо сих пор мы рассматривали запросы с оператором UNION, в которых объединялись результаты из одной таблицы. Теперь будем объединять результаты из двух таблиц. Пример 6. Есть база данных склада строительных материалов. В ней есть таблицы, содержащая данные об обоях. Таблица Vinil содержит данные о виниловых обоях, таблица Paper - о бумажных обоях. Требуется узнать данные о ценах обоев из одной и другой таблицы. Чтобы извлечь не повторяющиеся данные о ценах на виниловые обои, составим запрос со словом DISTINCT: SELECT DISTINCT Price FROM VINIL Результатом выполнения запроса будет следующая таблица:
Чтобы извлечь не повторяющиеся данные о ценах на бумажные обои, составим следующий запрос, также со словом DISTINCT: SELECT DISTINCT Price FROM PAPER Результатом выполнения запроса будет следующая таблица:
Теперь составим объединённый запрос с оператором UNION: SELECT DISTINCT Price FROM VINIL UNION SELECT DISTINCT Price FROM PAPER Так как мы не используем слово ALL, дубликаты значений 400, 500 и 530 выводиться не будут. Результатом выполнения запроса будет следующая таблица:
Пример 7. База данных и таблицы - те же, что и в предыдущем примере. Требуется получить все данные о ценах, в том числе повторяющиеся. Запрос на объединение результатов с использованием оператора UNION будет аналогичен запросу в предыдущем примере, но вместо просто UNION пишем UNION ALL: SELECT DISTINCT Price FROM VINIL UNION ALL SELECT DISTINCT Price FROM PAPER Результатом выполнения запроса будет следующая таблица:
Страница 2 (Объединение результатов сложных запросов) При помощи оператора SQL UNION можно объединить как простые запросы, так и запросы, содержащие подзапросы (вложенные запросы). Рассмотрим соответствующий пример. Пример 8. Есть база данных "Театр". В её таблице Play содержатся данные о постановках (названия - в столбце Name), в таблице Director - даные о режиссёрах (в столбце Fname - имя, в столбце Lname - фамилия). Первичный ключ таблицы Director - dir_id - идентификационный номер режиссёра. Dir_id также - внешний ключ таблицы Play, он ссылается на первичный ключ таблицы Director. Требуется вывести спектакли режиссеров John Barton и Trevor Nunn. Решение. Объединим результаты двух запросов - один возвращает спектакли режиссёра John Barton, другой - режиссёра Trevor Nunn. А каждый из этих объединяемых запросов к таблице Play делаем с подзапросом к таблице Director, который возвращает dir_id по имени и фамилии режиссёра. Каждый внешний запрос принимает из вложенного запроса значение ключа dir_id и возвращает названия постановок (Name): SELECT NAME FROM PLAY WHERE dir_id = (SELECT dir_id FROM DIRECTOR WHERE fname = 'John' AND lname = 'Barton') UNION SELECT NAME FROM PLAY WHERE dir_id = (SELECT dir_id FROM DIRECTOR WHERE fname = 'Trevor' AND lname = 'Nunn') Операции пересечения и разности множеств в SQLОператор SQL INTERSECT реализует операцию реляционной алгебры пересечение множеств, оператор SQL EXCEPT - разность множеств. В виде множеств выступают результаты единичных запросов. Таким образом, оператор SQL INTERSECT возвращает те и только те строки, которые возвращает и первый, и второй запросы. В свою очередь, оператор SQL EXCEPT возвращает те строки, которые возвращает первый запрос, и которых нет среди строк, возвращаемых вторым запросом. Для того, чтобы были осуществлены операции пересечения и разности, запросы должны быть совместимы по объединению, то есть должны совпадать число столбцов, порядок их следования и их имена. Оператор INTERSECT имеет следующий синтаксис: SELECT ИМЕНА_СТОЛБЦОВ (1..N) FROM ИМЯ_ТАБЛИЦЫ INTERSECT SELECT ИМЕНА_СТОЛБЦОВ (1..N) FROM ИМЯ_ТАБЛИЦЫ Оператор EXCEPT имеет следующий синтаксис: SELECT ИМЕНА_СТОЛБЦОВ (1..N) FROM ИМЯ_ТАБЛИЦЫ EXCEPT SELECT ИМЕНА_СТОЛБЦОВ (1..N) FROM ИМЯ_ТАБЛИЦЫ В этой конструкции единичные запросы могут иметь условия в секции WHERE, а могут не иметь их. При помощи операторов INTERSECT и EXCEPT можно производить операции с запросами как к одной таблице, так и к разным. В примерах работаем с базой данных сети магазинов и таблицами SOLNYSHKO и VETEROK, содержащими данные о продуктах, которые имеются в магазинах с соответствующими названиями. Таблица SOLNYSHKO:
Таблица VETEROK:
2: Пересечение множеств: оператор SQL INTERSECT и его альтернативы Пересечением множеств A и B называется множество, состоящее их всех тех или только тех элементов, которые принадлежат каждому из множеств A и B. Больше об операциях над множествами как над математическими объектами можно узнать из урока Множества и операции над множествами. Пересечениями множеств могут служить носители одних и тех же имен в двух студенческих группах, овощи одних и тех же наименований в двух корзинах и другие. Пересечением множеств является, наконец, набор товаров, которые имеются и в одном, и в другом магазинах. Если вы хотите выполнить запросы к базе данных из этого урока на MS SQL Server, но эта СУБД не установлена на вашем компьютере, то ее можно установить, пользуясь инструкцией по этой ссылке. Download 61.34 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling