СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Запросы. Подзапросы

Категория: Информатика

Нажмите, чтобы узнать подробности

Просмотр содержимого документа
«Запросы. Подзапросы»

Лекция 10. Запросы. Подзапросы

Лекция 10. Запросы. Подзапросы

10.1. 3апросы, использующие соединения Пример 6.13. Простое эквисоединение. Выдать все комбинации информации о таких поставщиках и деталях, которые размещены в одном и том же городе: Пример 6.14. Соединение с дополнительным условием. Выдать все комбинации информации о поставщиках и деталях, такие, что рассматриваемые поставщики и детали “соразмещены”. Опустить при этом поставщиков с состоянием 20. 10.2.Подзапросы  Подзапросы представляют собой вложенные предложения SELECT . Именно такая возможность позволила назвать язык SQL структурированным. Пример6.15 . Выдать фамилии поставщиков, поставляющих детали Р2 10.3. Подзапросы с несколькими уровнями вложения Пример 6.16 . Выдать имена поставщиков, поставляющих красные детали. 10.4. Коррелированный подзапрос  Пример 6.17. Выдать имена поставщиков, которые поставляют деталь P2

10.1. 3апросы, использующие соединения

Пример 6.13. Простое эквисоединение.

Выдать все комбинации информации о таких поставщиках и деталях, которые

размещены в одном и том же городе:

Пример 6.14. Соединение с дополнительным условием.

Выдать все комбинации информации о поставщиках и деталях, такие, что

рассматриваемые поставщики и детали “соразмещены”. Опустить при этом

поставщиков с состоянием 20.

10.2.Подзапросы

Подзапросы представляют собой вложенные предложения SELECT .

Именно такая возможность позволила назвать язык SQL структурированным.

Пример6.15 . Выдать фамилии поставщиков, поставляющих детали Р2

10.3. Подзапросы с несколькими уровнями вложения

Пример 6.16 . Выдать имена поставщиков, поставляющих красные детали.

10.4. Коррелированный подзапрос

Пример 6.17. Выдать имена поставщиков, которые поставляют деталь P2

Пример 6.14. Соединение с дополнительным условием. Выдать все комбинации информации о поставщиках и деталях, такие, что рассматриваемые поставщи  ки и детали “соразмещены”. Опустить при этом поставщиков с состоянием 20:  SELECT *  FROM S, Р   WHERE S .ГОРОД = Р.ГОРОД  AND  S .СОСТОЯНИЕ   Результат: НОМЕР_ПОСТАВЩИКА  ИМЯ    СОСТОЯНИЕ  S .ГОРО Д  S2 Дима 10 Пермь  S2 Дима 10 Пермь  S3 Боря 30 Пермь  S3 Боря 30 Пермь   НОМЕР_ДЕТАЛИ     НАЗВАНИЕ   ЦВЕТ  ВЕС   Р.ГОРОД   Р2 Болт Зеленый 17  Пермь  Р5 Кулачок Голубой  12    Пермь  Р2 Болт Зеленый  17  Пермь  Р5 Кулачок Голубой 12  Пермь

Пример 6.14. Соединение с дополнительным условием. Выдать все комбинации информации о поставщиках и деталях, такие, что рассматриваемые поставщи  ки и детали “соразмещены”. Опустить при этом поставщиков с состоянием 20:

SELECT *

FROM S, Р

WHERE S .ГОРОД = Р.ГОРОД

AND S .СОСТОЯНИЕ 

Результат: НОМЕР_ПОСТАВЩИКА ИМЯ СОСТОЯНИЕ S .ГОРО Д

S2 Дима 10 Пермь

S2 Дима 10 Пермь

S3 Боря 30 Пермь

S3 Боря 30 Пермь

НОМЕР_ДЕТАЛИ НАЗВАНИЕ ЦВЕТ ВЕС Р.ГОРОД

Р2 Болт Зеленый 17 Пермь

Р5 Кулачок Голубой 12 Пермь

Р2 Болт Зеленый 17 Пермь

Р5 Кулачок Голубой 12 Пермь

10.2.Подзапросы  Подзапросы представляют собой вложенные предложения SELECT . Пример  6.15. Выдать фамилии поставщиков, поставляющих детали Р2: SELECT ИМЯ FROM S WHERE НОМЕР_ПОСТАВЩИКА IN  ( SELECT НОМЕР_ПОСТАВЩИКА  FROM  SP  WHERE НОМЕР_ДЕТАЛИ = ‘ P 2’); Результат: ИМЯ   Саша  Дима  Боря  Коля Этот подзапрос возвращает множество поставщиков, поставляющих деталь Р2 S1, S2, S3, S4. Поэтому первоначальный запрос эквивалентен простому запросу : SELECT ФАМИЛИЯ FROM S WHERE НОМЕР _ ПОСТАВЩИКА IN (‘S1’,’S2’,’S3’,’S4’)  Номер поставщика здесь задан неявно. Для явного задания необходимо указать имя таблицы. SELECT S .ИМЯ  FROM S  WHERE S. НОМЕР _ ПОСТАВЩИКА IN ( SELECT SP .НОМЕР_ПОСТАВЩИКА  FROM SP WHERE SP.HOMEP_ ДЕТАЛИ ='P2')  Этот же подзапрос может быть выражен и соединением: SELECT S.ИМЯ FROM S,  SP WHERE S.HOМЕР_ПОСТАВЩИКА = SP.HOMEP_ПОСТАВЩИКА AND SP.HOMEP_ДЕТАЛИ = 'P2'

10.2.Подзапросы

Подзапросы представляют собой вложенные предложения SELECT .

Пример 6.15. Выдать фамилии поставщиков, поставляющих детали Р2:

SELECT ИМЯ

FROM S

WHERE НОМЕР_ПОСТАВЩИКА IN

( SELECT НОМЕР_ПОСТАВЩИКА

FROM SP

WHERE НОМЕР_ДЕТАЛИ = ‘ P 2’);

Результат: ИМЯ

Саша

Дима

Боря

Коля

Этот подзапрос возвращает множество поставщиков, поставляющих деталь Р2

S1, S2, S3, S4. Поэтому первоначальный запрос эквивалентен простому запросу :

SELECT ФАМИЛИЯ

FROM S

WHERE НОМЕР _ ПОСТАВЩИКА IN (‘S1’,’S2’,’S3’,’S4’)

Номер поставщика здесь задан неявно. Для явного задания необходимо указать

имя таблицы.

SELECT S .ИМЯ

FROM S

WHERE S. НОМЕР _ ПОСТАВЩИКА IN

( SELECT SP .НОМЕР_ПОСТАВЩИКА

FROM SP

WHERE SP.HOMEP_ ДЕТАЛИ ='P2')

Этот же подзапрос может быть выражен и соединением:

SELECT S.ИМЯ

FROM S, SP

WHERE S.HOМЕР_ПОСТАВЩИКА = SP.HOMEP_ПОСТАВЩИКА

AND SP.HOMEP_ДЕТАЛИ = 'P2'