Subquery's in Oracle
(1) Een subquery of geneste query is een query binnen een andere SQL-query en ingebed in de WHERE-clausule. Een subquery is een query binnen een query
(2) Een subquery wordt gebruikt om gegevens te retourneren die in de hoofdquery worden gebruikt als voorwaarde om de op te halen gegevens verder te beperken.
(3) Subquery's beantwoorden de query's die uit meerdere delen bestaan. De bovenliggende zoekopdracht beantwoordt een deel en de subquery beantwoordt een ander deel
(4)Subquery's kunnen worden gebruikt met de SELECT-, INSERT-, UPDATE- en DELETE-instructies, samen met de operators zoals =, <,>,>=, <=, IN, BETWEEN enz.
(5)Het gebruik van subquery's in een FROM-clausule staat bekend als een inline-weergave .
(6) Het gebruik van subquery's in de WHERE-component heet een geneste subquery . Er zijn maximaal 255 geneste zoekopdrachten toegestaan.
Enkele richtlijnen voor Oracle-subquery's
(1) We moeten subquery's altijd tussen haakjes plaatsen
(2) We moeten subquery's aan de rechterkant van de vergelijkingsoperator plaatsen
(3) Gebruik een enkele rij-operator met enkele rij-subquery's en meerdere rij-operatoren met meerdere rij-subquery's
Algemene syntaxis
SELECT col1, col2 FROM table1 WHERE col1 OPERATOR (SELECT col1 FROM table2 [WHERE])
Subquery met één rij
Het retourneert slechts één rij met resultaten en gebruikt een enkele rij-operator (meest voorkomende is de equal-operator (=)). De andere operators zijn > ,<,>= ,=<
Subquery's met één rij kunnen gegevens uit dezelfde tabel of uit een andere tabel selecteren
SELECT ENAME FROM EMP WHERE SAL = (SELECT MIN(SAL) FROM EMP);SELECT ENAME FROM EMP WHERE DEPTNO = (SELECT DEPTNO FROM DEPT WHERE DNAME = 'RESEARCH');
Subquery met meerdere rijen
Het retourneert verschillende rijen met resultaten van de subquery, gebruikt de IN-operator. Als er bij de vorige zoekopdracht meer dan één onderzoeksafdeling was, zou de zoekopdracht zijn mislukt. Voorbeeld van het retourneren van meer dan één rij in de subquery
De andere operator die wordt gebruikt, is alle
SELECT ENAME, DEPTNO FROM EMP WHERE DEPTNO IN (SELECT DEPTNO FROM DEPT WHERE DNAME LIKE 'R%');
Gecorreleerde subquery
Een gecorreleerde subquery is een subquery die is gebaseerd op kolommen van de bovenliggende query. Een gecorreleerde subquery wordt geëvalueerd voor elke rij die door de bovenliggende query wordt verwerkt. Het bovenliggende statement kan een SELECT, UPDATE of DELETE zijn.
SELECT ENAME,SAL FROM EMP E1 WHERE SAL = (SELECT MAX(SAL) FROM EMP E2 WHERE E1.DEPTNO = E2.DEPTNO);
Gebaseerd op dezelfde gegevens van emp en dept, hier is het resultaat
Scalaire subquery's
Het retourneert precies één waarde uit één rij, die het vaakst wordt gebruikt in de VALUES-clausule van een INSERT-instructie, in en ORDER BY of WHERE-clausule en in een SELECT-clausule:
SELECT ENAME, DEPTNO, (SELECT MAX(SAL) FROM EMP E2 WHERE E2.DEPTNO = E1.DEPTNO) HIGH_SAL FROM EMP E1 WHERE ENAME LIKE 'B%';
De subquery wordt één keer uitgevoerd voor elke uitvoering van de hoofdquery. Een subquery met één rij kan alleen worden gebruikt met operators met één rij
Subquery's met meerdere kolommen
De query kan meer dan één kolom hebben in de SELECT-component van een subquery of in UPDATE-instructies
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');
Subquery's in andere DML-statements
Subquery's kunnen worden gebruikt in UPDATE-, DELETE- en INSERT-statements
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 );
Verwante artikelen
hoe sql-query's te schrijven:wat zijn Oracle-joins met voorbeelden (Sql-joins), verschillende soorten joins, inner join, outer join, left outer join, right outer join, cross join met voorbeelden
Oracle joins :Wat zijn Oracle Joins met voorbeelden (Sql-joins), Verschillende soorten joins, Inner Join,Outer join, left outer join, right outer join, cross join met voorbeelden
Datumfuncties in oracle :Bekijk dit bericht voor oracle datumfuncties, Oracle-datumverschil in jaren, Oracle-datumverschil in dagen, Oracle-datumverschil in maanden.
JSON in Oracle:bekijk dit bericht over het gebruik van JSON in Oracle, het maken van een tabel met JSON-gegevens, hoe om de JSON-gegevens uit te pakken, in te voegen in oracle
Oracle Sql-zelfstudie:Lijst van alle SQL-zelfstudielessen die kunnen worden gebruikt om SQL onder de knie te krijgen en te gebruiken in Oracle, gegevensbeheer en manipulatie
https://livesql. oracle.com/apex/livesql/file/tutorial_GMLYIBY74FPBS888XO8F1R95I.html