Sottoquery SQL

Ultimo aggiornamento il 26 febbraio 2020 08:07:42 (UTC / GMT +8 ore)

Cosè la sottoquery in SQL?

Una sottoquery è una query SQL nidificata allinterno di una query più grande.

  • Una sottoquery può verificarsi in:
    • – Una clausola SELECT
    • – Una clausola FROM
    • – Una clausola WHERE
  • La sottoquery può essere nidificata allinterno di unistruzione SELECT, INSERT, UPDATE o DELETE o in unaltra sottoquery.
  • Una sottoquery viene solitamente aggiunta allinterno della clausola WHERE di unaltra istruzione SQL SELECT.
  • Puoi utilizzare gli operatori di confronto, come >, < o =. Loperatore di confronto può anche essere un operatore di più righe, come IN, ANY o ALL.
  • Una sottoquery è anche chiamata query interna o selezione interna, mentre listruzione contenente una sottoquery è anche chiamata query esterna o selezione esterna.
  • La query interna viene eseguita prima della query padre in modo che i risultati di una query interna possano essere passati alla query esterna.

Tu può utilizzare una sottoquery in unistruzione SELECT, INSERT, DELETE o UPDATE per eseguire le seguenti attività:

  • Confronta unespressione con il risultato della query.
  • Determina se unespressione è inclusa nei risultati della query.
  • Controlla se la query seleziona righe.

Sintassi:

  • La sottoquery (query interna) viene eseguita una volta prima dellesecuzione della query principale (query esterna).
  • La query principale (query esterna) utilizza il risultato della sottoquery.

Esempio di sottoquery SQL:

In questa sezione imparerai i requisiti per usare le sottoquery. Abbiamo le seguenti due tabelle “studente” e “voti” con campo comune “StudentID”.



voti degli studenti

Ora vogliamo scrivere una query per identificare tutti gli studenti che ottengono voti migliori di quello dello studente il cui StudentID è “V002”, ma non conosciamo i voti di “V002”.
– Per risolvere il problema, sono necessarie due query. Una query restituisce i voti (memorizzati nel campo Total_marks) di “V002” e una seconda query identifica gli studenti che ottengono voti migliori rispetto al risultato della prima query.

Prima query:

Risultato della query:

Il risultato della query è 80.
-Utilizzando il risultato di questa query, qui abbiamo scritto unaltra query per identificare gli studenti che ottengono voti migliori di 80. Ecco la query:

Seconda query:

Risultato della query:

Sopra due query studenti identificati che ottengono t Il numero migliore dello studente il cui StudentID è “V002” (Abhay).

È possibile combinare le due query precedenti inserendo una query allinterno dellaltra. La sottoquery (chiamata anche “query interna”) è la query allinterno delle parentesi. Vedere il codice e il risultato della query seguenti:

Codice SQL:

Risultato della query:

Presentazione pittorica della sottoquery SQL:

Sottoquery: regole generali

Unistruzione SELECT della sottoquery è quasi simile allistruzione SELECT e viene utilizzato per iniziare una query normale o esterna. Ecco la sintassi di una sottoquery:

Sintassi:

Sottoquery: Linee guida

Ci sono alcune linee guida da considerare quando si usano le sottoquery:

  • Una sottoquery deve essere racchiusa tra parentesi.
  • Una sottoquery deve essere posizionata a destra delloperatore di confronto.
  • Le sottoquery non possono manipolare i propri risultati internamente, quindi la clausola ORDER BY non può essere aggiunta in una sottoquery. È possibile utilizzare una clausola ORDER BY nellistruzione SELECT principale (query esterna) che sarà lultima clausola.
  • Utilizza operatori a riga singola con sottoquery a riga singola.
  • Se una sottoquery (query interna) restituisce un valore nullo alla query esterna, la query esterna non restituirà alcuna riga quando si utilizzano determinati operatori di confronto in una clausola WHERE.

Tipo di sottoquery

  • Sottoquery a riga singola: restituisce zero o una riga.
  • Sottoquery a più righe: restituisce una o più righe.
  • Sottoquery di più colonne: restituisce una o più colonne.
  • Sottoquery correlate: fare riferimento a una o più colonne nellistruzione SQL esterna. La sottoquery è nota come sottoquery correlata perché la sottoquery è correlata allistruzione SQL esterna.
  • Sottoquery nidificate: le sottoquery vengono inserite in unaltra sottoquery.

Nella prossima sessione, abbiamo discusso a fondo gli argomenti di cui sopra. Oltre al tipo di sottoquery sopra, è possibile utilizzare una sottoquery allinterno delle istruzioni INSERT, UPDATE e DELETE. Ecco una breve discussione:

Sottoquery con listruzione INSERT

Listruzione INSERT può essere utilizzata con le sottoquery.Ecco la sintassi e un esempio di sottoquery che utilizzano listruzione INSERT.

Sintassi:

INSERT INTO table_name ) ]SELECT FROM table1 ;

Se vogliamo inserire quegli ordini da ” tabella “orders” che ha il valore advance_amount 2000 o 5000 nella tabella “neworder”, è possibile utilizzare il seguente codice SQL:

Tabella di esempio: orders

Codice SQL:

Risultato:

Per visualizzare ulteriori dettagli di sottoquery utilizzando listruzione INSERT fare clic qui.

Sottoquery con istruzione UPDATE

In unistruzione UPDATE, è possibile impostare un nuovo valore di colonna uguale al risultato restituito da una singola sottoquery di riga. Di seguito sono riportati la sintassi e un esempio di sottoquery che utilizzano listruzione UPDATE.

Sintassi:

UPDATE table SET column_name = new_value(SELECT COLUMN_NAMEFROM TABLE_NAME) 

Se vogliamo aggiornare tale ord_date in ” tabella neworder “con” 15-JAN-10 “che ha la differenza di ord_amount e advance_amount è inferiore al minimo ord_amount della tabella” orders “, è possibile utilizzare il seguente SQL:

Tabella di esempio: neworder

Codice SQL:

Risultato:

Per visualizzare ulteriori dettagli sulle sottoquery utilizzando listruzione UPDATE, fare clic qui.

Sottoquery con listruzione DELETE

Listruzione DELETE può essere utilizzata con le sottoquery. Ecco la sintassi e un esempio di sottoquery che utilizzano listruzione DELETE.

Sintassi:

DELETE FROM TABLE_NAME(SELECT COLUMN_NAME FROM TABLE_NAME) 

Se vogliamo eliminare quegli ordini dalla tabella “neworder” che advance_amount sono inferiori al massimo advance_amount di ” orders “, è possibile utilizzare il seguente codice SQL:

Tabella di esempio: neworder

Codice SQL:

Risultato:

Per visualizzare ulteriori dettagli sulle sottoquery utilizzando listruzione DELETE, fare clic qui.

E poi?

  • Sottoquery SQL – Presentazione a diapositiva
  • Sottoquery a riga singola
  • Sottoquery a più righe e colonne
  • Sottoquery correlate che utilizzano alias
  • Sottoquery nidificate

Nota: gli output della suddetta istruzione SQL mostrata qui vengono presi utilizzando Oracle Database 10g Express Edition.

Esercizi SQL di pratica

  • Esercizi di SQL, pratica, soluzione
  • Recupero di dati da tabelle SQL
  • Operatori booleani e relazionali di SQL
  • SQL Wildcard e operatori speciali
  • SQL Aggregate Funzioni
  • Formattazione SQL delloutput della query
  • Quering SQL su più tabelle
  • FILTRAGGIO e ORDINAMENTO su database HR
  • JOINS SQL
    • SQL JOINS
    • SQL JOINS sul database delle risorse umane
  • SQL SUBQUERIES
    • SQL SUBQUERIES
    • SOTTOMANDAZIONI SQL su database risorse umane
  • Unione SQL
  • Vista SQL
  • Gestione account utente SQL
  • Database film
    • Query BASE sul database dei film
    • SOTTOSCRIZIONI sul database dei film
    • PARTECIPA al database dei film
  • Database di calcio
    • Introduzione
    • Query BASE sul database di calcio
    • SOTTOSCRIZIONI sul database di calcio
    • PARTECIPA a query su Database di calcio
  • Database ospedaliero
    • Introduzione
    • BASIC, SUBQUERIES e JOINS
  • Database dei dipendenti
    • Query di BASE sul database dei dipendenti
    • SOTTOSCRIZIONI sul database dei dipendenti
  • Altro in arrivo!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *