Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Czym są podzapytania w Oracle

Podzapytania w Oracle

(1) Zapytanie podrzędne lub zapytanie zagnieżdżone to zapytanie w innym zapytaniu SQL i osadzone w klauzuli WHERE. Podzapytanie to zapytanie w zapytaniu

(2) Podzapytanie służy do zwrócenia danych, które zostaną użyte w zapytaniu głównym jako warunek dalszego ograniczenia danych do pobrania.

(3) Podzapytania odpowiadają na zapytania, które mają wiele części. Zapytanie nadrzędne odpowiada na część, a zapytanie podrzędne na drugą część

(4)Podzapytania mogą być używane z instrukcjami SELECT, INSERT, UPDATE i DELETE wraz z operatorami takimi jak =, <,>,>=, <=, IN, BETWEEN itp.

(5)Korzystanie z podzapytań w klauzuli FROM jest znane jako widok wbudowany .

(6) Używanie podzapytań w klauzuli WHERE nazywa się podzapytaniem zagnieżdżonym . Dozwolonych jest do 255 zagnieżdżonych zapytań.

Niektóre wytyczne dotyczące podzapytań Oracle

(1) Zapytania podrzędne należy zawsze umieszczać w nawiasach

(2) Musimy umieścić podzapytania po prawej stronie operatora porównania

(3) Użyj operatora jednowierszowego z podzapytaniami jednowierszowymi i operatora wielowierszowego z podzapytaniami wielowierszowymi

Ogólna składnia

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

Podzapytanie jednowierszowe

Zwraca tylko jeden wiersz wyników i używa operatora pojedynczego wiersza (najczęściej jest to operator równości (=)). Pozostałe operatory to > ,<,>=  ,=<

Podzapytania jednowierszowe mogą wybierać dane z tej samej tabeli lub z innej tabeli

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

Podzapytanie z wieloma wierszami

Zwraca kilka wierszy wyników z podzapytania, używa operatora IN. W poprzednim zapytaniu, gdyby istniało więcej niż jeden dział badawczy, zapytanie zakończyłoby się niepowodzeniem. Przykład zwrócenia więcej niż jednego wiersza w podzapytaniu

Drugim używanym operatorem jest każdy i wszystko

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

Skorelowane podzapytanie

Skorelowane podzapytanie to podzapytanie, które opiera się na kolumnach z zapytania nadrzędnego. Skorelowane podzapytanie jest oceniane dla każdego wiersza przetwarzanego przez zapytanie nadrzędne. Oświadczeniem nadrzędnym może być SELECT, UPDATE lub DELETE.

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

Na podstawie tych samych danych emp i dept, oto wynik

Podzapytania skalarne

Zwraca dokładnie jedną wartość z jednego wiersza, używaną najczęściej w klauzuli VALUES instrukcji INSERT, w klauzuli ORDER BY lub WHERE oraz w 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%';

Zapytanie podrzędne jest wykonywane raz dla każdego wykonania zapytania głównego. Podzapytanie jednowierszowe może być używane tylko z operatorami jednowierszowymi

Podzapytania wielokolumnowe

Zapytanie może zawierać więcej niż jedną kolumnę w klauzuli SELECT podzapytania lub w instrukcjach 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');

Podzapytania w innych instrukcjach DML

Podzapytania mogą być używane w instrukcjach UPDATE, DELETE i 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 );

Powiązane artykuły
jak pisać zapytania sql :Co to są złączenia Oracle z przykładami (złączenia SQL), Różne typy złączeń , Złącze wewnętrzne, złącze zewnętrzne,lewe złącze zewnętrzne,prawe złącze zewnętrzne, złącze krzyżowe z przykładami
Złączenia Oracle :Co to są złączenia Oracle z przykładami (sprzężenia SQL), Różne typy złączeń , złącze wewnętrzne, złącze zewnętrzne, złącze lewe zewnętrzne, złącze prawe zewnętrzne, złącze krzyżowe z przykładami
Funkcje dat w Oracle :Sprawdź ten post dla Oracle funkcje daty, różnica dat Oracle w latach, różnica dat Oracle w dniach, różnica dat Oracle w miesiącach.
JSON w Oracle :Sprawdź ten post, jak używać JSON w Oracle, jak utworzyć tabelę zawierającą dane JSON, jak aby wyodrębnić, wstaw dane JSON w Oracle
Samouczek Oracle Sql :Lista wszystkich lekcji z samouczka sql, których można użyć do opanowania sql i wykorzystania w Oracle, zarządzaniu danymi i ich manipulacji
https://livesql. oracle.com/apex/livesql/file/tutorial_GMLYIBY74FPBS888XO8F1R95I.html


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Włączanie TLS w R12.1

  2. Jak podłączyć bazę danych Oracle z PHP

  3. Zrozumienie segmentów Lob (SYS_LOB) w Oracle?

  4. Oracle SQL:Zrozumienie zachowania funkcji SYS_GUID() w widoku wbudowanym?

  5. Jak zmienić format daty w sesji Oracle