sql >> Database teknologi >  >> RDS >> Oracle

Hvad er underforespørgsler i oracle

Underforespørgsler i Oracle

(1) En underforespørgsel eller indlejret forespørgsel er en forespørgsel i en anden SQL-forespørgsel og indlejret i WHERE-sætningen. En underforespørgsel er en forespørgsel i en forespørgsel

(2) En underforespørgsel bruges til at returnere data, der vil blive brugt i hovedforespørgslen som en betingelse for yderligere at begrænse de data, der skal hentes.

(3) Underforespørgsler besvarer forespørgsler, der har flere dele. Den overordnede forespørgsel besvarer en del, og underforespørgslen besvarer den anden del

(4)Underforespørgsler kan bruges med SELECT-, INSERT-, UPDATE- og DELETE-sætningerne sammen med operatorerne som =, <,>,>=, <=, IN, BETWEEN osv.

(5)Brug af underforespørgsler i en FROM-klausul er kendt som en inline-visning .

(6) Brug af underforespørgsler i WHERE-sætningen kaldes en indlejret underforespørgsel . Op til 255 indlejrede forespørgsler er tilladt.

Nogle retningslinjer for Oracle SubQueries

(1) Vi skal altid sætte underforespørgsler i parentes

(2) Vi skal placere underforespørgsler på højre side af sammenligningsoperatoren

(3) Brug enkelt række operator med enkelt række underforespørgsler og multiple række operator med flere række underforespørgsler

Generel syntaks

SELECT col1, col2
FROM   table1
WHERE  col1  OPERATOR
(SELECT col1
FROM table2
[WHERE])

Enkelt række underforespørgsel

Det returnerer kun én række resultater og bruger en enkelt rækkeoperator (mest almindeligt er den lige operator (=)). De andre operatorer er > ,<,>=  ,=<

Enkeltrækkeunderforespørgsler kan vælge data fra den samme tabel eller fra en anden tabel

SELECT ENAME FROM EMP WHERE SAL = (SELECT MIN(SAL) FROM EMP);SELECT ENAME FROM EMP WHERE DEPTNO = (SELECT DEPTNO FROM DEPT WHERE DNAME = 'RESEARCH');

Underforespørgsel med flere rækker

Det returnerer flere rækker med resultater fra underforespørgslen, bruger IN-operatoren. I den forrige forespørgsel, hvis der var mere end én forskningsafdeling, ville forespørgslen have mislykkedes. Eksempel på returnering af mere end én række i underforespørgslen

Den anden operator, der bruges, er enhver og alle

SELECT ENAME, DEPTNO FROM EMP
WHERE DEPTNO IN (SELECT DEPTNO FROM DEPT WHERE DNAME LIKE 'R%');

Korreleret underforespørgsel

En korreleret underforespørgsel er en underforespørgsel, der er afhængig af kolonner fra den overordnede forespørgsel. En korreleret underforespørgsel evalueres for hver række, der behandles af den overordnede forespørgsel. Den overordnede sætning kan være en SELECT, UPDATE eller DELETE.

SELECT ENAME,SAL FROM EMP E1
WHERE SAL = (SELECT MAX(SAL)
FROM EMP E2 WHERE E1.DEPTNO = E2.DEPTNO);

Baseret på de samme data for emp og dept, er her resultatet

Skalære underforespørgsler

Det returnerer præcis én værdi fra én række, som oftest bruges i VALUES-udtrykket i en INSERT-sætning, i og ORDER BY eller WHERE-udtrykket og i et SELECT-udtryk:

SELECT ENAME,
DEPTNO, (SELECT MAX(SAL)
FROM EMP E2
WHERE E2.DEPTNO = E1.DEPTNO) HIGH_SAL
FROM EMP E1
WHERE ENAME LIKE 'B%';

Underforespørgslen udføres én gang for hver udførelse af masterforespørgslen. En enkelt-række-underforespørgsel kan kun bruges med enkeltrække-operatorer

  Underforespørgsler med flere kolonner

Forespørgslen kan have mere end én kolonne i SELECT-sætningen i en underforespørgsel eller i UPDATE-sætninger

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');

Underforespørgsler i andre DML-erklæringer

Underforespørgsler kan bruges i UPDATE-, DELETE- og INSERT-sætninger

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 );

Relaterede artikler
hvordan skriver man sql-forespørgsler :Hvad er Oracle Joins med eksempler (Sql-joins), Forskellige typer join-forbindelser, Inner Join,Outer Join,venstre ydre joinforbindelse,højre ydre joinforbindelse,krydsforbindelse med eksempler
Oracle Joins :Hvad er Oracle Joins med eksempler (Sql joins), Forskellige typer joins , Inner Join, Outer join,venstre ydre joinforbindelse, højre ydre joinforbindelse,krydsforbindelse med eksempler
Datofunktioner i oracle :Tjek dette indlæg for oracle datofunktioner, oracle-datoforskel i år,oracle-datoforskel i dage, oracle-datoforskel i måneder.
JSON i oracle:Tjek dette indlæg om, hvordan man bruger JSON i oracle,hvordan man opretter tabel, der indeholder JSON-data, hvordan for at udtrække, indsæt JSON-dataene i Oracle
Oracle Sql tutorial:Liste over alle sql tutorial lektioner, som kan bruges til at mestre sql og bruge i Oracle, data management og manipulation
https://livesql. oracle.com/apex/livesql/file/tutorial_GMLYIBY74FPBS888XO8F1R95I.html


  1. SQL DELETE for begyndere

  2. Forklar JOIN vs. LEFT JOIN og WHERE-tilstandsforslag mere detaljeret

  3. Hvad gør ::i PostgreSQL?

  4. Fatal fejl:Kald til udefineret funktion sqlsrv_connect() i C:\xampp\htdocs