sql >> Databáze >  >> RDS >> Oracle

Co jsou poddotazy v oracle

Poddotazy v Oracle

(1) Poddotaz nebo vnořený dotaz je dotaz v rámci jiného dotazu SQL a vložený do klauzule WHERE. Poddotaz je dotaz v rámci dotazu

(2) Poddotaz se používá k vrácení dat, která budou použita v hlavním dotazu jako podmínka pro další omezení dat, která mají být načtena.

(3) Poddotazy odpovídají na dotazy, které mají více částí. Nadřazený dotaz odpovídá na část a vedlejší dotaz odpovídá na jinou část

(4) Poddotazy lze použít s příkazy SELECT, INSERT, UPDATE a DELETE spolu s operátory jako =, <,>,>=, <=, IN, BETWEEN atd.

(5)Používání dílčích dotazů v klauzuli FROM je známé jako vložené zobrazení .

(6) Použití poddotazů v klauzuli WHERE se nazývá vnořený poddotaz . Je povoleno až 255 vnořených dotazů.

Některá pravidla pro poddotazy Oracle

(1) Dílčí dotazy musíme vždy vkládat do závorek

(2) Musíme umístit dílčí dotazy na pravou stranu operátoru porovnání

(3) Použijte jednořádkový operátor pro jednořádkové poddotazy a víceřádkový operátor s víceřádkovými poddotazy

Obecná syntaxe

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

Jednořádkový dílčí dotaz

Vrací pouze jeden řádek výsledků a používá jednořádkový operátor (nejběžnější je stejný operátor (=)). Ostatní operátory jsou > ,<,>=  ,=<

Jednořádkové poddotazy mohou vybrat data ze stejné tabulky nebo z jiné tabulky

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

Víceřádkový dílčí dotaz

Vrací několik řádků výsledků z poddotazu, používá operátor IN. Pokud by v předchozím dotazu existovalo více než jedno výzkumné oddělení, dotaz by selhal. Příklad vrácení více než jednoho řádku v poddotazu

Dalším používaným operátorem je jakýkoli a vše

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

Korelovaný dílčí dotaz

Korelovaný poddotaz je poddotaz, který se opírá o sloupce z nadřazeného dotazu. Korelovaný poddotaz je vyhodnocen pro každý řádek zpracovaný nadřazeným dotazem. Rodičovský příkaz může být SELECT, UPDATE nebo DELETE.

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

Na základě stejných údajů o emp a dept je zde výsledek

Skalární dílčí dotazy

Vrací přesně jednu hodnotu z jednoho řádku, která se nejčastěji používá v klauzuli VALUES příkazu INSERT, v klauzuli ORDER BY nebo WHERE a v klauzuli SELECT:

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

Dílčí dotaz se provede jednou pro každé provedení hlavního dotazu. Jednořádkový poddotaz lze použít pouze s jednořádkovými operátory

  Poddotazy s více sloupci

Dotaz může mít  více než jeden sloupec v klauzuli SELECT poddotazu nebo v příkazech UPDATE

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

Poddotazy v jiných výpisech DML

Poddotazy lze použít v příkazech UPDATE, DELETE a INSERT

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

Související články
jak psát dotazy SQL :Co jsou Oracle Joins s příklady (Sql spojení), Různé typy spojení, Vnitřní spojení,Vnější spojení,levé vnější spojení,pravé vnější spojení,křížové spojení s příklady
Oracle Joins :Co jsou Oracle Joins s příklady (Sql spojení), Různé typy spojení, Vnitřní spojení,Vnější spojení,levé vnější spojení,pravé vnější spojení,křížové spojení s příklady
Funkce data v oracle :Podívejte se na tento příspěvek pro oracle datumové funkce, rozdíl data Oracle v letech, rozdíl dat Oracle ve dnech, rozdíl dat Oracle v měsících.
JSON v oracle:Podívejte se na tento příspěvek o tom, jak používat JSON v oracle, jak vytvořit tabulku obsahující data JSON, jak k extrahování vložte data JSON do oracle
Výukový program Oracle Sql :Seznam všech výukových lekcí SQL, které lze použít k zvládnutí SQL a použití v Oracle, správě dat a manipulaci
https://livesql. oracle.com/apex/livesql/file/tutorial_GMLYIBY74FPBS888XO8F1R95I.html


  1. Formátování čísel pomocí odsazení úvodními nulami v SQL Server

  2. SQL injekce v ADOdb a obecné zabezpečení webu

  3. Skript pro uložení varbinárních dat na disk

  4. Rozdíl mezi primárním klíčem a jedinečným klíčem