Poslední aktualizace 26. února 2020 08:07:42 (UTC / GMT +8 hodin)
Co je poddotaz v SQL?
Poddotaz je dotaz SQL vnořený do většího dotazu.
- Poddotaz se může objevit v:
- – klauzuli SELECT
- – klauzuli FROM
- – klauzule WHERE
- Poddotaz lze vnořit do příkazu SELECT, INSERT, UPDATE nebo DELETE nebo do jiného poddotaz.
- Poddotaz se obvykle přidává do klauzule WHERE jiného příkazu SQL SELECT.
- Můžete použít operátory porovnání, například >, < nebo =. Operátor porovnání může být také víceřádkový operátor, například IN, ANY nebo ALL.
- Poddotaz se také nazývá vnitřní dotaz nebo vnitřní výběr, zatímco příkaz obsahující poddotaz se také nazývá vnější dotaz nebo vnější výběr.
- Vnitřní dotaz se provede nejprve před nadřazeným dotazem, takže výsledky vnitřního dotazu lze předat vnějšímu dotazu.
Vy může použít poddotaz v příkazu SELECT, INSERT, DELETE nebo UPDATE k provedení následujících úkolů:
- Porovnat výraz s výsledkem dotazu.
- Zjistit, zda výraz je zahrnut ve výsledcích dotazu.
- Zkontrolujte, zda dotaz vybere nějaké řádky.
Syntaxe:
- Poddotaz (vnitřní dotaz) se provede jednou před provedením hlavního dotazu (vnější dotaz).
- Hlavní dotaz (vnější dotaz) používá výsledek poddotazu.
Příklad poddotazů SQL:
V této části se naučíte požadavky na používání poddotazů. Máme následující dvě tabulky „student“ a „značky“ se společným polem „StudentID“.
studentské známky
Nyní chceme napsat dotaz, abychom identifikovali všechny studenty, kteří získají lepší známky než student, jehož StudentID je „V002“, ale známky „V002“ neznáme.
– K vyřešení problému potřebujeme dva dotazy. Jeden dotaz vrátí známky (uložené v poli Total_marks) „V002“ a druhý dotaz identifikuje studenty, kteří získají lepší známky než výsledek prvního dotazu.
První dotaz:
Výsledek dotazu:
Výsledek dotazu je 80.
– Použitím výsledku tohoto dotazu jsme zde napsali další dotaz k identifikaci studentů, kteří získají lepší známky než 80. Zde je dotaz:
Druhý dotaz:
Výsledek dotazu:
Nad dvěma dotazy identifikovaní studenti, kteří má lepší číslo než student, jehož StudentID je „V002“ (Abhay).
Výše uvedené dva dotazy můžete kombinovat umístěním jednoho dotazu do druhého. Poddotaz (také nazývaný „vnitřní dotaz“) je dotaz uvnitř závorek. Podívejte se na následující kód a výsledek dotazu:
Kód SQL:
Výsledek dotazu:
Obrázková prezentace poddotazu SQL:
Poddotazy: Obecná pravidla
Příkaz SELECT poddotazu je téměř podobný k příkazu SELECT a slouží k zahájení běžného nebo vnějšího dotazu. Zde je syntaxe poddotazu:
Syntaxe:
Poddotazy: Pokyny
Při používání poddotazů je třeba vzít v úvahu několik pokynů:
- Poddotaz musí být uzavřen v závorkách.
- Poddotaz musí být umístěn na pravou stranu operátoru porovnání.
- Poddotazy nemohou interně manipulovat s jejich výsledky, proto klauzuli ORDER BY nelze přidat do poddotazu. V hlavním příkazu SELECT (vnější dotaz), který bude poslední klauzulí, můžete použít klauzuli ORDER BY.
- Použijte jednoradové operátory s jednoradovými poddotazy.
- Pokud poddotaz (vnitřní dotaz) vrátí hodnotu null vnějšímu dotazu, vnější dotaz nevrátí žádné řádky při použití určitých operátorů porovnání v klauzuli WHERE.
Typ poddotazů
- Poddotaz na jeden řádek: Vrací nulu nebo jeden řádek.
- Poddotaz na více řádků: Vrátí jeden nebo více řádků.
- Více poddotazů na sloupce: Vrátí jeden nebo více sloupců.
- Korelované poddotazy: Odkazujte na jeden nebo více sloupců ve vnějším příkazu SQL. Poddotaz je známý jako korelovaný poddotaz, protože poddotaz souvisí s vnějším příkazem SQL.
- Vnořené poddotazy: Poddotazy jsou umístěny v jiném poddotazu.
V příštím zasedání jsme důkladně probrali výše uvedená témata. Kromě výše uvedeného typu poddotazů můžete použít poddotaz uvnitř příkazu INSERT, UPDATE a DELETE. Zde je krátká diskuse:
Poddotazy s příkazem INSERT
Příkaz INSERT lze použít s poddotazy.Zde je syntaxe a příklad poddotazů pomocí příkazu INSERT.
Syntaxe:
INSERT INTO table_name ) ]SELECT FROM table1 ;
Pokud chceme tyto objednávky vložit z “ tabulka objednávek, která má zálohu_množství 2000 nebo 5 000 do tabulky „neworder“, lze použít následující SQL:
Ukázková tabulka: objednávky
Kód SQL:
Výstup:
Další podrobnosti poddotazů pomocí příkazu INSERT klikněte sem.
Poddotazy s příkazem UPDATE
V příkazu UPDATE můžete nastavit novou hodnotu sloupce rovnou výsledku vrácenému poddotazem na jeden řádek. Zde je syntaxe a příklad poddotazů pomocí příkazu UPDATE.
Syntaxe:
UPDATE table SET column_name = new_value(SELECT COLUMN_NAMEFROM TABLE_NAME)
Chceme-li aktualizovat ord_date v “ neworder „tabulka s“ 15-JAN-10 „, které mají rozdíl ord_amount a advance_amount je menší než minimální ord_amount tabulky“ order „, lze použít následující SQL:
Ukázková tabulka: neworder
Kód SQL:
Výstup:
Chcete-li zobrazit další podrobnosti poddotazů pomocí příkazu UPDATE, klikněte sem.
Poddotazy s příkazem DELETE
Příkaz DELETE lze použít s poddotazy. Tady je syntaxe a příklad poddotazů pomocí příkazu DELETE.
Syntaxe:
DELETE FROM TABLE_NAME(SELECT COLUMN_NAME FROM TABLE_NAME)
Chceme-li smazat ty objednávky z tabulky „neworder“, jejichž předstih_čísla je menší než maximální předstih_výše objednávky „lze použít následující SQL:
Ukázková tabulka: neworder
Kód SQL:
Výstup:
Chcete-li zobrazit další podrobnosti poddotazů pomocí příkazu DELETE, klikněte sem.
Co dál?
- Poddotazy SQL – Prezentace snímků
- Poddotazy pro jeden řádek
- Poddotazy pro více řádků a sloupců
- Korelované poddotazy pomocí aliasů
- Vnořené poddotazy
Poznámka: Výstupy zde uvedeného příkazu SQL jsou převzaty pomocí Oracle Database 10g Express Edition.
Procvičování cvičení SQL
- Cvičení SQL, procvičování, řešení
- SQL načítání dat z tabulek
- SQL Boolean a relační operátory
- Zástupné znaky SQL a speciální operátory
- Agregát SQL Funkce
- Výstup dotazu na formátování SQL
- Dotazování SQL na více tabulkách
- FILTROVÁNÍ a TŘÍDĚNÍ v HR databázi
- SQL JOINS
- SQL JOINS
- SQL JOINS v HR databázi
- SQL SUBQUERIES
- SQL SUBQUERIES
- SUBQUERIES SQL v databázi HR
- SQL Union
- Zobrazení SQL
- Správa uživatelských účtů SQL
- Databáze filmů
- ZÁKLADNÍ dotazy na databázi filmů
- SUBQUERIES na databázi filmů
- PŘIPOJENÍ k databázi filmů
- databáze fotbalu
- Úvod
- ZÁKLADNÍ dotazy na databázi fotbalu
- SUBQUERIES na databázi fotbalu
- PŘIPOJÍ se dotazy na fotbalová databáze
- Nemocniční databáze
- Úvod
- ZÁKLADNÍ, SUBQUERIES a JOINS
- Databáze zaměstnanců
- ZÁKLADNÍ dotazy na databázi zaměstnanců
- SUBQUERIES v databázi zaměstnanců
- Další a další!