SQL заявките са месото и картофите на RDBMS CRUD (създаване, четене, актуализиране, изтриване). Но когато вашето приложение или корпоративна база данни нарастват, необходимостта от интелигентни заявки за извличане на условни, специфични за изискванията данни става задължителна.

SQL е сравнително изчерпателен, включващ много функционалности - всяка от които е много подходяща за различни бизнес приложения. Една такава функционалност включва използването на подзаявки.

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

Какво представляват SQL подзаявките?

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

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

instagram viewer

Подзаявките са вградени в Изберете изявление или в Където клауза. Такава структура позволява на подзаявката да се държи като добре описано условие за филтриране на данни. За съжаление, подзаявките могат да използват само Групирай по команди и не Подредени по команди, тъй като те са разрешени само в основната заявка.

Свързани: Всичко, което трябва да знаете за SQL изявление GROUP BY

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

Строката на подзаявката е, както следва:

Изберете име на колона от таблица, където условие= 
(ИЗБЕРЕТЕ условна_колона ОТ таблица) като псевдоним;

Например, да предположим, че имате следната таблица:

документ за самоличност Първо име Второ име Агенция_такса
1 Джон Фитил 5000
2 Робърт Греъм 4000
3 Стивън Хикс 8000
4 Боб Марли 1000
5 Дева Мария Елън 9000

В тази таблица, за да изтеглите имената на хора, които печелят над средната такса на агенцията, можете да напишете подзаявка, вместо да пишете няколко реда код.

Свързани: Как да създадете таблица в SQL

Ето как изглежда заявката:

Изберете * от подробности за агента
където Agency_Fee > (изберете средно (Agency_Fee) от agent_details);

Командата преди > знакът е външната заявка, докато всичко след > знакът е вътрешната заявка.

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

Как да използвам подзаявки в SQL?

Има няколко различни начина, по които можете да използвате подзаявки в SQL.

Подзаявки с клауза Къде

Една от най-основните структури на подзаявка в SQL е в рамките на клаузата Where. Това е най-простият начин да дефинирате какво търсите. Инструкцията select връща стойности според условието(ите) на подзаявката и го използва като параметър за основната заявка.

Структура на заявката:

изберете * от име_на таблица
където column_name = (изберете column_name от table_name);

Нека обясним това с пример.

Да предположим, че искате да намерите втората най-висока такса на агенцията от таблицата agency_details. За да направите това, има алтернативни функции в SQL; въпреки това, най-добрият метод е да използвате подзаявка.

Ето как можете да дефинирате подзаявката:

изберете *, максимум (Agency_fee)
от agent_details
където Agency_fee < (изберете максимум (Agency_fee) от agent_details);

Полученото изявление ще ви покаже 8000, което е втората най-висока такса в дадената таблица. Когато заявката се изпълнява, подзаявката изчислява максималната стойност от списъка с такси. Най-високата сума на таксата (9000) се съхранява в паметта.

След като тази част бъде изчислена, се изчислява втората част на заявката, която намира втората най-висока такса от таблицата (тъй като < се използва знак). Крайният резултат е 8000, което е втората най-висока такса в таблицата.

Подзаявки в клаузата From

Друг вариант в подзаявките е предаването на условието в от клауза. Като подобна концепция, вътрешната заявка се обработва първо, а външната заявка се обработва след това. Вътрешната заявка ще филтрира данните и ще покаже резултати, където ID = 3.

Ето заявката за справка:

изберете a.* от (
изберете agency_fee от agent_details
където ID= 3) като а;

Това е много основна структура; обаче, колкото по-сложни са вашите таблици с данни, ще получите повече редове с данни, които отговарят на вашите условия.

Използване на подзаявки с Insert Into State

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

Структура на заявката:

вмъкнете в table_name 
изберете * от име_на таблица
където име на колона = условия;
изберете * от table_name;

Ето пример за това как можете да използвате вмъкването в оператор с подзаявката:

вмъкнете в agent_details
изберете * от подробности за агента
където agency_fee in (1000, 5000);
изберете * от agent_details;

След като заявката се изпълни, стойностите, съответстващи на условието, ще бъдат вмъкнати отново в съществуващата таблица. В изберете * reference събира всички колони заедно и го вмъква в таблицата agent_details, както е. В в изразът се използва за дефиниране на множество условия за филтриране наведнъж.

Използване на подзаявки с изявление за актуализиране

Има ситуации, в които искате да актуализирате основните таблици, докато изпълнявате заявките. За да направите това, можете да използвате актуализиране оператор заедно с командите за запитване.

Ето как ще напишете подзаявката, за да актуализирате информацията в таблицата в един екземпляр:

актуализирайте table_name 
задайте име на колона = нова_стойност
където име на колона =
(изберете име на колона от име на таблица, където = );

Ето пример, демонстриращ използването на изявлението за актуализиране:

АКТУАЛИЗИРАНЕ на подробности за агента 
SET agency_fee = 35000
КЪДЕ агенция_такса =
(ИЗБЕРЕТЕ agency_fee FROM agent_details WHERE First_name='John');
изберете * от agent_details;

Подзаявката ще филтрира по колоната agency_fee и ще отдели реда(овете), където съвпада First_Name Джон. След това се изпълнява външната заявка, при което таксата на агенцията се актуализира на 35 000 за John Wick.

Можете да преминете a изберете * изявление за проверка на крайните резултати; ще забележите, че агенционната такса за John Wick е актуализирана на 35000, тъй като има само екземпляр, отговарящ на условията, дефинирани в заявката.

Използване на подзаявки с оператор за изтриване

Точно като изявлението за актуализиране, при което актуализирате редовете с данни в съществуваща таблица, the Изтрий оператор изтрива ред(ове) с данни въз основа на условие.

Структурата на израза за изтриване е:

изтрийте от име_на_таблица, където име на променлива/колона = 
(изберете име на колона от име_на таблица, където = условие);

Ето един пример:

Изтрийте от agent_details 
където First_name IN
(изберете First_name от agent_details, където agency_fee = 9000);
изберете * от agent_details;

Използване на подзаявки в SQL

Подзаявките са отлична функция в SQL, която може да ви спести от писане на безкрайни редове ненужен код. Когато можете да използвате основните функции на подзаявките, за да наддавате, никога не бихте искали да се притеснявате да навлизате в сложността на SQL кодирането.

Винаги е най-добре да подобрите съществуващите си SQL познания, за да сте сигурни, че винаги сте на върха на играта си. Бъдете сигурни, SQL cheat sheets могат да ви дадат добра идея как да освежите основите си с един поглед.

Таблица с основните SQL команди за начинаещи

Искате ли да научите повече за SQL? Наличието на управление на различните команди за SQL заявка е чудесен начин да напреднете.

Прочетете Следващото

Дялтуителектронна поща
Свързани теми
  • Програмиране
  • Програмиране
  • SQL
  • Инструменти за програмиране
За автора
Гаурав Сиял (35 публикувани статии)

Gaurav Siyal има две години опит в писането, като пише за серия от фирми за дигитален маркетинг и документи за жизнения цикъл на софтуера.

Още от Gaurav Siyal

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, ревюта, безплатни електронни книги и ексклузивни оферти!

Щракнете тук, за да се абонирате