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