SQL Subqueries

Ultima actualizare pe 26 februarie 2020 08:07:42 (UTC / GMT +8 ore)

Ce este subinterogarea în SQL?

O subinterogare este o interogare SQL imbricată într-o interogare mai mare.

  • O subinterogare poate apărea în:
    • – O clauză SELECT
    • – O clauză FROM
    • – O clauză WHERE
  • Subinterogarea poate fi imbricată într-o instrucțiune SELECT, INSERT, UPDATE sau DELETE sau în alta subinterogare.
  • O subinterogare este de obicei adăugată în clauza WHERE a unei alte instrucțiuni SQL SELECT.
  • Puteți utiliza operatorii de comparație, cum ar fi >, < sau =. Operatorul de comparație poate fi, de asemenea, un operator cu mai multe rânduri, cum ar fi IN, ANY sau ALL.
  • O subinterogare se mai numește interogare interioară sau selecție interioară, în timp ce instrucțiunea care conține o interogare este numită și interogare externă sau selectare externă.
  • Interogarea interioară se execută mai întâi înainte de interogarea părinte, astfel încât rezultatele unei interogări interioare să poată fi transmise interogării externe.

poate utiliza o subinterogare într-o instrucțiune SELECT, INSERT, DELETE sau UPDATE pentru a efectua următoarele sarcini:

  • Comparați o expresie cu rezultatul interogării.
  • Determinați dacă o expresie este inclusă în rezultatele interogării.
  • Verificați dacă interogarea selectează vreun rând.

Sintaxă:

  • Subinterogarea (interogare interioară) se execută o dată înainte de executarea interogării principale (interogare externă).
  • Interogarea principală (interogarea externă) utilizează rezultatul subinterogării.

Exemplu subconsultări SQL:

În această secțiune, veți afla cerințele utilizării subconsultărilor. Avem următoarele două tabele „student” și „semne” cu câmpul comun „StudentID”.



notele studenților

Acum vrem să scriem o interogare pentru a identifica toți elevii care obțin note mai bune decât cea a elevului care „StudentID este„ V002 ”, dar nu cunoaștem notele„ V002 ”.
– Pentru a rezolva problema, avem nevoie de două interogări. O interogare returnează notele (stocate în câmpul Total_marks) din „V002” și o a doua interogare identifică elevii care obțin note mai bune decât rezultatul primei interogări.

Prima interogare:

Rezultatul interogării:

Rezultatul interogării este 80.
-Utilizând rezultatul acestei interogări, aici am scris o altă interogare pentru a identifica studenții care obțin note mai bune decât 80. Iată interogarea:

A doua interogare:

Rezultatul interogării:

Peste două interogări studenți identificați care obțin t el este mai bun decât studentul care are StudentID este „V002” (Abhay).

Puteți combina cele două interogări de mai sus plasând o interogare în cealaltă. Subinterogarea (numită și „interogare interioară”) este interogarea din paranteze. Consultați următorul cod și rezultatul interogării:

Cod SQL:

Rezultatul interogării:

Prezentare picturală a interogării SQL:

Subquery: General Rules

O instrucțiune SELECT de subinterogare este aproape similar la instrucțiunea SELECT și este utilizată pentru a începe o interogare obișnuită sau externă. Iată sintaxa unei subinterogări:

Sintaxă:

Subconsultări: Linii directoare

Există câteva linii directoare de luat în considerare atunci când se utilizează subinterogări:

  • O subinterogare trebuie inclusă între paranteze.
  • O subinterogare trebuie plasată în partea dreaptă a operatorului de comparație.
  • Subcercetările nu își pot manipula rezultatele pe plan intern, prin urmare clauza ORDER BY nu poate fi adăugată într-o subinterogare. Puteți utiliza o clauză ORDER BY în instrucțiunea SELECT principală (interogare externă) care va fi ultima clauză.
  • Utilizați operatori cu un singur rând cu subinterogări pe un singur rând.
  • Dacă o interogare (interogare interioară) returnează o valoare nulă interogării externe, interogarea externă nu va returna niciun rând când se utilizează anumiți operatori de comparație într-o clauză WHERE.

Tipul de subinterogări

  • Subinterogare cu un singur rând: returnează zero sau un rând.
  • Subinterogare pe mai multe rânduri: returnează unul sau mai multe rânduri.
  • Subconsultări de coloane multiple: returnează una sau mai multe coloane.
  • Subcercări corelate: faceți referire la una sau mai multe coloane din instrucțiunea SQL exterioară. Subinterogarea este cunoscută ca subinterogare corelată, deoarece subinterogarea este legată de instrucțiunea SQL exterioară.
  • Subinterogări imbricate: subinterogările sunt plasate într-o altă subinterogare.

În următoarea sesiune, am discutat temeinic subiectele de mai sus. În afară de tipul de subinterogări de mai sus, puteți utiliza o subinterogare în instrucțiunile INSERT, UPDATE și DELETE. Iată o scurtă discuție:

Subconsultările cu instrucțiune INSERT

Instrucțiunea INSERT poate fi utilizată cu subcercări.Iată sintaxa și un exemplu de subinterogări folosind instrucțiunea INSERT.

Sintaxă:

INSERT INTO table_name ) ]SELECT FROM table1 ;

Dacă vrem să introducem acele ordine din ” tabele de comenzi care au avansul_amount 2000 sau 5000 în tabelul „neworder” se poate utiliza următorul SQL:

Tabelul eșantion: comenzi

Cod SQL:

Ieșire:

Pentru a vedea mai multe detalii de subinterogări folosind instrucțiunea INSERT faceți clic aici.

Subquies cu instrucțiune UPDATE

Într-o instrucțiune UPDATE, puteți seta o nouă valoare a coloanei egală cu rezultatul returnat de o singură interogare de rând. Iată sintaxa și un exemplu de subinterogări care utilizează instrucțiunea UPDATE.

Sintaxă:

UPDATE table SET column_name = new_value(SELECT COLUMN_NAMEFROM TABLE_NAME) 

Dacă vrem să actualizăm data ord_data în ” neworder „tabel cu” 15-JAN-10 „care au diferența de ord_amount și avans_amount este mai mic decât suma minimă ord_amount a tabelului” comenzi „se poate utiliza următorul SQL:

Tabel eșantion: neworder

Cod SQL:

Ieșire:

Pentru a vedea mai multe detalii despre subinterogări folosind instrucțiunea UPDATE, faceți clic aici.

Subconsultările cu instrucțiunea DELETE

Instrucțiunea DELETE poate fi utilizată cu subcercări. Iată sintaxa și un exemplu de subinterogări folosind instrucțiunea DELETE.

Sintaxă:

DELETE FROM TABLE_NAME(SELECT COLUMN_NAME FROM TABLE_NAME) 

Dacă dorim să ștergem acele comenzi din tabelul „neworder”, care avans_amount sunt mai mici decât valoarea maximă avans_amount de „ tabele comenzi „, se poate utiliza următorul SQL:

Tabel exemplu: neworder

Cod SQL:

Ieșire:

Pentru a vedea mai multe detalii despre subinterogări folosind instrucțiunea DELETE, faceți clic aici.

Ce urmează?

  • Subcercetări SQL – Prezentare diapozitive
  • Subîncercări cu un singur rând
  • Subîncercări cu rânduri și coloane multiple
  • Subcercetări corelate folosind aliasuri
  • Subcercetări imbricate

Notă: ieșirile declarației SQL menționate aici sunt luate utilizând Oracle Database 10g Express Edition.

Practicați exerciții SQL

  • Exerciții SQL, practică, soluție
  • SQL Preluare date din tabele
  • Operatori SQL booleni și relaționali
  • SQL Wildcard și operatori speciali
  • SQL Aggregate Funcții
  • Ieșire interogare formatare SQL
  • Interogare SQL pe mai multe tabele
  • FILTRARE și SORTARE pe baza de date HR
  • SQL JOINS
    • SQL JOINS
    • SQL JOINS pe baza de date de resurse umane
  • SQL SUBQUERIES
    • SQL SUBQUERIES
    • SOLICITĂRI SQL despre baza de date de resurse umane
  • Uniune SQL
  • Vizualizare SQL
  • Administrare cont utilizator SQL
  • Baza de date film
    • Interogări de bază despre baza de date cu filme
    • CERERE pe baza de date cu filme
    • ÎNSCRIEȚI pe baza de date cu filme
  • Baza de date Soccer
    • Introducere
    • Interogări de bază privind baza de date de fotbal
    • CERERE pe baza de date de fotbal
    • ÎNREGISTRARE la interogări pe Baza de date pentru fotbal
  • Baza de date pentru spitale
    • Introducere
    • BAZĂ, CERERE ȘI ÎNSCRIERI
  • Baza de date a angajaților
    • Interogări de bază cu privire la baza de date a angajaților
    • CERERE pe baza de date a angajaților
  • Mai multe!

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *