logo

SQL | Subinterogare

În SQL, o subinterogare poate fi definită pur și simplu ca o interogare în cadrul unei alte interogări. Cu alte cuvinte, putem spune că o subinterogare este o interogare care este încorporată în clauza WHERE a unei alte interogări SQL. Reguli importante pentru subinterogări:

  • Puteți plasa subinterogarea într-un număr de clauze SQL: UNDE clauză, clauză HAVING, clauză FROM. Subinterogările pot fi utilizate cu instrucțiunile SELECT, UPDATE, INSERT, DELETE împreună cu operatorul expresiei. Ar putea fi operator de egalitate sau operator de comparație, cum ar fi =,>, =, <= și operator Like.
  • O subinterogare este o interogare în cadrul unei alte interogări. Interogarea exterioară este numită ca interogare principală iar interogarea interioară se numește ca subinterogare .
  • În general, subinterogarea se execută prima când subinterogarea nu are niciuna corelație cu interogare principală , atunci când există o corelație, analizatorul ia decizia pe fuga pe care interogare să se execute precedenta și utilizează rezultatul subinterogării în consecință.
  • Subinterogarea trebuie inclusă între paranteze.
  • Subinterogările sunt în partea dreaptă a operatorului de comparație.
  • COMANDA PENTRU comanda nu poti să fie utilizat într-o subinterogare. A SE GRUPA CU comanda poate fi folosită pentru a îndeplini aceeași funcție ca și comanda ORDER BY.
  • Utilizați operatori cu un singur rând cu subinterogări cu un singur rând. Utilizați operatori cu mai multe rânduri cu subinterogări cu mai multe rânduri.

Sintaxă: Nu există nicio sintaxă generală pentru subinterogări. Cu toate acestea, subinterogările sunt considerate a fi utilizate cel mai frecvent cu instrucțiunea SELECT, după cum se arată mai jos:

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

Tabel de probă :



BAZĂ DE DATE

NUME ROLA NUMĂRUL LOCAȚIE NUMĂR DE TELEFON
RAM 101 Chennai 9988775566
Raj 102 Coimbatore 8877665544
Sasi 103 Madurai 7766553344
Tratament 104 Salem 8989898989
Sumathi 105 Kanchipuram 8989856868

STUDENT

NUME ROLA NUMĂRUL SECȚIUNE
Tratament 104 A
Sumathi 105 B
Raj 102 A

Exemple de interogări

:

  • Pentru a afișa NAME, LOCATION, PHONE_NUMBER ale studenților din tabelul DATABASE a cărui secțiune este A
Select NAME, LOCATION, PHONE_NUMBER from DATABASE WHERE ROLL_NO IN (SELECT ROLL_NO from STUDENT where SECTION=’A’);>
    Explicație: Prima subinterogare execută SELECT ROLL_NO din STUDENT unde SECTION='A' returnează ROLL_NO din tabelul STUDENT a cărui SECȚIUNE este 'A'. Apoi interogarea externă o execută și returnează NAME, LOCATION, PHONE_NUMBER din tabelul DATABASE al studentului al cărui ROLL_NO este returnat de la subinterogare interioară. Ieșire:
NUME ROLA NUMĂRUL LOCAȚIE NUMĂR DE TELEFON
Tratament 104 Salem 8989898989
Raj 102 Coimbatore 8877665544
  • Exemplu de interogare de inserare:

Tabelul 1: Student1

NUME ROLA NUMĂRUL LOCAȚIE NUMĂR DE TELEFON
RAM 101 chennai 9988773344
Raju 102 coimbatore 9090909090
Tratament 103 salem 8989898989

Tabelul 2: Student2

hashtable java
NUME ROLA NUMĂRUL LOCAȚIE NUMĂR DE TELEFON
Raj 111 chennai 8787878787
Pana cand 112 mumbai 6565656565
Sri 113 coimbatore 7878787878
  • Pentru a insera Student2 în tabelul Student1:
INSERT INTO Student1 SELECT * FROM Student2;>
  • Ieșire:
NUME ROLA NUMĂRUL LOCAȚIE NUMĂR DE TELEFON
RAM 101 chennai 9988773344
Raju 102 coimbatore 9090909090
Tratament 103 salem 8989898989
Raj 111 chennai 8787878787
Pana cand 112 mumbai 6565656565
Sri 113 coimbatore 7878787878
  • Pentru a șterge studenții din tabelul Student2 al căror rol este același cu cel din tabelul Student1 și având o locație ca chennai
DELETE FROM Student2 WHERE ROLL_NO IN ( SELECT ROLL_NO FROM Student1 WHERE LOCATION = ’chennai’);>
  • Ieșire:
1 row delete successfully.>
    Afișează tabelul Student2:
NUME ROLA NUMĂRUL LOCAȚIE NUMĂR DE TELEFON
Pana cand 112 mumbai 6565656565
Sri 113 coimbatore 7878787878
  • Pentru a actualiza numele studenților la tocilari în tabelul Student2 a căror locație este aceeași cu Raju, Ravi în tabelul Student1
UPDATE Student2 SET NAME=’geeks’ WHERE LOCATION IN ( SELECT LOCATION FROM Student1 WHERE NAME IN (‘Raju’,’Ravi’));>
  • Ieșire:
1 row updated successfully.>
    Afișează tabelul Student2:
NUME ROLA NUMĂRUL LOCAȚIE NUMĂR DE TELEFON
Pana cand 112 mumbai 6565656565
tocilari 113 coimbatore 7878787878