MySQL Výukový program SubQuery s příklady
Co jsou dílčí dotazy?
Dílčí dotaz je výběrový dotaz, který je obsažen v jiném dotazu. Vnitřní výběrový dotaz se obvykle používá k určení výsledků vnějšího výběrového dotazu.
Podívejme se na syntaxi dílčího dotazu –
Častou stížností zákazníků ve Videotéce MyFlix je nízký počet filmových titulů. Vedení chce nakupovat filmy pro kategorii, která má nejmenší počet titulů.
Můžete použít dotaz jako
SELECT category_name FROM categories WHERE category_id =( SELECT MIN(category_id) from movies);
Dává výsledek
Podívejme se, jak tento dotaz funguje
Výše uvedené je formou Řádek dílčího dotazu. V takových dílčích dotazech může vnitřní dotaz poskytnout pouze JEDEN výsledek. Přípustné operátory při práci s řádkovými poddotazy jsou [=, >, =, <=, ,!=, ]
Podívejme se na další příklad,
Předpokládejme, že chcete jména a telefonní čísla členů lidí, kteří si půjčili film a ještě je vrátit. Jakmile získáte jména a telefonní číslo, zavoláte jim a upozorníte je. Můžete použít dotaz jako
SELECT full_names,contact_number FROM members WHERE membership_number IN (SELECT membership_number FROM movierentals WHERE return_date IS NULL );
Podívejme se, jak tento dotaz funguje
V tomto případě vnitřní dotaz vrátí více než jeden výsledek. Výše uvedené je typ Tschopný sub-query.
Doposud jsme viděli dva dotazy, nyní se podívejme na příklad trojitý dotaz!!!
Předpokládejme, že vedení chce odměnit nejlépe platícího člena.
Můžeme spustit dotaz jako
Select full_names From members WHERE membership_number = (SELECT membership_number FROM payments WHERE amount_paid = (SELECT MAX(amount_paid) FROM payments));
Výše uvedený dotaz dává následující výsledek -
Dílčí dotazy vs spojení!
V porovnání s Joins , jsou dílčí dotazy snadno použitelné a snadno čitelné. Nejsou tak složité jako Připojuje
Proto jsou často používány SQL začátečníci.
Ale dílčí dotazy mají problémy s výkonem. Použití spojení místo dílčího dotazu vám může občas poskytnout až 500násobné zvýšení výkonu.
Pokud je na výběr, doporučuje se použít JOIN přes dílčí dotaz.
Dílčí dotazy by se měly používat pouze jako záložní řešení, když k dosažení výše uvedeného nelze použít operaci JOIN
Shrnutí
- Poddotazy jsou vložené dotazy uvnitř jiného dotazu. Vložený dotaz je známý jako vnitřní dotaz a kontejnerový dotaz je známý jako vnější dotaz.
- Dílčí dotazy se snadno používají, nabízejí velkou flexibilitu a lze je snadno rozdělit na jednotlivé logické komponenty tvořící dotaz, což je velmi užitečné, když Testování a ladění dotazů.
- MySQL podporuje tři typy poddotazů, skalární, řádkové a tabulkové poddotazy.
- Skalární dílčí dotazy vracejí pouze jeden řádek a jeden sloupec.
- Řádkové dílčí dotazy vracejí pouze jeden řádek, ale mohou mít více než jeden sloupec.
- Poddotazy tabulky mohou vracet více řádků i sloupců.
- Poddotazy lze také použít v dotazech INSERT, UPDATE a DELETE.
- Pro problémy s výkonem, pokud jde o získávání dat z více tabulek, se důrazně doporučuje používat JOINy místo poddotazů. Dílčí dotazy by měly být používány pouze z dobrého důvodu.