ПредишенСледващото

В подзаявка (подзаявка) - това е вложено заявка. Подзаявки могат да се появят в различни части на SQL отчети.

В SQL поддържа следните видове подзаявки.

Под-заявки, които извличат една стойност. Това е най-широко подкрепено вида различни платформи на под-запитвания.

Под-заявки, които извличат множество стойности. Този тип подзаявка извлича от няколко колони.

Вложени маса подзаявки

Подзаявки abstractors няколко колони и няколко реда.

Скаларен и векторен подзаявки на някои платформи могат да бъдат част от изразяването в списъка на избраните елементи на SELECT изявление, включено в клаузата WHERE и клаузата за КАТО. Вложени маса подзаявки обикновено се намират в ОТ инструкция изберете.

А корелира подзаявка е - подзаявка в зависимост от стойността на външната заявката. Вследствие на това вътрешно искане се извършва веднъж на всеки запис намереното външен искането. Ако има няколко нива на вложени подзаявки корелация подзаявка да се обърнете към всяко ниво на основната искане, което е по-високо от собственото си ниво.

Функционирането на подзаявка е обект на различни правила в зависимост от това дали, в каква присъда той влиза. Степента на подкрепа за подзаявки в различни платформи и различни. Някои платформи поддържат подзаявки във всички споменати по-горе предложения (SELECT от, къде и за Винг), както и други платформи - само една или две от тези предложения.

Подзаявка SELECT обикновено се свързва с инструкцията. Тъй като под-заявки могат да бъдат в клаузата за които може да се използва във всеки SQL изявление, че подкрепя клауза WHERE, включително SELECT, INSERT SELECT, изтриване, актуализирам.

Скаларни и трапезни подзаявки и подзаявки вложени маса имат следната обща синтаксис.

Корелация подзаявки са по-сложни, тъй като стойностите на тези подзаявки зависят от стойностите, извлечени от главния заявката. Например:

Имайте предвид, че клауза в се използва само като пример. Можете да използвате всеки оператор сравнение.

Ключови думи

Скаларни под-заявка се добавя към списъка с елементи на SELECT декларация, или когато клауза или има искане.

загнездена маса подзаявка

Вложени маса подзаявка добавят само оферта от, а също и при използване на клаузата за AS.

Таблично подзаявка се добавя само в WHERE изречение с помощта на оператори като IN, ТАКИВА, някои от тях, съществува или ALL, които работят на няколко стойности. Таблични подзаявки върнат един или няколко реда, съдържащи една стойност.

Общи правила

Подзаявки позволяват да се получи една или повече стойности и ги поставете в SELECT изявление, вмъкване, обновяване или изтриване на отчет или друг подзаявка. Подзаявки могат да се използват навсякъде, където това е разрешено използването на изрази. Също така, под-заявки могат често заместват инструкции присъединят. Извършване на подзаявки може да бъде по-ниска от производителността JOIN инструкцията (в зависимост от платформата).

Подзаявки винаги са затворени в скоби.

Подзаявки могат да бъдат използвани в SELECT клаузата списък с елементи, състоящи се от най-малко един елемент в ОТ клауза за обръщение към една или повече таблици или възгледи, или в предложенията и КЪДЕ КАТО.

Скаларни подзаявки могат само да връщат една стойност. Някои оператори КЪДЕ клауза ще приемат само една стойност (например, =.> == = AVG (SELECTcolumn 1 ОТ salesTable ...). Това ограничение може да бъде, ако налагя в подзаявка, а не във външния заявката.

Съвети и трикове за програмиране

Платформа повечето производители не позволяват да се разчита на големи типове данни (например, CLOB и BLOB в Oracle и изображение или текст в SQL Server), както и видовете масиви (например маса или курсора в SQL Server).

Всички платформи поддържат под-заявки, но не всички доставчици поддържат всички видове под-запитвания. 3.6 са дадени видовете заявки, които се поддържат от различни производители.

Подзаявки не се ограничават до SELECT отчети. Те могат също така да се използва в INSERT, UPDATE и DELETE, които съдържат предложение къде. Подзаявки често се използват за следните цели.

  • За да укажете редовете вкарани в таблицата приемник с помощта на INSERT ... SELECT, Създаване на таблица ... изберете, или изберете ... В.
  • За да укажете представителството на линии или материализира оглед в отчета за CREATE VIEW.
  • За да се определят стойностите, свързани със съществуващи редове с помощта на отчета за актуализация.
  • За да зададете стойности за условията в това къде и ИМАТ изявления SELECT, обновяване и изтриване.
  • За да създадете таблица представяне (и) "в движение" (т.е., вложени маса подзаявки).

Този раздел предоставя примери, които са еднакво подходящи за DB2, MySQL, Oracle, PostgreSQL и SQL Server.

По-долу е проста скаларна под-заявка в SELECT изявление, в списъка на предметите.

Вложени маса подзаявки са функционално еквивалентни на заявка на гледката. В следващия пример, ние ще поискаме във вложено ниво маса подзаявка на образованието (edlevel) и заплата (заплата), а след това да извършите сумирането на стойностите, получени маса във външната заявка.

Имайте предвид, че при някои платформи, такова искане не може да бъде изпълнено без офертата на спомагателната система, в която произлиза таблицата се задава име.

Следният пример показва стандартна таблица подзаявка като част от клаузата WHERE. В този случай, ние се нуждаем всички цифри на служители на проекти Отдел A00.

Горната подзаявка във външната заявката се изпълнява само веднъж.

В следващия пример искаме да получим имената на служителите и тяхната степен на старшинство. Комплектът резултат се получава чрез използване на корелация подзаявка.

За разлика от предишния, този подзаявка се изпълнява веднъж за всяка линия извлича външен поискване. такива запитвания времето за обработка могат да бъдат доста големи, тъй като вътрешният искане може да се извърши по няколко пъти в генериране на един резултат сет.

Корелация подзаявки са зависими от стойности, получени от външен искане да бъдат получени преди искането ще бъде спасен от вътрешните. Такива искания е трудно за овладяване, но те предоставят уникална софтуерни функции. В следващия пример, ние получаваме информация за поръчки (разпореждания), където количеството продадени (количество) е по-малко от средното (средно) броят на другите продажбите на стоки от едно и също име (наименование).

В една и съща цел можем да постигнем с помощта на рефлексивен връзка (самостоятелно присъединят). Въпреки това, има случаи, при които корелира подзаявка е единственият начин за постигане на желания резултат.

Следният пример показва как да използвате корелативна подзаявка да актуализира стойностите в таблицата.

По същия начин, можете да използвате подзаявки за определяне на реда да бъдат изтрити. Следващият пример използва корелативна подзаявка да изтриете редове от таблицата на базата на свързани PAS линии на друга маса.

DB2 платформа поддържа ANSI стандартни видове подзаявки. Предоставя се разрешение за ползване скаларни подзаявки в SELECT изявление, списъка с елементи, вложени подзаявки маса - в ОТ клауза, както и скаларни и векторни подзаявки в това къде и КАТО част от предложенията. DB2 платформа позволява използването на два взаимно свързани подзаявки в SELECT декларация и списък на елементите в това къде и ЗА Винг.

MySQL платформа приложение поддържа вложени подзаявка в таблица изброява елементите в изречението.

Платформата поддържа стандарта ANSI подзаявки, но използва различна номенклатура. В Oracle вложено трапезни подзаявки, които се използват в ОТ клауза, наречена вградени изглед (изглед вградено). И с право, защото вложени маса подзаявки -. Това е, всъщност, идеята генерирани "в движение" В Oracle подзаявки, които се използват в клаузата WHERE и като, наречена вложени подзаявки (загнездена подзаявка). Oracle позволява използването на два взаимно свързани подзаявки в SELECT декларация и списък на елементите в това къде и се налага.

PostgreSQL

PostgreSQL платформа поддържа ANSI стандарт подзаявки в ОТ клауза, къде и КАТО. Въпреки това, в подзаявки КАТО клауза не могат да включват предложения подредени по, за осъвременяване и LIMIT. В момента PostgreSQL не поддържа подзаявки в SELECT изявление, в списъка на предметите.

SQL Server

Платформа SQL Server поддържа стандартните подзаявки ANSI. Скаларни подзаявки могат да се използват почти навсякъде, където може да се използва регулярни изрази. Подзаявки SQL Server не може да съдържа предложения и изчисли ЗА Преглед. Можете да използвате офертата ORDER BY, ако предложението се използва и отгоре.

Допълнителна информация за

Някои от правилата и методите за използване на отчета за SET в бази данни на различни платформи

Правилата и методите за използване отчета за INSERT в бази данни на различни платформи

Правилата и методите за използване изявление по обединяване в бази данни на различни платформи

Някои от правилата и методите за използване на указанията, дадени роля в бази данни на различни платформи

Свързани статии

Подкрепете проекта - споделете линка, благодаря!