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
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.
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
- Programovanie
- Programovanie
- SQL
- Programovacie nástroje
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.
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