logo

SQL | Sottoquery

In SQL una sottoquery può essere semplicemente definita come una query all'interno di un'altra query. In altre parole possiamo dire che una Subquery è una query incorporata nella clausola WHERE di un'altra query SQL. Regole importanti per le subquery:

  • È possibile inserire la subquery in una serie di clausole SQL: DOVE clausola, clausola HAVING, clausola FROM. Le sottoquery possono essere utilizzate con le istruzioni SELECT, UPDATE, INSERT, DELETE insieme all'operatore di espressione. Potrebbe essere un operatore di uguaglianza o un operatore di confronto come =,>, =, <= e l'operatore Like.
  • Una sottoquery è una query all'interno di un'altra query. La query esterna è chiamata as interrogazione principale e la query interna è chiamata as sottoquery .
  • La sottoquery generalmente viene eseguita per prima quando la sottoquery non ne ha correlazione con il interrogazione principale , quando c'è una correlazione il parser prende la decisione al volo su quale query eseguire precedenza e utilizza di conseguenza l'output della sottoquery.
  • La sottoquery deve essere racchiusa tra parentesi.
  • Le sottoquery si trovano sul lato destro dell'operatore di confronto.
  • ORDINATO DA comando non può essere utilizzato in una subquery. RAGGRUPPA PER il comando può essere utilizzato per eseguire la stessa funzione del comando ORDER BY.
  • Utilizzare operatori a riga singola con sottoquery a riga singola. Utilizzare operatori su più righe con sottoquery su più righe.

Sintassi: Non esiste una sintassi generale per le subquery. Tuttavia, le sottoquery vengono utilizzate più frequentemente con l'istruzione SELECT come mostrato di seguito:

SELECT column_name FROM table_name WHERE column_name expression operator ( SELECT COLUMN_NAME from TABLE_NAME WHERE ... );>

Tabella campione :



BANCA DATI

Java tabella hash
NOME ROLL_NO POSIZIONE NUMERO DI TELEFONO
Ram 101 Chennai 9988775566
Raj 102 Coimbatore 8877665544
Sasi 103 Madurai 7766553344
Trattamento 104 Salem 8989898989
Sumathi 105 Kanchipuram 8989856868

ALUNNO

NOME ROLL_NO SEZIONE
Trattamento 104 UN
Sumathi 105 B
Raj 102 UN

Query di esempio

convertire carattere in stringa

:

  • Per visualizzare NOME, LOCALITÀ, NUMERO_TELEFONO degli studenti dalla tabella DATABASE la cui sezione è A
Select NAME, LOCATION, PHONE_NUMBER from DATABASE WHERE ROLL_NO IN (SELECT ROLL_NO from STUDENT where SECTION=’A’);>
    Spiegazione: La prima sottoquery esegue SELECT ROLL_NO da STUDENT dove SECTION='A' restituisce ROLL_NO dalla tabella STUDENT la cui SEZIONE è 'A'. Quindi la query esterna la esegue e restituisce NOME, POSIZIONE, NUMERO_TELEFONO dalla tabella DATABASE dello studente il cui ROLL_NO viene restituito dalla sottoquery interna. Produzione:
NOME ROLL_NO POSIZIONE NUMERO DI TELEFONO
Trattamento 104 Salem 8989898989
Raj 102 Coimbatore 8877665544
  • Inserisci esempio di query:

Tabella1: Studente1

NOME ROLL_NO POSIZIONE NUMERO DI TELEFONO
Ram 101 Chennai 9988773344
Raju 102 coimbatore 9090909090
Trattamento 103 salem 8989898989

Tabella2: Studente2

NOME ROLL_NO POSIZIONE NUMERO DI TELEFONO
Raj 111 Chennai 8787878787
Fino a 112 Mumbai 6565656565
Sri 113 coimbatore 7878787878
  • Per inserire Student2 nella tabella Student1:
INSERT INTO Student1 SELECT * FROM Student2;>
  • Produzione:
NOME ROLL_NO POSIZIONE NUMERO DI TELEFONO
Ram 101 Chennai 9988773344
Raju 102 coimbatore 9090909090
Trattamento 103 salem 8989898989
Raj 111 Chennai 8787878787
Fino a 112 Mumbai 6565656565
Sri 113 coimbatore 7878787878
  • Per eliminare gli studenti dalla tabella Studente2 il cui numero di registro è uguale a quello nella tabella Studente1 e con ubicazione come Chennai
DELETE FROM Student2 WHERE ROLL_NO IN ( SELECT ROLL_NO FROM Student1 WHERE LOCATION = ’chennai’);>
  • Produzione:
1 row delete successfully.>
    Visualizza la tabella Student2:
NOME ROLL_NO POSIZIONE NUMERO DI TELEFONO
Fino a 112 Mumbai 6565656565
Sri 113 coimbatore 7878787878
  • Per aggiornare il nome degli studenti in geek nella tabella Student2 la cui posizione è la stessa di Raju, Ravi nella tabella Student1
UPDATE Student2 SET NAME=’geeks’ WHERE LOCATION IN ( SELECT LOCATION FROM Student1 WHERE NAME IN (‘Raju’,’Ravi’));>
  • Produzione:
1 row updated successfully.>
    Visualizza la tabella Student2:
NOME ROLL_NO POSIZIONE NUMERO DI TELEFONO
Fino a 112 Mumbai 6565656565
geek 113 coimbatore 7878787878