logo
MyWebStudies - Página de inicio
INGRESAR

REGISTRARSE
Buscador

Concepto de subconsultas en sql - oracle sql

mywebstudies.com

PorMyWebStudies

2024-04-05
Concepto de subconsultas en sql - oracle sql


Concepto de subconsultas en sql - oracle sql

Una subconsulta es una consulta anidada dentro de otra consulta. La consulta principal (padre) utiliza los resultados devueltos por la subconsulta para realizar comparaciones, mostrar datos, entre otros.

Existen tres formas principales de utilizar una subconsulta:

  • Comparación: Compara una expresión con el resultado de la subconsulta mediante un operador de comparación.
  • Expresión: Busca un conjunto resultante en base a una expresión que devuelve la subconsulta.
  • Instrucción SQL: La subconsulta es un SELECT con el mismo formato y reglas que cualquier otra consulta, y se coloca entre paréntesis.

Las subconsultas pueden usarse en:

  • SELECT: Junto a los campos recuperados. Ejemplo: SELECT employee_id, first_name, (SELECT department_id FROM job_history jh WHERE jh.employee_id = e.employee_id) departamento FROM employees e.

En la cláusula FROM:

  • Ejemplo: SELECT COUNT (*) FROM (SELECT * FROM employees WHERE department_id = 90).

En la cláusula WHERE:

  • Ejemplo: SELECT * FROM job_history WHERE job_id IN (SELECT job_id FROM jobs WHERE job_title = 'Programmer').

En la cláusula HAVING:

  • Ejemplo: SELECT department_id "id departamento", COUNT (*) "total empleados" FROM employees GROUP BY department_id HAVING COUNT (*) = (SELECT max (COUNT (*)) FROM employees GROUP BY department_id).

Orden de ejecución:

  • Primero se ejecuta la subconsulta, para obtener los datos necesarios, y luego la consulta principal.
  • La subconsulta se ejecuta por cada fila procesada en la consulta principal.

Características de una subconsulta:

  • No se utiliza ORDER BY, ya que los resultados no son visibles para el usuario final.
  • Las tablas referenciadas pueden incluir columnas de la consulta principal, conocidas como referencias externas.
  • El resultado puede ser un solo valor o múltiples valores.

Utilización de subconsultas:

  • Para comparaciones: SELECT department_id, AVG(salary) "salario medio" FROM employees GROUP BY department_id HAVING AVG(salary) > (SELECT AVG(salary) FROM employees).

Para generar tablas temporales:

  • Ejemplo: SELECT COUNT (*) FROM (SELECT * FROM employees WHERE id_departamento = 90).

Para sentencias DML:

  • Ejemplo: UPDATE employees SET salary = salary + 2000 WHERE job_id IN (SELECT job_id FROM jobs WHERE job_title = 'Programmer').

Ejemplos de subconsultas:

imagen imagen