Oracle
 sql >> база данни >  >> RDS >> Oracle

Какво представляват подзаявките в oracle

Подзаявки в 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Обърнете в Oracle този път z/y/x към x/y/z

  2. Документация на Oracle

  3. Има ли най-добрият начин да избегнете изпълнението на процес повече от веднъж в Oracle?

  4. Хибернация на оракул, @GeneratedValue(strategy =GenerationType.AUTO)

  5. Oracle 12:Присъединяване към разделен със запетая списък?