Академический Документы
Профессиональный Документы
Культура Документы
Вложенные
7 запросы ИЗУЧАТЬ БЕСПЛАТНО (/ACCOUNT/REGISTER?BACKURL=HTTPS%3A%2F%2FBRAINOTEKA.COM%2FCOURSES%2FMS-SQL
/ Курс MS SQL для
начинающих (/courses/ms-
sql-dlya-nachinayushih)
Изучено
Дата изменения: 12.10.2017
0%BB%D1%8F%20%D0%BD%D0%B0%D1%87%D0%B8%D0%BD%D0%B0%D1%8E%D1%89%D0%B8%D1%85%20%7C%20Brainoteka&utm_source=share2)
0%B8%D1%85%20%7C%20Brainoteka&url=https%3A%2F%2Fbrainoteka.com%2Fcourses%2Fms-sql-dlya-nachinayushih%2Fvlozhennie-zaprosi&utm_source=share2)
QL%20%D0%B4%D0%BB%D1%8F%20%D0%BD%D0%B0%D1%87%D0%B8%D0%BD%D0%B0%D1%8E%D1%89%D0%B8%D1%85%20%7C%20Brainoteka&utm_source=share2)
Вложенные запросы помещаются вместо выражения во внутреннюю часть другого запроса SELECT, INSERT, UPDATE или DELETE. Потенциально могут быть
использованы в любом запросе, если он поддерживает использование выражений.
Подзапросы (внутренние);
Запросы соединений.
Запросы соединений реализуют операцию соединения таблиц. Основаны на использовании инструкции JOIN и рассматриваются в соответствующем разделе.
Основной запрос и вложенный при таком механизме взаимозависимы.
Внутренние запросы – это запрос, представляющий предварительную выборку (SELECT), вставку(INSERT), обновление (UPDATE) или удаление (DELETE).
Отделяется от основного запроса скобками. Результат внутреннего запроса всегда независим от внешнего.
Следующий пример представляет два запроса: внутренний и внешний. Оба на основе инструкции выборки (SELECT). Внутренний запрос замещает собой
выражение фильтрации в блоке предложения WHERE и находится в скобках.
SELECT housemates.housemateName,apartmentnumber
FROM housemates
WHERE apartmentnumber = (SELECT apartmentnumber
FROM housemates
WHERE Email = 'Simonov@yandex.ru');
Вложенный запрос ищет строки с Email = 'Simonov@yandex.ru' и выбирает из таблицы номер соответствующие номера квартир:
SELECT housemates.housemateName,apartmentnumber
FROM housemates
WHERE apartmentnumber = 13;
SELECT housemates.apartmentnumber,housemates.housemateName,housemeateID
FROM housemates
WHERE apartmentnumber > (SELECT apartmentnumber
FROM housemates
WHERE housemeateID = 103);
Результат:
Обратите внимание, что все внутренние запросы выше возвращают одну строку. Для того, чтобы внутренний запрос возвращал множество значений необходимо
несколько уровней вложения запроса. Для этих целей применяется оператор IN.
https://brainoteka.com/courses/ms-sql-dlya-nachinayushih/vlozhennie-zaprosi 1/4
04.06.2020 Вложенные запросы | MS SQL для начинающих | Brainoteka
Оператор IN
Оператор в структуре внешнего запроса устанавливается в месте перед реализацией внутреннего, то есть перед скобками. Позволяет расширить иерархию
внутренних запросов до 32.
Каждое появление оператора IN предваряет начало нового запроса. Подобный вид называется многоуровневым запросом. Применяется, когда таблица содержит
очень много столбцов.
Оператор может быть применен с отрицанием для этого достаточно перед ним указать опцию NOT:
SELECT housemates.apartmentnumber,housemates.housemateName,housemeateID
FROM housemates
WHERE apartmentnumber IN (SELECT apartmentnumber
FROM housemates
WHERE housemeateID NOT IN (SELECT housemeateID
FROM housemates
WHERE Email = 'Gorbunov@gmail.com'));
Перед оператором не допускается никаких операций сравнения. Неявно там присутствует =. Когда многоуровневый запрос должен участвовать в операции
сравнения, он должен быть реализован с помощью операторов ANY и ALL.
SELECT housemates.apartmentnumber,housemates.housemateName,housemeateID
FROM housemates
WHERE apartmentnumber > ANY (внутренний запрос);
В следующем запросе выполняется выборка имен, почтовых ящиков и номеров квартир тех жильцов, чей номер квартиры больше чем у жильца с именем
Алексин В.В.
SELECT housemates.housemateName,housemates.Email,housemates.apartmentnumber
FROM housemates
WHERE apartmentnumber > ANY ( SELECT apartmentnumber
FROM housemates
WHERE housemateName = 'Алексин. В.В.');
Результат:
ОТМЕТИТЬ ИЗУЧЕННЫМ
(https://vk.com/share.php?url=https%3A%2F%2Fbrainoteka.com%2Fcourses%2Fms-sql-dlya-nachinayushih%2Fvlozhennie-zaprosi&title=%D0%92%D0%BB%D0%B
(https://twitter.com/intent/tweet?text=%D0%92%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%20%D0%B7%D0%B0%D0%BF%D1%80%
(https://www.facebook.com/sharer.php?src=sp&u=https%3A%2F%2Fbrainoteka.com%2Fcourses%2Fms-sql-dlya-nachinayushih%2Fvlozhennie-zaprosi&title=%D0%92%D0%B
https://brainoteka.com/courses/ms-sql-dlya-nachinayushih/vlozhennie-zaprosi 2/4
04.06.2020 Вложенные запросы | MS SQL для начинающих | Brainoteka
ПОДДЕРЖАТЬ АВТОРА
"АЛЕКСАНДР САЖИН"
В СОЗДАНИИ НОВЫХ МАТЕРИАЛОВ (/COMMERCE/PAYMENTPAGE?DONATEFORM=TRUE&DIRECTORYID=3058)
НАЗАД (/MATERIAL/ITEMRETURN?MATERIALID=511&MATERIALTYPE=LESSON)
ВПЕРЕД (/MATERIAL/ITEMRETURN?MATERIALID=513&MATERIALTYPE=LESSON)
Материалы
Закрыть
Часть 1
1. free Что такое СУБД Урок
(/courses/ms-sql-dlya-nachinayushih/chto-takoe-subd)
НАВЕРХ
Для учеников
Курсы (/catalog?directoryType=Couse)
Блоги (/catalog?directoryType=Blog)
Подписка (/Commerce/PaymentPage)
Для партнеров
Стать преподавателем ()
Стать партнером ()
https://brainoteka.com/courses/ms-sql-dlya-nachinayushih/vlozhennie-zaprosi 3/4
04.06.2020 Вложенные запросы | MS SQL для начинающих | Brainoteka
Получать рассылку
Получать рассылку в VK
(HTTPS://VK.COM/BRAINOTEKALIGHT)
(HTTPS://WWW.FACEBOOK.COM/BRAINOTEKALIGHT)
(HTTPS://WWW.YOUTUBE.COM/CHANNEL/UCZ2VOF_7S6URSHMR0R0-NEG )
https://brainoteka.com/courses/ms-sql-dlya-nachinayushih/vlozhennie-zaprosi 4/4