SQL dotazy jsou maso a brambory RDBMS CRUD (vytvořit, přečíst, aktualizovat, odstranit). Ale když vaše aplikace nebo podniková databáze roste, potřeba inteligentních dotazů pro získávání podmíněných dat specifických pro požadavky se stává nutností.
SQL je poměrně komplexní a zahrnuje mnoho funkcí – z nichž každá je vhodná pro různé obchodní použití. Jedna taková funkce zahrnuje použití dílčích dotazů.
Aby byly vaše kódy efektivní a efektivní, můžete v rámci svých kódů SQL používat dílčí dotazy k načítání dat, manipulaci s existujícími proměnnými a dosahování více cílů najednou.
Co jsou poddotazy SQL?
Dílčí dotaz je vnořený dotaz, který funguje jako parametr v rámci jiného hlavního dotazu. Dílčí dotaz je an vnitřní dotaz, zatímco hlavní dotaz je vnější dotaz.
Dílčí dotaz údajně vrací data jako argument v závorce pro hlavní dotaz, zatímco hlavní dotaz dále načítá konečný výsledek.
Dílčí dotazy jsou vloženy do Vybrat prohlášení nebo v Kde doložka. Taková struktura umožňuje, aby se dílčí dotaz choval jako dobře popsaná podmínka filtrace dat. Bohužel, dílčí dotazy mohou používat pouze
Skupina vytvořená příkazy a ne Seřadit podle příkazy, protože ty jsou povoleny pouze v hlavním dotazu.Příbuzný: Vše, co potřebujete vědět o příkazu SQL GROUP BY
Obvykle každý dílčí dotaz obsahuje jeden sloupec s Vybrat doložka. Existují však scénáře, kdy má hlavní dotaz více sloupců. Dílčí dotaz může být vnořen do jiného dílčího dotazu, čímž se stane vnořeným dílčím dotazem.
Struktura dílčího dotazu je následující:
Vyberte název_sloupce z tabulky, kde podmínka=
(tabulka SELECT podmíněný_sloupec FROM) jako alias;
Předpokládejme například, že máte následující tabulku:
ID | Jméno | Druhé jméno | Poplatek agentury |
1 | John | Knot | 5000 |
2 | Roberte | Graham | 4000 |
3 | Štěpáne | Hicksovi | 8000 |
4 | Bobe | Marley | 1000 |
5 | Marie | Ellen | 9000 |
Chcete-li v této tabulce vytáhnout jména lidí, kteří vydělávají nad průměrným honorářem agentury, můžete místo psaní více řádků kódu napsat dílčí dotaz.
Příbuzný: Jak vytvořit tabulku v SQL
Dotaz vypadá takto:
Vyberte * z agent_details
kde Agency_Fee > (vyberte průměr (Agency_Fee) z agent_details);
Příkaz před > znak je vnější dotaz, zatímco vše za > znak je vnitřní dotaz.
Vnitřní dotaz vypočítá průměrný agenturní poplatek v rámci dílčího dotazu a vnější dotaz zobrazí všechny hodnoty, které jsou větší než vypočtená průměrná hodnota.
Jak používat dílčí dotazy v SQL?
Existuje několik různých způsobů, jak můžete použít dílčí dotazy v SQL.
Dílčí dotazy s klauzulí Where
Jedna z nejzákladnějších struktur poddotazu v SQL je v klauzuli Where. Je to nejjednodušší způsob, jak definovat, co hledáte. Příkaz select vrací hodnoty podle podmínek dílčího dotazu a používá je jako parametr pro hlavní dotaz.
Struktura dotazu:
vyberte * z názvu_tabulky
kde název_sloupce = (vyberte název_sloupce z názvu_tabulky);
Pojďme si to vysvětlit na příkladu.
Předpokládejme, že chcete najít druhý nejvyšší poplatek za agenturu v tabulce agency_details. K tomu existují alternativní funkce v rámci SQL; nejlepší metodou je však použití dílčího dotazu.
Zde je návod, jak můžete definovat dílčí dotaz:
vybrat *, max (poplatek agentury)
z agent_details
kde Agency_fee < (vyberte maximum (Agency_fee) z agent_details);
Výsledný výpis vám ukáže 8000, což je druhý nejvyšší poplatek v dané tabulce. Když se dotaz spustí, dílčí dotaz vypočítá maximální hodnotu ze seznamu poplatků. Nejvyšší částka poplatku (9000) je uložen v paměti.
Jakmile je tato část spočítána, vypočítá se druhá část dotazu, která zjistí druhý nejvyšší poplatek z tabulky (od < se používá znak). Konečným výsledkem je 8000, což je druhý nejvyšší poplatek v tabulce.
Dílčí dotazy v rámci klauzule From
Další variací v rámci dílčích dotazů je předání podmínky v z doložka. Podle podobného konceptu se nejprve zpracuje vnitřní dotaz a poté se zpracuje vnější dotaz. Vnitřní dotaz vyfiltruje data a zobrazí výsledky, kde ID = 3.
Zde je dotaz pro referenci:
vyberte a.* z (
vyberte agency_fee z agent_details
kde ID = 3) jako a;
Toto je velmi základní struktura; čím jsou však vaše datové tabulky složitější, získáte více řádků dat, které odpovídají vašim podmínkám.
Použití dílčích dotazů s vložením do příkazu
Pokud chcete aktualizovat existující tabulku o nějaké nové datové řádky, můžete použít Vlož do tvrzení. Dílčí dotaz se může ukázat jako docela prospěšný, pokud chcete přidat hodnoty na základě konkrétní podmínky (podmínek).
Struktura dotazu:
vložit do table_name
vyberte * z názvu_tabulky
kde název_sloupce = podmínky;
select * from table_name;
Zde je příklad toho, jak můžete použít příkaz insert into s dílčím dotazem:
vložit do agent_details
vyberte * z agent_details
kde agenturní_poplatek v (1000, 5000);
select * from agent_details;
Po spuštění dotazu budou hodnoty odpovídající podmínce znovu vloženy do existující tabulky. The vybrat * reference vybere všechny sloupce dohromady a vloží je do tabulky agent_details tak, jak je. The v příkaz se používá k definování více podmínek filtru najednou.
Použití dílčích dotazů s příkazem Update
Existují situace, kdy chcete při spouštění dotazů aktualizovat podkladové tabulky. Chcete-li tak učinit, můžete použít Aktualizace spolu s dotazovacími příkazy.
Takto napíšete dílčí dotaz, abyste aktualizovali informace v tabulce v jednom případě:
aktualizovat název_tabulky
set column_name = new_value
kde název_sloupce =
(vyberte název_sloupce z názvu_tabulky, kde = );
Zde je příklad demonstrující použití příkazu aktualizace:
UPDATE agent_details
SET agenturní_poplatek = 35 000
KDE agenturní_poplatek =
(SELECT agenturní_poplatek FROM agent_details WHERE First_name='John');
select * from agent_details;
Dílčí dotaz bude filtrovat sloupec agency_fee a vyčlení řádky, kde se jméno shoduje John. Dále se provede vnější dotaz, přičemž poplatek za agenturu se aktualizuje na 35 000 pro Johna Wicka.
Můžete projít a vybrat * prohlášení pro kontrolu konečných výsledků; zjistíte, že poplatek za agenturu pro Johna Wicka je aktualizován na 35 000, protože existuje pouze instance odpovídající podmínkám definovaným v dotazu.
Použití dílčích dotazů s příkazem Delete
Stejně jako příkaz aktualizace, ve kterém aktualizujete řádky dat v existující tabulce, vymazat příkaz odstraní řádky (řádky) dat na základě podmínky.
Struktura příkazu delete je:
odstranit z název_tabulky kde název proměnné/sloupce =
(vyberte název_sloupce z názvu_tabulky, kde = podmínka);
Zde je příklad:
Smazat z agent_details
kde Křestní_jméno IN
(vyberte First_name z agent_details, kde agency_fee = 9000);
select * from agent_details;
Použití dílčích dotazů v rámci SQL
Dílčí dotazy jsou vynikající funkcí v rámci SQL, která vám může ušetřit psaní nekonečných řádků zbytečného kódu. Když jste schopni použít základní funkce dílčích dotazů pro zadávání nabídek, nikdy byste se nechtěli starat o složitost kódování SQL.
Vždy je nejlepší zlepšit své stávající znalosti SQL, abyste měli jistotu, že budete vždy na vrcholu své hry. Ujišťujeme vás, že cheat sheets SQL vám mohou poskytnout dobrou představu o tom, jak oprášit vaše základy jediným pohledem.
Chcete se dozvědět více o SQL? Zvládnutí různých příkazů SQL dotazu je skvělý způsob, jak se dostat dopředu.
Přečtěte si další
- Programování
- Programování
- SQL
- Programovací nástroje
Gaurav Siyal má dva roky zkušeností s psaním, psaním pro řadu digitálních marketingových firem a dokumentů životního cyklu softwaru.
Přihlaste se k odběru našeho newsletteru
Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné e-knihy a exkluzivní nabídky!
Chcete-li se přihlásit k odběru, klikněte sem