MySQL Tutorial sulle sottoquery con esempi

Cosa sono le sottoquery?

Una sottoquery è una query di selezione contenuta all'interno di un'altra query. La query di selezione interna viene solitamente utilizzata per determinare i risultati della query di selezione esterna.

Esaminiamo la sintassi della sottoquery:

MySQL Sottoquery

Un reclamo comune dei clienti presso la Libreria video MyFlix è il basso numero di titoli di film. La direzione vuole acquistare film per una categoria che ha il minor numero di titoli.

Puoi usare una query come

SELECT category_name FROM categories WHERE category_id =( SELECT MIN(category_id) from movies);

Dà un risultato

MySQL Sottoquery

Vediamo come funziona questa query

MySQL Sottoquery

Quanto sopra è una forma di Sottoquery di riga. In tali sottoquery la query interna può fornire solo UN risultato. Gli operatori consentiti quando si lavora con sottoquery di riga sono [=, >, =, <=, ,!=, ]

Diamo un'occhiata a un altro esempio,

Supponiamo di volere nomi e numeri di telefono di membri di persone che hanno noleggiato un film e devono ancora restituirli. Una volta ottenuti i nomi e il numero di telefono, li chiami per inviare un promemoria. Puoi usare una query come

SELECT full_names,contact_number FROM   members  WHERE  membership_number IN (SELECT membership_number FROM movierentals WHERE return_date IS NULL );


MySQL Sottoquery

Vediamo come funziona questa query

MySQL Sottoquery

In questo caso, la query interna restituisce più di un risultato. Quanto sopra è il tipo di Tcapace sub-query.

Finora abbiamo visto due query, vediamone ora un esempio tripla domanda!!!

Supponiamo che la direzione voglia premiare il membro più pagato.

Possiamo eseguire una query come

Select full_names From members WHERE membership_number = (SELECT membership_number FROM payments WHERE amount_paid = (SELECT MAX(amount_paid) FROM payments));

La query precedente fornisce il seguente risultato:

MySQL Sottoquery

Sottoquery e join!

Rispetto ai Join, le sottoquery sono semplici da usare e facili da leggere. Non sono così complicati come Entra a far parte

Quindi ci sono spesso usati da Principianti SQL.

Ma le sottoquery presentano problemi di prestazioni. L'utilizzo di un join anziché di una sottoquery può a volte offrire un aumento delle prestazioni fino a 500 volte.

Data la possibilità di scelta, si consiglia di utilizzare un JOIN su una sottoquery.


Le sottoquery devono essere utilizzate solo come soluzione di fallback quando non è possibile utilizzare un'operazione JOIN per ottenere quanto sopra

Sottoquery e join

Sommario

  • Le sottoquery sono query incorporate all'interno di un'altra query. La query incorporata è nota come query interna mentre la query contenitore è nota come query esterna.
  • Le sottoquery sono facili da usare, offrono grande flessibilità e possono essere facilmente suddivise in singoli componenti logici che compongono la query, il che è molto utile quando Testing e il debug delle query.
  • MySQL supporta tre tipi di sottoquery, scalari, di riga e di tabella.
  • Le sottoquery scalari restituiscono solo una singola riga e una singola colonna.
  • Le sottoquery di riga restituiscono solo una singola riga ma possono avere più di una colonna.
  • Le sottoquery di tabella possono restituire più righe e colonne.
  • Le sottoquery possono essere utilizzate anche nelle query INSERT, UPDATE e DELETE.
  • Per problemi di prestazioni, quando si tratta di ottenere dati da più tabelle, si consiglia vivamente di utilizzare JOIN anziché sottoquery. Le sottoquery dovrebbero essere utilizzate solo con una buona ragione.