Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

O que é subconsultas no oracle

Subconsultas no Oracle


(1) Uma subconsulta ou consulta aninhada é uma consulta dentro de outra consulta SQL e incorporada na cláusula WHERE. Uma subconsulta é uma consulta dentro de uma consulta

(2) Uma subconsulta é usada para retornar dados que serão usados ​​na consulta principal como condição para restringir ainda mais os dados a serem recuperados.

(3) As subconsultas respondem às consultas que têm várias partes. A consulta pai responde a uma parte e a subconsulta responde a outra parte

(4) As subconsultas podem ser usadas com as instruções SELECT, INSERT, UPDATE e DELETE junto com os operadores como =, <,>,>=, <=, IN, BETWEEN etc.

(5)O uso de subconsultas em uma cláusula FROM é conhecido como visualização em linha .

(6) O uso de subconsultas na cláusula WHERE é chamado de subconsulta aninhada . São permitidas até 255 consultas aninhadas.

Algumas diretrizes para Subconsultas do Oracle


(1) Precisamos colocar subconsultas entre parênteses sempre

(2) Precisamos colocar subconsultas no lado direito do operador de comparação

(3) Use operador de linha única com subconsultas de linha única e operador de várias linhas com subconsultas de várias linhas

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

Subconsulta de linha única


Ele retorna apenas uma linha de resultados e usa um único operador de linha (o mais comum é o operador igual (=)). Os outros operadores são > ,<,>=  ,=<

As subconsultas de linha única podem selecionar dados da mesma tabela ou de outra tabela
SELECT ENAME FROM EMP WHERE SAL = (SELECT MIN(SAL) FROM EMP);SELECT ENAME FROM EMP WHERE DEPTNO = (SELECT DEPTNO FROM DEPT WHERE DNAME = 'RESEARCH');

Subconsulta de várias linhas


Ele retorna várias linhas de resultados da subconsulta, usa o operador IN. Na consulta anterior, se houvesse mais de um departamento de pesquisa, a consulta teria falhado. Exemplo de retorno de mais de uma linha na subconsulta

O outro operador que é usado é todo e qualquer
SELECT ENAME, DEPTNO FROM EMP
WHERE DEPTNO IN (SELECT DEPTNO FROM DEPT WHERE DNAME LIKE 'R%');

Subconsulta correlacionada


Uma subconsulta correlacionada é uma subconsulta que se baseia em colunas da consulta pai. Uma subconsulta correlacionada é avaliada para cada linha processada pela consulta pai. A instrução pai pode ser um SELECT, UPDATE ou DELETE.
SELECT ENAME,SAL FROM EMP E1
WHERE SAL = (SELECT MAX(SAL)
FROM EMP E2 WHERE E1.DEPTNO = E2.DEPTNO);

Com base nos mesmos dados de emp e dept, aqui está o resultado

Subconsultas escalares


Ele retorna exatamente um valor de uma linha, usado com mais frequência na cláusula VALUES de uma instrução INSERT, em uma cláusula ORDER BY ou WHERE e em uma cláusula SELECT:
SELECT ENAME,
DEPTNO, (SELECT MAX(SAL)
FROM EMP E2
WHERE E2.DEPTNO = E1.DEPTNO) HIGH_SAL
FROM EMP E1
WHERE ENAME LIKE 'B%';

A subconsulta é executada uma vez para cada execução da consulta mestre. Uma subconsulta de linha única só pode ser usada com operadores de linha única

  Subconsultas de várias colunas


A consulta pode ter mais de uma coluna na cláusula SELECT de uma subconsulta ou em instruções 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');

Subconsultas em outras declarações DML


As subconsultas podem ser usadas em instruções UPDATE, DELETE e 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 );

Artigos relacionados
como escrever consultas sql:O que são Oracle Joins com exemplos (Sql joins), Diferentes tipos de joins, Inner Join,Outer join,left outer join,right outer join,cross join com exemplos
Oracle Joins :O que são Oracle Joins com exemplos (Sql joins), Diferentes tipos de joins, Inner Join,Outer join,left outer join,right outer join,cross join com exemplos
Funções de data no oracle :Confira este post para oracle funções de data, diferença de data oracle em anos, diferença de data oracle em dias, diferença de data oracle em meses.
JSON in oracle:Confira este post sobre como usar JSON no oracle, como criar tabela contendo dados JSON, como para extrair, insira os dados JSON no oracle
Tutorial do Oracle Sql:Listagem de todas as lições do tutorial sql que podem ser usadas para dominar o sql e usar no Oracle, gerenciamento e manipulação de dados
https://livesql. oracle.com/apex/livesql/file/tutorial_GMLYIBY74FPBS888XO8F1R95I.html