Коммуникаций республики узбекистан ургенчский филиал ташкентского университета информационных технологий имени мухаммада аль-хоразмий



Download 105,78 Kb.
bet2/4
Sana23.01.2023
Hajmi105,78 Kb.
#901428
1   2   3   4
Bog'liq
Самастаятельных работа

Вложенные запросы (SQL Server)


  • Статья

  • 30.12.2022

  • Чтение занимает 20 мин

  • Участники: 11

Обратная связь
Область применения:  SQL Server (все поддерживаемые версии)  База данных SQL Azure  Управляемый экземпляр SQL Azure  Azure Synapse Analytics  Analytics Platform System (PDW)
Вложенный запрос — это запрос, который используется внутри инструкции SELECT, INSERT, UPDATE или DELETE или внутри другого вложенного запроса.
Примечание
В примерах из этой статьи используется база данных AdventureWorks2016. Образцы баз данных AdventureWorks можно скачать здесь.
Подзапрос может быть использован везде, где разрешены выражения. В этом примере вложенный запрос используется в качестве выражения столбца с именем MaxUnitPrice в операторе SELECT .
SQLКопировать
USE AdventureWorks2016;
GO
SELECT Ord.SalesOrderID, Ord.OrderDate,
(SELECT MAX(OrdDet.UnitPrice)
FROM Sales.SalesOrderDetail AS OrdDet
WHERE Ord.SalesOrderID = OrdDet.SalesOrderID) AS MaxUnitPrice
FROM Sales.SalesOrderHeader AS Ord;
GO

Основы вложенных запросов


Вложенный запрос по-другому называют внутренним запросом или внутренней операцией выбора, в то время как инструкцию, содержащую вложенный запрос, называют внешним запросом или внешней операцией выбора.
Многие инструкции Transact-SQL, включающие вложенные запросы, можно также сформулировать как соединения. Другие запросы могут быть осуществлены только с помощью подзапросов. В Transact-SQL обычно нет разницы в производительности между инструкцией, которая включает вложенный запрос, и семантически эквивалентной версией, которая этого не делает. Сведения об архитектуре обработки запросов SQL Server см. в разделе Обработка инструкций SQL. Однако в некоторых случаях, когда проверяется существование, соединения показывают лучшую производительность. В противном случае для устранения дубликатов вложенный запрос должен обрабатываться для получения каждого результата внешнего запроса. В таких случаях метод работы соединений дает лучшие результаты.
В следующем примере показаны вложенный запрос SELECT и соединение SELECT , возвращающие один и тот же результирующий набор и план выполнения:
SQLКопировать
USE AdventureWorks2016;
GO


/* SELECT statement built using a subquery. */
SELECT [Name]
FROM Production.Product
WHERE ListPrice =
(SELECT ListPrice
FROM Production.Product
WHERE [Name] = 'Chainring Bolts' );
GO


/* SELECT statement built using a join that returns
the same result set. */
SELECT Prd1.[Name]
FROM Production.Product AS Prd1
JOIN Production.Product AS Prd2
ON (Prd1.ListPrice = Prd2.ListPrice)
WHERE Prd2.[Name] = 'Chainring Bolts';
GO
Вложенный во внешнюю инструкцию SELECT запрос, имеет следующие компоненты:

  • обычный запрос SELECT, включающий обычные компоненты списка выборки;

  • обычное предложение FROM, включающее одно или несколько имен таблиц или представлений.

  • Необязательное предложение WHERE.

  • Необязательное предложение GROUP BY.

  • Необязательное предложение HAVING.

Запрос SELECT вложенного запроса всегда заключен в скобки. Он не может включать COMPUTE предложение или FOR BROWSE и может включать ORDER BY предложение только при указании предложения TOP.
Вложенный запрос может быть включен в предложение WHERE или HAVING внешней инструкции SELECT, INSERT, UPDATE или DELETE или в другой вложенный запрос. Возможно создавать вложенность до 32-го уровня, хотя ограничения меняются в зависимости от объема доступной памяти и сложности других выражений в запросе. Отдельные запросы могут не поддерживать вложенность до 32-го уровня. Подзапрос может появляться везде, где может использоваться выражение, если он возвращает одно значение.
Если таблица отображается только во вложенном запросе, а не во внешнем запросе, то столбцы из этой таблицы не могут быть включены в выходные данные (список выбора внешнего запроса).
Инструкции, включающие вложенные запросы, обычно имеют один из следующих форматов:

  • WHERE expression [NOT] IN (subquery)

  • WHERE expression comparison_operator [ANY | ALL] (subquery)

  • WHERE [NOT] EXISTS (subquery)

В некоторых инструкциях Transact-SQL вложенный запрос может быть оценен как независимый запрос. По сути, результаты вложенных запросов подставляются во внешний запрос (хотя это необязательно то, как SQL Server фактически обрабатывает инструкции Transact-SQL с вложенными запросами).
Существуют три основных типа подзапросов, которые:

  • работают в списках, указанных с помощью ключевого слова IN, или тех, которые оператор сравнения изменил с помощью ключевого слова ANY или ALL;

  • вставлены оператором немодифицированных сравнений и должны возвращать одно значение;

  • являются проверками на существование, начинающимися с ключевого слова EXISTS.

Download 105,78 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish