СКЛ упити су месо и кромпир РДБМС ЦРУД (креирање, читање, ажурирање, брисање). Али када ваша апликација или база података предузећа расту, потреба за интелигентним упитима за преузимање условних података специфичних за захтеве постаје неопходна.
СКЛ је релативно свеобухватан, обухвата многе функционалности — од којих је свака погодна за различите пословне намене. Једна таква функционалност укључује употребу подупита.
Да би ваши кодови били ефикасни и делотворни, можете да користите под-упите у оквиру својих СКЛ кодова да бисте дохватили податке, манипулисали постојећим променљивим и постигли више циљева у једном потезу.
Шта су СКЛ подупити?
Подупит је угнежђени упит, који функционише као параметар у оквиру другог главног упита. Потупит је ан унутрашњи упит, док је главни упит спољни упит.
Потупит наводно враћа податке као аргумент у загради за главни упит, док главни упит даље преузима коначни резултат.
Подупити су уграђени у Изаберите изјаву или у Где клаузула. Таква структура омогућава да се подупит понаша као добро описан услов филтрације података. Нажалост, потупити могу да користе само
Група од команди а не Ордер Би команде, јер су оне дозвољене само у главном упиту.Повезан: Све што треба да знате о СКЛ ГРОУП БИ изјави
Обично сваки потупит садржи једну колону са Изаберите клаузула. Међутим, постоје сценарији у којима главни упит има више колона. Подупит се може угнеждити у другом потупиту, чинећи га угнежденим потупитом.
Стриктура подупита је следећа:
Изаберите име_колоне из табеле где је стање=
(СЕЛЕЦТ условни_колона ИЗ табеле) као псеудоним;
На пример, претпоставимо да имате следећу табелу:
ИД | Име | Презиме | Агенција такса |
1 | Јохн | Вицк | 5000 |
2 | Роберт | Грахам | 4000 |
3 | Степхен | Хицкс | 8000 |
4 | Боб | Марлеи | 1000 |
5 | Мари | Еллен | 9000 |
У овој табели, да бисте извукли имена људи који зарађују изнад просечне агенцијске накнаде, можете написати подупит, уместо да пишете више редова кода.
Повезан: Како направити табелу у СКЛ-у
Ево како изгледа упит:
Изаберите * из агента_детаилс
где је Агенција_накнада > (изаберите просек (Агенција_накнада) из агента_детаилс);
Команда пре > знак је спољни упит, док је све после > знак је унутрашњи упит.
Унутрашњи упит ће израчунати просечну агенцијску накнаду у оквиру потупита, а спољни упит ће показати све вредности које су веће од израчунате просечне вредности.
Како користити под-упите у СКЛ-у?
Постоји неколико различитих начина на које можете користити под-упите у СКЛ-у.
Потупити са клаузулом Вхере
Једна од најосновнијих структура подупита у СКЛ-у је унутар клаузуле Вхере. То је најједноставнији начин да дефинишете шта тражите. Наредба селецт враћа вредности према услову(има) подупита и користи га као параметар за главни упит.
Структура упита:
изаберите * из табле_наме
где цолумн_наме = (изаберите цолумн_наме из табле_наме);
Хајде да то објаснимо на примеру.
Претпоставимо да желите да пронађете другу највишу агенцијску накнаду у табели агенци_детаилс. Да бисте то урадили, постоје алтернативне функције унутар СКЛ-а; ипак, најбољи метод је коришћење подупита.
Ево како можете да дефинишете подупит:
изаберите *, мак (агенцијска_провизија)
фром агент_детаилс
где је Агенција_накнада < (изаберите максимум (Агенција_провизија) из детаља агента);
Добијена изјава ће вам показати 8000, што је друга највећа накнада у датој табели. Када се упит покрене, подупит израчунава максималну вредност са листе накнада. Највиши износ накнаде (9000) се чува у меморији.
Када се овај део израчуна, израчунава се други део упита, који проналази другу највишу накнаду из табеле (од < користи се знак). Крајњи резултат је 8000, што је друга највећа накнада у табели.
Подупити у оквиру клаузуле Фром
Друга варијација унутар потупита је преношење услова у из клаузула. Као сличан концепт, прво се обрађује унутрашњи упит, а затим се обрађује спољашњи упит. Унутрашњи упит ће филтрирати податке и приказати резултате где је ИД = 3.
Ево упита за референцу:
изаберите а.* из (
изаберите агенци_фее из агент_детаилс
где је ИД= 3) као а;
Ово је врло основна структура; међутим, што су ваше табеле података сложеније, добићете више редова података, који одговарају вашим условима.
Коришћење подупита са уметнутим у наредбу
Ако желите да ажурирате постојећу табелу неким новим редовима података, можете користити Инсерт Инто изјава. Потупит се може показати прилично корисним ако желите да додате вредности на основу одређеног(их) услова(а).
Структура упита:
уметните у име_табеле
изаберите * из табле_наме
где је име_колоне = услови;
изаберите * из табле_наме;
Ево примера како можете да користите уметање у наредбу са подупитом:
уметните у агент_детаилс
изаберите * из агента_детаилс
где агенци_фее ин (1000, 5000);
изаберите * из агент_детаилс;
Када се упит покрене, вредности које одговарају услову биће поново уметнуте у постојећу табелу. Тхе изаберите * референца покупи све колоне заједно и умеће је у табелу агент_детаилс каква јесте. Тхе ин израз се користи за дефинисање више услова филтера одједном.
Коришћење под-упита са изјавом о ажурирању
Постоје ситуације у којима желите да ажурирате основне табеле док извршавате упите. Да бисте то урадили, можете користити ажурирање исказ заједно са командама за упите.
Овако ћете написати подупит да бисте ажурирали информације у табели у једној инстанци:
ажурирање табле_наме
сет цолумн_наме = нев_валуе
где је име_колоне =
(изаберите цолумн_наме из табле_наме где је = );
Ево примера који показује употребу изјаве за ажурирање:
УПДАТЕ агент_детаилс
СЕТ агенци_фее = 35000
ВХЕРЕ агенци_фее =
(СЕЛЕЦТ агенци_фее ФРОМ агент_детаилс ВХЕРЕ Фирст_наме='Јохн');
изаберите * из агент_детаилс;
Подупит ће филтрирати колону агенци_фее и издвојити редове у којима се Фирст_Наме подудара Јохн. Следеће се извршава спољни упит, при чему се агенцијска провизија ажурира на 35000 за Џона Вика.
Можете проћи а изаберите * изјава за проверу коначних резултата; приметићете да је агенцијска провизија за Џона Вика ажурирана на 35000, пошто постоји само инстанца која одговара условима дефинисаним у упиту.
Коришћење под-упита са наредбом за брисање
Баш као и изјава за ажурирање, у којој ажурирате редове података унутар постојеће табеле, избрисати изјава брише ред(ове) података на основу услова.
Структура изјаве за брисање је:
избрисати из табле_наме где је име променљиве/колоне =
(изаберите цолумн_наме из табле_наме где је = услов);
Ево примера:
Избриши из агент_детаилс
где Име_ИН
(изаберите Фирст_наме из агент_детаилс где агенци_фее = 9000);
изаберите * из агент_детаилс;
Коришћење под-упита унутар СКЛ-а
Подупити су одлична карактеристика унутар СКЛ-а, која вас може спасити од писања бескрајних редова непотребног кода. Када будете у могућности да користите основне функције подупита за лицитирање, никада не бисте желели да бринете о сложености СКЛ кодирања.
Увек је најбоље да унапредите своје постојеће знање о СКЛ-у како бисте били сигурни да сте увек на врху своје игре. Будите сигурни, СКЛ варалице могу вам дати добру идеју о томе како да надоградите своје основе једним погледом.
Желите да сазнате више о СКЛ-у? Руковање различитим командама СКЛ упита је одличан начин да напредујете.
Реад Нект
- Програмирање
- Програмирање
- СКЛ
- Алати за програмирање

Гаурав Сииал има две године искуства писања, писања за низ фирми за дигитални маркетинг и докумената о животном циклусу софтвера.
Претплатите се на наш билтен
Придружите се нашем билтену за техничке савете, рецензије, бесплатне е-књиге и ексклузивне понуде!
Кликните овде да бисте се претплатили