Výukový program MySQL SubQuery s příklady

Anonim

Co jsou poddotazy?

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čích dotazů -

Běžnou stížností zákazníků na MyFlix Video Library je nízký počet filmových titulů. Vedení chce koupit 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 forma poddotazu na řádek . V takových poddotazech může vnitřní dotaz poskytnout pouze JEDEN výsledek. Povolené operátory při práci s poddotazy řádků jsou [=,>, =, <=,,! =,]

Podívejme se na další příklad,

Předpokládejme, že chcete Jména a Telefonní čísla členů lidí, kteří si pronajali film a ještě je nevrátí. Jakmile získáte jména a telefonní číslo, zavolejte je a připomenete. 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 schopný sub-dotazu y.

Dosud jsme viděli dva dotazy, pojďme nyní vidět příklad trojitého dotazu !!!

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 se připojují!

Ve srovnání s Joins jsou poddotazy snadno použitelné a snadno čitelné. Nejsou tak složité jako Joins

Proto jsou často používány začátečníky SQL.

Ale poddotazy mají problémy s výkonem. Použití spojení namísto dílčího dotazu vám může někdy poskytnout až 500násobné zvýšení výkonu.

Vzhledem k možnosti výběru se doporučuje 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 nemůžete použít operaci JOIN

souhrn

  • Poddotazy jsou vložené dotazy uvnitř jiného dotazu. Vložený dotaz se označuje jako vnitřní dotaz a dotaz na kontejner se nazývá vnější dotaz.
  • Dílčí dotazy se snadno používají, nabízejí velkou flexibilitu a lze je snadno rozdělit na jednotlivé logické komponenty, které tvoří dotaz, který je velmi užitečný při 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 vrátit více řádků i sloupců.
  • Poddotazy lze také použít v dotazech INSERT, UPDATE a DELETE.
  • Pokud jde o problémy s výkonem, pokud jde o získávání dat z více tabulek, důrazně se 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.