SQL dotazy sú mäso a zemiaky RDBMS CRUD (vytvoriť, prečítať, aktualizovať, odstrániť). Keď sa však vaša aplikácia alebo podniková databáza rozrastie, potreba inteligentných dotazov na získanie podmienených údajov špecifických pre požiadavky sa stáva nevyhnutnosťou.

SQL je relatívne komplexný a zahŕňa mnoho funkcií, z ktorých každá je vhodná na rôzne obchodné účely. Jednou z takýchto funkcií je použitie poddotazov.

Aby boli vaše kódy efektívne a efektívne, môžete použiť poddotazy v rámci vašich kódov SQL na načítanie údajov, manipuláciu s existujúcimi premennými a dosiahnutie viacerých cieľov naraz.

Čo sú poddotazy SQL?

Poddotaz je vnorený dotaz, ktorý funguje ako parameter v rámci iného hlavného dotazu. Poddotaz je an vnútorný dotaz, pričom hlavným dotazom je vonkajší dotaz.

Poddotaz údajne vracia údaje ako argument v zátvorkách pre hlavný dotaz, zatiaľ čo hlavný dotaz ďalej získava konečný výsledok.

Poddotazy sú vložené do Vyberte vyhlásenie alebo v Kde doložka. Takáto štruktúra umožňuje, aby sa poddotaz správal ako dobre opísaná podmienka filtrovania údajov. Žiaľ, poddotazy môžu používať iba

instagram viewer
Zoskupiť podľa príkazy a nie Zoradiť podľa príkazy, pretože tie sú povolené len v hlavnom dotaze.

Súvisiace: Všetko, čo potrebujete vedieť o príkaze SQL GROUP BY

Zvyčajne každý poddotaz obsahuje jeden stĺpec s Vyberte doložka. Existujú však scenáre, v ktorých má hlavný dotaz viacero stĺpcov. Poddotaz môže byť vnorený do iného poddotazu, čím sa z neho stane vnorený poddotaz.

Spresnenie poddotazu je nasledovné:

Vyberte názov_stĺpca z tabuľky, kde podmienka= 
(SELECT podmienený_stĺpec FROM tabuľky) ako alias;

Predpokladajme napríklad, že máte nasledujúcu tabuľku:

ID Krstné meno Druhé meno Agentúrny poplatok
1 John Knôt 5000
2 Robert Graham 4000
3 Štefan Hicks 8000
4 Bob Marley 1000
5 Mary Ellen 9000

Ak chcete v tejto tabuľke vytiahnuť mená ľudí, ktorí zarábajú nad priemerný poplatok za agentúru, môžete namiesto písania viacerých riadkov kódu napísať poddotaz.

Súvisiace: Ako vytvoriť tabuľku v SQL

Dotaz vyzerá takto:

Vyberte * z agent_details
kde Agency_Fee > (vyberte priemer (Agency_Fee) z agent_details);

Príkaz pred > znak je vonkajší dotaz, zatiaľ čo všetko za > znak je vnútorný dotaz.

Vnútorný dopyt vypočíta priemerný poplatok agentúre v rámci poddotazu a vonkajší dopyt zobrazí všetky hodnoty, ktoré sú väčšie ako vypočítaná priemerná hodnota.

Ako používať poddotazy v SQL?

Existuje niekoľko rôznych spôsobov, ako môžete použiť poddotazy v SQL.

Čiastkové otázky s klauzulou kde

Jedna z najzákladnejších štruktúr poddotazu v SQL je v klauzule Where. Je to najjednoduchší spôsob, ako definovať, čo hľadáte. Príkaz select vráti hodnoty podľa podmienok poddotazu a použije ich ako parameter pre hlavný dotaz.

Štruktúra dopytu:

vyberte * z table_name
kde názov_stĺpca = (vyberte názov stĺpca z názvu_tabuľky);

Vysvetlime si to na príklade.

Predpokladajme, že chcete nájsť druhý najvyšší poplatok za agentúru v tabuľke agency_details. Na tento účel existujú v rámci SQL alternatívne funkcie; najlepším spôsobom je však použiť poddotaz.

Tu je postup, ako môžete definovať poddotaz:

vyberte *, max (poplatok za agentúru)
z agent_details
kde Agency_fee < (vyberte max (Agency_fee) z agent_details);

Výsledné vyhlásenie vám ukáže 8000, čo je druhý najvyšší poplatok v danej tabuľke. Keď sa dotaz spustí, poddotaz vypočíta maximálnu hodnotu zo zoznamu poplatkov. Najvyššia výška poplatku (9000) je uložený v pamäti.

Po spočítaní tejto časti sa vypočíta druhá časť dopytu, ktorá nájde druhý najvyšší poplatok z tabuľky (od < používa sa znak). Konečný výsledok je 8000, čo je druhý najvyšší poplatok v tabuľke.

Čiastkové otázky v rámci klauzuly Od

Ďalšou variáciou v rámci poddotazov je odovzdanie podmienky v od doložka. Pri podobnom koncepte sa najskôr spracuje vnútorný dotaz a potom sa spracuje vonkajší dotaz. Vnútorný dopyt vyfiltruje údaje a zobrazí výsledky, kde ID = 3.

Tu je dopyt pre referenciu:

vyberte a.* z (
vyberte agentúrny_poplatok z podrobností o agentovi
kde ID = 3) ako a;

Toto je veľmi základná štruktúra; čím sú však vaše tabuľky údajov zložitejšie, získate viac riadkov údajov, ktoré zodpovedajú vašim podmienkam.

Používanie poddotazov s vložením do výkazu

Ak chcete aktualizovať existujúcu tabuľku o nejaké nové riadky údajov, môžete použiť Vložiť do vyhlásenie. Poddotaz sa môže ukázať ako celkom výhodný, ak chcete pridať hodnoty na základe konkrétnej podmienky (podmienok).

Štruktúra dopytu:

vložiť do table_name 
vyberte * z table_name
kde názov_stĺpca = podmienky;
vyberte * z názvu_tabulky;

Tu je príklad, ako môžete použiť vloženie do príkazu s poddotazom:

vložiť do agent_details
vyberte * z agent_details
kde agentúra_poplatok v (1000, 5000);
vyberte * z agent_details;

Po spustení dotazu sa hodnoty zodpovedajúce podmienke znova vložia do existujúcej tabuľky. The vybrať * referencia vyberie všetky stĺpce spolu a vloží ich do tabuľky agent_details tak, ako je. The v príkaz sa používa na definovanie viacerých podmienok filtrovania naraz.

Používanie poddotazov s aktualizačným vyhlásením

Existujú situácie, v ktorých chcete aktualizovať základné tabuľky počas spúšťania dotazov. Ak to chcete urobiť, môžete použiť aktualizovať spolu s dotazovacími príkazmi.

Takto napíšete poddotaz na aktualizáciu informácií v tabuľke v jednom prípade:

aktualizovať názov_tabuľky 
set column_name = new_value
kde názov_stĺpca =
(vyberte názov_stĺpca z názvu_tabuľky, kde = );

Tu je príklad demonštrujúci použitie príkazu na aktualizáciu:

UPDATE agent_details 
SET agentúrny_poplatok = 35 000
KDE agentúrny_poplatok =
(SELECT agentúrny_poplatok FROM agent_details WHERE Krstné_meno='John');
vyberte * z agent_details;

Poddotaz vyfiltruje stĺpec agency_fee a vyberie riadky, v ktorých sa zhoduje meno John. Ďalej sa vykoná vonkajší dotaz, pričom poplatok za agentúru sa aktualizuje na 35 000 pre Johna Wicka.

Môžete prejsť a vybrať * vyhlásenie na kontrolu konečných výsledkov; všimnete si, že poplatok za agentúru pre Johna Wicka je aktualizovaný na 35 000, pretože existuje iba inštancia zodpovedajúca podmienkam definovaným v dopyte.

Používanie poddotazov s príkazom Delete

Rovnako ako príkaz na aktualizáciu, v ktorom aktualizujete riadky údajov v existujúcej tabuľke, vymazať príkaz vymaže riadky (riadky) údajov na základe podmienky.

Štruktúra príkazu delete je:

vymazať z table_name kde názov premennej/stĺpca = 
(vyberte názov_stĺpca z názvu_tabuľky, kde = podmienka);

Tu je príklad:

Odstrániť z agent_details 
kde Meno IN
(vyberte First_name z agent_details, kde agency_fee = 9000);
vyberte * z agent_details;

Používanie poddotazov v rámci SQL

Poddotazy sú vynikajúcou funkciou v rámci SQL, ktorá vám môže ušetriť písanie nekonečných riadkov zbytočného kódu. Keď dokážete použiť základné funkcie poddotazov na vykonanie ponuky, nikdy by ste sa nechceli obávať zložitosti kódovania SQL.

Vždy je najlepšie zlepšiť svoje existujúce znalosti SQL, aby ste sa uistili, že budete vždy na vrchole svojej hry. Uisťujeme vás, že hárky SQL vám môžu poskytnúť dobrý nápad, ako oprášiť vaše základy jediným pohľadom.

Essential SQL Commands Cheat Sheet pre začiatočníkov

Chcete sa dozvedieť viac o SQL? Ovládanie rôznych príkazov SQL dotazu je skvelý spôsob, ako sa dostať dopredu.

Prečítajte si ďalej

zdieľamTweetujteEmail
Súvisiace témy
  • Programovanie
  • Programovanie
  • SQL
  • Programovacie nástroje
O autorovi
Gaurav Siyal (35 publikovaných článkov)

Gaurav Siyal má dvojročné skúsenosti s písaním písania pre sériu digitálnych marketingových firiem a dokumentov životného cyklu softvéru.

Viac od Gaurava Siyala

prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné e-knihy a exkluzívne ponuky!

Kliknutím sem sa prihlásite na odber