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:

imagenimagen

Publicaciones Recientes