sql >> Base de Datos >  >> RDS >> Oracle

¿Qué son las subconsultas en Oracle?

Subconsultas en Oracle

(1) Una subconsulta o consulta anidada es una consulta dentro de otra consulta SQL e incrustada dentro de la cláusula WHERE. Una subconsulta es una consulta dentro de una consulta

(2) Se utiliza una subconsulta para devolver datos que se utilizarán en la consulta principal como condición para restringir aún más los datos que se recuperarán.

(3) Las subconsultas responden a las consultas que tienen varias partes. La consulta principal responde una parte y la consulta secundaria responde otra parte

(4) Las subconsultas se pueden usar con las declaraciones SELECT, INSERT, UPDATE y DELETE junto con operadores como =, <,>,>=, <=, IN, BETWEEN, etc.

(5) El uso de subconsultas en una cláusula FROM se conoce como vista en línea .

(6) El uso de subconsultas en la cláusula WHERE se denomina subconsulta anidada . Se permiten hasta 255 consultas anidadas.

Algunas pautas para subconsultas de Oracle

(1) Necesitamos poner las subconsultas entre paréntesis siempre

(2) Necesitamos colocar subconsultas en el lado derecho del operador de comparación

(3) Utilice el operador de una sola fila con subconsultas de una sola fila y el operador de varias filas con subconsultas de varias filas

Sintaxis general

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

Subconsulta de una sola fila

Devuelve solo una fila de resultados y utiliza un solo operador de fila (el más común es el operador igual (=)). Los otros operadores son > ,<,>=  ,=

Las subconsultas de una sola fila pueden seleccionar datos de la misma tabla o de otra tabla

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 varias filas

Devuelve varias filas de resultados de la subconsulta, utiliza el operador IN. En la consulta anterior, si hubiera más de un departamento de investigación, la consulta habría fallado. Ejemplo de devolución de más de una fila en la subconsulta

El otro operador que se utiliza es any and all

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

Subconsulta correlacionada

Una subconsulta correlacionada es una subconsulta que se basa en columnas de la consulta principal. Se evalúa una subconsulta correlacionada para cada fila procesada por la consulta principal. La instrucción principal puede ser SELECCIONAR, ACTUALIZAR o ELIMINAR.

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

Basado en los mismos datos de emp y dept, aquí está el resultado

Subconsultas escalares

Devuelve exactamente un valor de una fila, que se usa con más frecuencia en la cláusula VALUES de una instrucción INSERT, en la cláusula ORDER BY o WHERE y en una 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%';

La consulta secundaria se ejecuta una vez por cada ejecución de la consulta maestra. Una subconsulta de una sola fila solo se puede usar con operadores de una sola fila

Subconsultas de varias columnas

La consulta puede tener más de una columna en la cláusula SELECT de una subconsulta o en las instrucciones 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 en otras declaraciones DML

Las subconsultas se pueden usar en declaraciones 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 );

Artículos relacionados
cómo escribir consultas sql:¿Qué son las uniones de Oracle con ejemplos (uniones Sql), diferentes tipos de uniones, unión interna, unión externa, unión externa izquierda, unión externa derecha, unión cruzada con ejemplos
Uniones de Oracle :¿Qué son las combinaciones de Oracle con ejemplos (combinaciones Sql), diferentes tipos de combinaciones, combinación interna, combinación externa, combinación externa izquierda, combinación externa derecha, combinación cruzada con ejemplos? Funciones de fecha en Oracle:consulte esta publicación para Oracle funciones de fecha, diferencia de fecha de Oracle en años, diferencia de fecha de Oracle en días, diferencia de fecha de Oracle en meses.
JSON en Oracle:consulte esta publicación sobre cómo usar JSON en Oracle, cómo crear una tabla que contenga datos JSON, cómo para extraer, insertar los datos JSON en Oracle
Tutorial de Oracle Sql:lista de todas las lecciones del tutorial de sql que se pueden usar para dominar sql y usar en Oracle, gestión y manipulación de datos
https://livesql. oracle.com/apex/livesql/file/tutorial_GMLYIBY74FPBS888XO8F1R95I.html