W języku SQL podzapytanie można po prostu zdefiniować jako zapytanie w ramach innego zapytania. Innymi słowy, możemy powiedzieć, że podzapytanie to zapytanie osadzone w klauzuli WHERE innego zapytania SQL. Ważne zasady dotyczące podzapytań:
aktorka filmowa Kajal
- Podzapytanie można umieścić w kilku klauzulach SQL: GDZIE klauzula HAVING, klauzula FROM. Podzapytań można używać z instrukcjami SELECT, UPDATE, INSERT, DELETE wraz z operatorem wyrażenia. Może to być operator równości lub operator porównania, taki jak =,>, =, <= i operator Like.
- Podzapytanie to zapytanie zawarte w innym zapytaniu. Zapytanie zewnętrzne nazywa się as główne zapytanie a zapytanie wewnętrzne nazywa się as podzapytanie .
- Podzapytanie zazwyczaj jest wykonywane jako pierwsze, jeśli podzapytanie nie zawiera żadnego współzależność z główne zapytanie , gdy istnieje korelacja, decyzję podejmuje parser w locie na którym zapytaniu wykonać precedens i odpowiednio wykorzystuje wynik podzapytania.
- Podzapytanie musi być ujęte w nawiasy.
- Podzapytania znajdują się po prawej stronie operatora porównania.
- ZAMÓW PRZEZ Komenda Nie mogę być użyte w podzapytaniu. GRUPUJ WEDŁUG polecenie może zostać użyte do wykonania tej samej funkcji co polecenie ORDER BY.
- Używaj operatorów jednowierszowych z podzapytaniami jednowierszowymi. Używaj operatorów wielowierszowych z podzapytaniami z wieloma wierszami.
Składnia: Nie ma żadnej ogólnej składni podzapytań. Jednakże podzapytania są najczęściej używane z instrukcją SELECT, jak pokazano poniżej:
SELECT column_name FROM table_name WHERE column_name expression operator ( SELECT COLUMN_NAME from TABLE_NAME WHERE ... );>
Przykładowa tabela :
BAZA DANYCH
| NAZWA | ROLL_NO | LOKALIZACJA | NUMER TELEFONU |
|---|---|---|---|
| Baran | 101 | Chennai | 9988775566 |
| Raj | 102 | Coimbatore | 8877665544 |
| Sasi | 103 | Maduraj | 7766553344 |
| Leczenie | 104 | Salem | 8989898989 |
| Sumati | 105 | Kanchipuram | 8989856868 |
STUDENT
| NAZWA | ROLL_NO | SEKCJA |
|---|---|---|
| Leczenie | 104 | A |
| Sumati | 105 | B |
| Raj | 102 | A |
Przykładowe zapytania
:
- Aby wyświetlić NAZWISKO, LOKALIZACJĘ, NUMER_TELEFonu uczniów z tabeli DATABASE, której sekcja to A
Select NAME, LOCATION, PHONE_NUMBER from DATABASE WHERE ROLL_NO IN (SELECT ROLL_NO from STUDENT where SECTION=’A’);>
- Objaśnienie: Pierwsze podzapytanie wykonuje SELECT ROLL_NO od STUDENTA, gdzie SECTION='A' zwraca ROLL_NO z tabeli STUDENT, której SECTION to 'A'. Następnie wykonuje je zewnętrzne zapytanie i zwraca NAZWĘ, LOKALIZACJĘ, NUMER_TELEFONA z tabeli DATABASE ucznia, którego ROLL_NO jest zwracane z wewnętrznego podzapytania. Wyjście:
| NAZWA | ROLL_NO | LOKALIZACJA | NUMER TELEFONU |
| Leczenie | 104 | Salem | 8989898989 |
| Raj | 102 | Coimbatore | 8877665544 |
- Wstaw przykład zapytania:
Tabela 1: Student1
| NAZWA | ROLL_NO | LOKALIZACJA | NUMER TELEFONU | |
|---|---|---|---|---|
| Baran | 101 | Chennai | 9988773344 | |
| Raju | 102 | współistnieć | 9090909090 | |
| Leczenie | 103 | salem | 8989898989 |
Tabela 2: Student2
| NAZWA | ROLL_NO | LOKALIZACJA | NUMER TELEFONU | |
|---|---|---|---|---|
| Raj | 111 | Chennai | 8787878787 | |
| Dopóki | 112 | Bombaj | 6565656565 | |
| Sri | 113 | współistnieć | 7878787878 |
- Aby wstawić Studenta2 do tabeli Studenta1:
INSERT INTO Student1 SELECT * FROM Student2;>
- Wyjście:
| NAZWA | ROLL_NO | LOKALIZACJA | NUMER TELEFONU | |
|---|---|---|---|---|
| Baran | 101 | Chennai | 9988773344 | |
| Raju | 102 | współistnieć | 9090909090 | |
| Leczenie | 103 | salem | 8989898989 | |
| Raj | 111 | Chennai | 8787878787 | |
| Dopóki | 112 | Bombaj | 6565656565 | |
| Sri | 113 | współistnieć | 7878787878 |
- Aby usunąć uczniów z tabeli Student2, których rollno jest takie samo jak w tabeli Student1 i których lokalizacja to Chennai
DELETE FROM Student2 WHERE ROLL_NO IN ( SELECT ROLL_NO FROM Student1 WHERE LOCATION = ’chennai’);>
- Wyjście:
1 row delete successfully.>
- Wyświetl tabelę Student2:
| NAZWA | ROLL_NO | LOKALIZACJA | NUMER TELEFONU | |
|---|---|---|---|---|
| Dopóki | 112 | Bombaj | 6565656565 | |
| Sri | 113 | współistnieć | 7878787878 |
- Aby zaktualizować nazwę uczniów do maniaków w tabeli Student2, których lokalizacja jest taka sama jak Raju,Ravi w tabeli Student1
UPDATE Student2 SET NAME=’geeks’ WHERE LOCATION IN ( SELECT LOCATION FROM Student1 WHERE NAME IN (‘Raju’,’Ravi’));>
- Wyjście:
1 row updated successfully.>
- Wyświetl tabelę Student2:
| NAZWA | ROLL_NO | LOKALIZACJA | NUMER TELEFONU | |
|---|---|---|---|---|
| Dopóki | 112 | Bombaj | 6565656565 | |
| maniacy | 113 | współistnieć | 7878787878 |