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 –

MySQL Poddotaz

Č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

MySQL Poddotaz

Podívejme se, jak tento dotaz funguje

MySQL Poddotaz

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 );


MySQL Poddotaz

Podívejme se, jak tento dotaz funguje

MySQL Poddotaz

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 -

MySQL Poddotaz

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

Dílčí dotazy vs spojení

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.