Le query SQL sono la carne e le patate di RDBMS CRUD (crea, leggi, aggiorna, elimina). Ma quando la tua applicazione o il database aziendale crescono, la necessità di query intelligenti per recuperare dati condizionali e specifici dei requisiti diventa un must.
SQL è relativamente completo e comprende molte funzionalità, ognuna delle quali è adatta per vari usi aziendali. Una di queste funzionalità include l'uso di sottoquery.
Per rendere i tuoi codici efficienti ed efficaci, puoi utilizzare le sottoquery all'interno dei tuoi codici SQL per recuperare dati, manipolare variabili esistenti e raggiungere più obiettivi in una volta sola.
Cosa sono le sottoquery SQL?
Una sottoquery è una query nidificata, che funziona come parametro all'interno di un'altra query principale. La sottoquery è un domanda interiore, mentre la query principale è il interrogazione esterna.
La sottoquery presumibilmente restituisce i dati come argomento tra parentesi per la query principale, mentre la query principale recupera ulteriormente il risultato finale.
Le sottoquery sono incorporate all'interno di Selezionare dichiarazione o nel Dove clausola. Tale struttura consente alla sottoquery di comportarsi come una condizione di filtraggio dei dati ben descritta. Sfortunatamente, le sottoquery possono utilizzare solo il Raggruppa per comandi e non Ordinato da comandi, poiché sono consentiti solo nella query principale.
Imparentato: Tutto quello che c'è da sapere sull'istruzione SQL GROUP BY
Di solito, ogni sottoquery comprende una singola colonna con Selezionare clausola. Tuttavia, esistono scenari in cui la query principale dispone di più colonne. Una sottoquery può essere nidificata all'interno di un'altra sottoquery, trasformandola in una sottoquery di nidificazione.
La restrizione di una sottoquery è la seguente:
Seleziona column_name dalla tabella dove condition=
(SELECT conditional_column FROM table) come alias;
Ad esempio, supponiamo di avere la seguente tabella:
ID | Nome di battesimo | Secondo nome | Spese di agenzia |
1 | John | Stoppino | 5000 |
2 | Roberto | Graham | 4000 |
3 | Stefano | Hick | 8000 |
4 | Bob | Marley | 1000 |
5 | Maria | Elena | 9000 |
In questa tabella, per estrarre i nomi delle persone che guadagnano al di sopra della tariffa media dell'agenzia, puoi scrivere una sottoquery, invece di scrivere più righe di codice.
Imparentato: Come creare una tabella in SQL
Ecco come appare la query:
Seleziona * da agent_details
dove Agency_Fee > (seleziona avg (Agency_Fee) da agent_details);
Il comando prima del > sign è la query esterna, mentre tutto dopo il > segno è la domanda interna.
La query interna calcolerà la tariffa media dell'agenzia all'interno della sottoquery e la query esterna mostrerà tutti i valori che sono maggiori del valore medio calcolato.
Come utilizzare le sottoquery in SQL?
Esistono diversi modi in cui è possibile utilizzare le sottoquery in SQL.
Sottoquery con clausola Where
Una delle strutture più basilari di una sottoquery in SQL si trova all'interno della clausola Where. È il modo più semplice per definire ciò che stai cercando. L'istruzione select restituisce valori in base alle condizioni della sottoquery e la utilizza come parametro per la query principale.
Struttura della query:
seleziona * da nome_tabella
dove nome_colonna = (selezionare nome_colonna da nome_tabella);
Spieghiamolo con un esempio.
Supponiamo di voler trovare la seconda commissione di agenzia più alta dalla tabella agency_details. Per fare ciò, ci sono funzioni alternative all'interno di SQL; tuttavia, il metodo migliore è utilizzare una sottoquery.
Ecco come definire la sottoquery:
seleziona *, max (commissione_agenzia)
da dettagli_agente
dove Agency_fee < (selezionare max (Agency_fee) da agent_details);
La dichiarazione risultante ti mostrerà 8000, che è la seconda commissione più alta nella tabella indicata. Quando la query viene eseguita, la sottoquery calcola il valore massimo dall'elenco delle commissioni. L'importo della commissione più alta (9000) è memorizzato.
Una volta calcolata questa parte, viene calcolata la seconda parte della query, che trova la seconda tariffa più alta dalla tabella (dal momento che il < si usa il segno). Il risultato finale è 8000, che è la seconda commissione più alta nella tabella.
Sottoquery all'interno della clausola From
Un'altra variazione all'interno delle sottoquery è il passaggio della condizione in a partire dal clausola. Come concetto simile, la query interna viene elaborata per prima e la query esterna viene elaborata in seguito. La query interna filtrerà i dati e mostrerà i risultati dove ID = 3.
Ecco la query di riferimento:
seleziona a.* da (
seleziona agency_fee da agent_details
dove ID= 3) come a;
Questa è una struttura molto semplice; tuttavia, più complesse sono le tue tabelle di dati, otterrai più righe di dati, che corrispondono alle tue condizioni.
Utilizzo di sottoquery con inserimento nell'istruzione
Se desideri aggiornare una tabella esistente con alcune nuove righe di dati, puoi utilizzare il file Inserire dichiarazione. Una sottoquery può rivelarsi piuttosto vantaggiosa, se si desidera aggiungere valori in base a una o più condizioni specifiche.
Struttura della query:
inserisci in nome_tabella
seleziona * da nome_tabella
dove nome_colonna = condizioni;
seleziona * da nome_tabella;
Ecco un esempio su come utilizzare l'istruzione insert into con la sottoquery:
inserisci in agent_details
seleziona * da agent_details
dove agency_fee in (1000, 5000);
seleziona * da agent_details;
Una volta eseguita la query, i valori che soddisfano la condizione verranno nuovamente inseriti nella tabella esistente. Il Selezionare * reference raccoglie tutte le colonne insieme e le inserisce nella tabella agent_details così com'è. Il in istruzione viene utilizzata per definire più condizioni di filtro contemporaneamente.
Utilizzo di sottoquery con istruzione di aggiornamento
Ci sono situazioni in cui si desidera aggiornare le tabelle sottostanti durante l'esecuzione delle query. Per farlo, puoi usare il aggiornare istruzione insieme ai comandi di query.
Questo è il modo in cui scriverai la sottoquery per aggiornare le informazioni nella tabella in un'istanza:
aggiorna nome_tabella
imposta nome_colonna = nuovo_valore
dove nome_colonna =
(seleziona nome_colonna da nome_tabella dove = );
Ecco un esempio che dimostra l'uso della dichiarazione di aggiornamento:
AGGIORNA dettagli_agente
SET commissione_agenzia = 35000
DOVE commissione_agenzia =
(SELECT agency_fee FROM agent_details WHERE First_name='John');
seleziona * da agent_details;
La sottoquery filtrerà sulla colonna agency_fee e individuerà le righe in cui First_Name corrisponde John. Successivamente viene eseguita la query esterna, in cui la commissione di agenzia viene aggiornata a 35000 per John Wick.
Puoi passare un Selezionare * dichiarazione per verificare i risultati finali; noterai che la commissione di agenzia per John Wick è stata aggiornata a 35000, poiché esiste solo un'istanza che soddisfa le condizioni definite nella query.
Utilizzo di sottoquery con istruzione Delete
Proprio come l'istruzione di aggiornamento, in cui stai aggiornando le righe di dati all'interno di una tabella esistente, il eliminare l'istruzione elimina le righe di dati in base a una condizione.
La struttura dell'istruzione delete è:
elimina da nome_tabella dove nome variabile/colonna =
(selezionare nome_colonna da nome_tabella dove = condizione);
Ecco un esempio:
Elimina da agent_details
dove Nome IN
(selezionare Nome da agent_details dove agency_fee = 9000);
seleziona * da agent_details;
Utilizzo di sottoquery all'interno di SQL
Le sottoquery sono un'eccellente funzionalità all'interno di SQL, che può evitarti di scrivere infinite righe di codice non necessario. Quando sei in grado di utilizzare le funzionalità di base delle sottoquery per eseguire le tue offerte, non vorresti mai preoccuparti di entrare nelle complessità della codifica SQL.
È sempre meglio migliorare le tue conoscenze SQL esistenti per assicurarti di essere sempre al top del tuo gioco. Stai tranquillo, i cheat sheet di SQL possono darti una buona idea su come rispolverare le tue basi in un solo sguardo.
Vuoi saperne di più su SQL? Avere un handle sui vari comandi di query SQL è un ottimo modo per andare avanti.
Leggi Avanti
- Programmazione
- Programmazione
- SQL
- Strumenti di programmazione
Gaurav Siyal ha due anni di esperienza di scrittura, scrivendo per una serie di società di marketing digitale e documenti sul ciclo di vita del software.
Iscriviti alla nostra Newsletter
Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!
Clicca qui per iscriverti