sql >> Database >  >> RDS >> Oracle

Wat is subquery's in orakel

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


  1. Oracle JDeveloper 12c gebruiken met Oracle Database, deel 2

  2. Oproep naar ongedefinieerde functie oci_connect, php_oci8_12c.dll, windows 8.1, php5.6.6

  3. Rails:Fout bij het installeren van pg gem

  4. De naam van een CHECK-beperking in SQL Server wijzigen met T-SQL