SubQueries i Oracle
(1) En underfråga eller kapslad fråga är en fråga i en annan SQL-fråga och inbäddad i WHERE-satsen. En underfråga är en fråga i en fråga
(2) En underfråga används för att returnera data som kommer att användas i huvudfrågan som ett villkor för att ytterligare begränsa data som ska hämtas.
(3) Underfrågor svarar på frågor som har flera delar. Den överordnade frågan besvarar en del och underfrågan svarar på den andra delen
(4)Subqueries kan användas med SELECT-, INSERT-, UPDATE- och DELETE-satserna tillsammans med operatorerna som =, <,>,>=, <=, IN, BETWEEN etc.
(5) Att använda underfrågor i en FROM-klausul kallas en inlinevy .
(6) Att använda underfrågor i WHERE-satsen kallas en kapslad underfråga . Upp till 255 kapslade frågor är tillåtna.
Några riktlinjer för Oracle SubQueries
(1) Vi måste alltid sätta underfrågor inom parentes
(2) Vi måste placera underfrågor till höger om jämförelseoperatorn
(3) Använd enkelradsoperator med enradsunderfrågor och multipla radoperator med flera radunderfrågor
Allmän syntax
SELECT col1, col2 FROM table1 WHERE col1 OPERATOR (SELECT col1 FROM table2 [WHERE])
En rad underfråga
Den returnerar endast en rad med resultat och använder en enda radoperator (vanligast är den lika operatorn (=)). De andra operatorerna är > ,<,>= ,=<
En rad underfrågor kan välja data från samma tabell eller från en annan tabell
SELECT ENAME FROM EMP WHERE SAL = (SELECT MIN(SAL) FROM EMP);SELECT ENAME FROM EMP WHERE DEPTNO = (SELECT DEPTNO FROM DEPT WHERE DNAME = 'RESEARCH');
Underfråga med flera rader
Den returnerar flera rader med resultat från underfrågan, använder IN-operatorn. I den föregående frågan, om det fanns mer än en forskningsavdelning, skulle frågan ha misslyckats. Exempel på att returnera mer än en rad i underfrågan
Den andra operatorn som används är alla
SELECT ENAME, DEPTNO FROM EMP WHERE DEPTNO IN (SELECT DEPTNO FROM DEPT WHERE DNAME LIKE 'R%');
Korrelerad underfråga
En korrelerad underfråga är en underfråga som förlitar sig på kolumner från den överordnade frågan. En korrelerad underfråga utvärderas för varje rad som bearbetas av den överordnade frågan. Den överordnade satsen kan vara en SELECT, UPDATE eller DELETE.
SELECT ENAME,SAL FROM EMP E1 WHERE SAL = (SELECT MAX(SAL) FROM EMP E2 WHERE E1.DEPTNO = E2.DEPTNO);
Baserat på samma data för emp och dept, här är resultatet
Skalära delfrågor
Den returnerar exakt ett värde från en rad, som oftast används i VALUES-satsen i en INSERT-sats, i och ORDER BY eller WHERE-satsen och i en SELECT-sats:
SELECT ENAME, DEPTNO, (SELECT MAX(SAL) FROM EMP E2 WHERE E2.DEPTNO = E1.DEPTNO) HIGH_SAL FROM EMP E1 WHERE ENAME LIKE 'B%';
Underfrågan körs en gång för varje körning av huvudfrågan. En enkelrads underfråga kan endast användas med enradsoperatorer
Undersökningar med flera kolumner
Frågan kan ha mer än en kolumn i SELECT-satsen i en underfråga eller i UPDATE-satser
SELECT CITY,CITY_CODE,CITY_DESCRIPTION FROM LOCATIONS WHERE (LOCATION_ID, COUNTRY_ID) IN (SELECT LOCATION_ID, COUNTRY_ID FROM LOCATIONS WHERE STATE_PROVINCE = 'NEWYORK');
Undersökningar i andra DML-utlåtanden
Underfrågor kan användas i UPDATE-, DELETE- och INSERT-satser
Update Statement UPDATE EMP SET SALARY = (SELECT SALARY FROM EMP WHERE EMPLOYEE_ID = 112408) WHERE EMPLOYEE_ID = 193711; Insert Statement INSERT INTO DEPT (DEPT_ID, DEPT_NAME) VALUES ((SELECT MAX(DEPT_ID) FROM DEPT), 'NEW DEPT'); Delete Statement DELETE FROM CUSTOMERS WHERE AGE IN (SELECT AGE FROM CUST_BACK WHERE AGE > 40 );
Relaterade artiklar
hur man skriver sql-frågor :Vad är Oracle Joins med exempel (Sql Joins), Olika typer av Join, Inner Join, Outer Join, Left Outer Joins, Right Outer Joins, Cross Joins med exempel
Oracle Joins :Vad är Oracle Joins med exempel (Sql joins), Olika typer av joins , Inner Join, Outer Join, Left Outer Join, Right yttre Join, Cross Joins med exempel
Datumfunktioner i Oracle :Kolla in det här inlägget för Oracle datumfunktioner, Oracle-datumskillnad i år, Oracle-datumskillnad i dagar, Oracle-datumskillnad i månader.
JSON i Oracle:Kolla in det här inlägget om hur man använder JSON i Oracle,hur man skapar en tabell som innehåller JSON-data, hur för att extrahera, infoga JSON-data i Oracle
Oracle Sql-handledning:Lista över alla sql-handledningslektioner som kan användas för att bemästra SQL och använda i Oracle, datahantering och manipulation
https://livesql. oracle.com/apex/livesql/file/tutorial_GMLYIBY74FPBS888XO8F1R95I.html