In SQL kann eine Unterabfrage einfach als Abfrage innerhalb einer anderen Abfrage definiert werden. Mit anderen Worten können wir sagen, dass eine Unterabfrage eine Abfrage ist, die in die WHERE-Klausel einer anderen SQL-Abfrage eingebettet ist. Wichtige Regeln für Unterabfragen:
- Sie können die Unterabfrage in eine Reihe von SQL-Klauseln einfügen: WO Klausel, HAVING-Klausel, FROM-Klausel. Unterabfragen können mit SELECT-, UPDATE-, INSERT- und DELETE-Anweisungen zusammen mit Ausdrucksoperatoren verwendet werden. Es kann sich um einen Gleichheitsoperator oder einen Vergleichsoperator wie den Operator =,>, =, <= und Like handeln.
- Eine Unterabfrage ist eine Abfrage innerhalb einer anderen Abfrage. Die äußere Abfrage heißt als Hauptabfrage und die innere Abfrage heißt als Unterabfrage .
- Die Unterabfrage wird im Allgemeinen zuerst ausgeführt, wenn die Unterabfrage keine hat Mitbeziehung mit dem Hauptabfrage , wenn eine Korrelation besteht, trifft der Parser die Entscheidung im laufenden Betrieb welche Abfrage ausgeführt werden soll Vorrang und verwendet die Ausgabe der Unterabfrage entsprechend.
- Die Unterabfrage muss in Klammern eingeschlossen werden.
- Unterabfragen befinden sich auf der rechten Seite des Vergleichsoperators.
- SORTIEREN NACH Befehl kann nicht in einer Unterabfrage verwendet werden. GRUPPIERE NACH Der Befehl kann verwendet werden, um dieselbe Funktion wie der Befehl ORDER BY auszuführen.
- Verwenden Sie einzeilige Operatoren mit einzeiligen Unterabfragen. Verwenden Sie mehrzeilige Operatoren mit mehrzeiligen Unterabfragen.
Syntax: Es gibt keine allgemeine Syntax für Unterabfragen. Allerdings werden Unterabfragen am häufigsten mit der SELECT-Anweisung verwendet, wie unten gezeigt:
SELECT column_name FROM table_name WHERE column_name expression operator ( SELECT COLUMN_NAME from TABLE_NAME WHERE ... );>
Beispieltabelle :
Java-Utility-Datum
DATENBANK
| NAME | ROLL_NR | STANDORT | TELEFONNUMMER |
|---|---|---|---|
| RAM | 101 | Chennai | 9988775566 |
| Raj | 102 | Coimbatore | 8877665544 |
| Sasi | 103 | Madurai | 7766553344 |
| Behandlung | 104 | Salem | 8989898989 |
| Sumathi | 105 | Kanchipuram | 8989856868 |
STUDENT
| NAME | ROLL_NR | ABSCHNITT |
|---|---|---|
| Behandlung | 104 | A |
| Sumathi | 105 | B |
| Raj | 102 | A |
Beispielabfragen
So konvertieren Sie eine Ganzzahl in eine Zeichenfolge in Java
:
Zusatztasten
- Um NAME, STANDORT und TELEFONNUMMER der Schüler aus der DATABASE-Tabelle anzuzeigen, deren Abschnitt A ist
Select NAME, LOCATION, PHONE_NUMBER from DATABASE WHERE ROLL_NO IN (SELECT ROLL_NO from STUDENT where SECTION=’A’);>
- Erläuterung: Die erste Unterabfrage führt SELECT ROLL_NO von STUDENT aus, wobei SECTION='A' ROLL_NO aus der STUDENT-Tabelle zurückgibt, deren SECTION 'A' ist. Dann führt die äußere Abfrage sie aus und gibt NAME, LOCATION, PHONE_NUMBER aus der DATABASE-Tabelle des Studenten zurück, dessen ROLL_NO wird von der inneren Unterabfrage zurückgegeben. Ausgabe:
| NAME | ROLL_NR | STANDORT | TELEFONNUMMER |
| Behandlung | 104 | Salem | 8989898989 |
| Raj | 102 | Coimbatore | 8877665544 |
- Beispiel für eine Abfrage einfügen:
Tabelle 1: Student1
| NAME | ROLL_NR | STANDORT | TELEFONNUMMER | |
|---|---|---|---|---|
| RAM | 101 | Chennai | 9988773344 | |
| Raju | 102 | Coimbatore | 9090909090 | |
| Behandlung | 103 | Salem | 8989898989 |
Tabelle2: Student2
| NAME | ROLL_NR | STANDORT | TELEFONNUMMER | |
|---|---|---|---|---|
| Raj | 111 | Chennai | 8787878787 | |
| Bis | 112 | Mumbai | 6565656565 | |
| Sri | 113 | Coimbatore | 7878787878 |
- So fügen Sie Student2 in die Tabelle Student1 ein:
INSERT INTO Student1 SELECT * FROM Student2;>
- Ausgabe:
| NAME | ROLL_NR | STANDORT | TELEFONNUMMER | |
|---|---|---|---|---|
| RAM | 101 | Chennai | 9988773344 | |
| Raju | 102 | Coimbatore | 9090909090 | |
| Behandlung | 103 | Salem | 8989898989 | |
| Raj | 111 | Chennai | 8787878787 | |
| Bis | 112 | Mumbai | 6565656565 | |
| Sri | 113 | Coimbatore | 7878787878 |
- Um Schüler aus der Tabelle „Student2“ zu löschen, deren Rollennummer mit der in der Tabelle „Student1“ übereinstimmt und deren Standort Chennai ist
DELETE FROM Student2 WHERE ROLL_NO IN ( SELECT ROLL_NO FROM Student1 WHERE LOCATION = ’chennai’);>
- Ausgabe:
1 row delete successfully.>
- Student2-Tabelle anzeigen:
| NAME | ROLL_NR | STANDORT | TELEFONNUMMER | |
|---|---|---|---|---|
| Bis | 112 | Mumbai | 6565656565 | |
| Sri | 113 | Coimbatore | 7878787878 |
- Um den Namen der Schüler in „Geeks“ in der Tabelle „Student2“ zu aktualisieren, deren Standort mit Raju,Ravi in der Tabelle „Student1“ übereinstimmt
UPDATE Student2 SET NAME=’geeks’ WHERE LOCATION IN ( SELECT LOCATION FROM Student1 WHERE NAME IN (‘Raju’,’Ravi’));>
- Ausgabe:
1 row updated successfully.>
- Student2-Tabelle anzeigen:
| NAME | ROLL_NR | STANDORT | TELEFONNUMMER | |
|---|---|---|---|---|
| Bis | 112 | Mumbai | 6565656565 | |
| Geeks | 113 | Coimbatore | 7878787878 |