Подзаявки в Oracle
(1) Подзаявка или вложена заявка е заявка в друга SQL заявка и е вградена в клаузата WHERE. Подзаявката е заявка в заявка
(2) Използва се подзаявка за връщане на данни, които ще бъдат използвани в основната заявка като условие за допълнително ограничаване на данните, които трябва да бъдат извлечени.
(3) Подзаявките отговарят на заявките, които имат множество части. Родителската заявка отговаря на част, а подзаявката отговаря на друга част
(4) Подзаявките могат да се използват с изразите SELECT, INSERT, UPDATE и DELETE заедно с операторите като =, <,>,>=, <=, IN, BETWEEN и т.н.
(5) Използването на подзаявки в клауза FROM е известно като вграден изглед .
(6) Използването на подзаявки в клаузата WHERE се нарича вложена подзаявка . Разрешени са до 255 вложени заявки.
Някои насоки за подзапитвания на Oracle
(1) Винаги трябва да поставяме подзаявки в скоби
(2) Трябва да поставим подзаявки от дясната страна на оператора за сравнение
(3) Използвайте едноредов оператор с едноредови подзаявки и многоредов оператор с множество редови подзаявки
Общ синтаксис
SELECT col1, col2 FROM table1 WHERE col1 OPERATOR (SELECT col1 FROM table2 [WHERE])
Подзаявка от един ред
Той връща само един ред с резултати и използва един оператор на ред (най-често срещаният е операторът за равенство (=)). Другите оператори са > ,<,>= ,=<
Подзаявките с един ред могат да избират данни от същата таблица или от друга таблица
SELECT ENAME FROM EMP WHERE SAL = (SELECT MIN(SAL) FROM EMP);SELECT ENAME FROM EMP WHERE DEPTNO = (SELECT DEPTNO FROM DEPT WHERE DNAME = 'RESEARCH');
Подзаявка с няколко реда
Връща няколко реда резултати от подзаявката, използва оператора IN. В предишната заявка, ако имаше повече от един изследователски отдел, заявката щеше да е неуспешна. Пример за връщане на повече от един ред в подзаявката
Другият оператор, който се използва, е всеки и всички
SELECT ENAME, DEPTNO FROM EMP WHERE DEPTNO IN (SELECT DEPTNO FROM DEPT WHERE DNAME LIKE 'R%');
Корелирана подзаявка
Корелираната подзаявка е подзаявка, която разчита на колони от родителската заявка. За всеки ред, обработен от родителската заявка, се оценява корелирана подзаявка. Операторът-родител може да бъде SELECT, UPDATE или DELETE.
SELECT ENAME,SAL FROM EMP E1 WHERE SAL = (SELECT MAX(SAL) FROM EMP E2 WHERE E1.DEPTNO = E2.DEPTNO);
Въз основа на същите данни на emp и dept, ето резултата
Скаларни подзаявки
Връща точно една стойност от един ред, използвана най-често в клаузата VALUES на израз INSERT, в и ORDER BY или WHERE и в клауза SELECT:
SELECT ENAME, DEPTNO, (SELECT MAX(SAL) FROM EMP E2 WHERE E2.DEPTNO = E1.DEPTNO) HIGH_SAL FROM EMP E1 WHERE ENAME LIKE 'B%';
Подзаявката се изпълнява веднъж за всяко изпълнение на главната заявка. Едноредова подзаявка може да се използва само с едноредови оператори
Подзаявки с няколко колони
Заявката може да има повече от една колона в клаузата SELECT на подзаявка или в изрази 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');
Подзаявки в други DML изявления
Подзаявките могат да се използват в изрази UPDATE, DELETE и 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 );
Сродни статии
как да напиша sql заявки :Какво представляват Oracle Joins с примери (Sql присъединения), Различен тип обединения, Вътрешно присъединяване, Външно присъединяване, ляво външно съединение, дясно външно съединение, кръстосано присъединяване с примери
Oracle Joins :Какво представляват Oracle Joins с примери (Sql присъединения), Различен тип присъединяване , Вътрешно присъединяване, Външно присъединяване, ляво външно присъединяване, дясно външно присъединяване, кръстосано присъединяване с примери
Функции за дата в oracle :Разгледайте тази публикация за oracle функции за дата, разлика в датата на oracle в години, разлика в датата на oracle в дни, разлика в датата на oracle в месеци.
JSON в oracle :Вижте тази публикация за това как да използвате JSON в oracle, как да създадете таблица, съдържаща JSON данни, как за да извлечете, вмъкнете JSON данните в oracle
урок за Oracle Sql :Списък на всички уроци за sql, които могат да се използват за овладяване на sql и използване в Oracle, управление на данни и манипулация
https://livesql. oracle.com/apex/livesql/file/tutorial_GMLYIBY74FPBS888XO8F1R95I.html