base de dato
Laboratorio 06 Subqueries
Ingeniería en Sistemas Computacionales
INTRODUCCIÓN A SUBQUERIES
Subqueries es uno de los aspectos más complejos de SQL. Los subqueries son frecuentemente
utilizados para resolver la complejidad dividiendo quieres muy grandes en queries más pequeños, los
cuales interactúan uno con otro. En algunas situaciones, los subqueries pueden serutilizados también
para mejorar el desempeño de instrucciones SQL.
Un subquery contesta cuestiones de múltiples partes. Un subquery en la clausula FROM de
una sentencia SELECT se le llama también una vista alineada. Un subquery en la clausula WHERE de
la sentencia SELECT se le llama subquery anidado.
Un subquery puede contener otro subquery. La base de datos de Oracle no impone un límite en
elnúmero de niveles de subqueries en la clausula FROM desde el query de más alto nivel. Se pueden
anidar hasta 255 niveles de subqueries en la clausula WHERE.
TIPOS DE SUBQUERIES
Un subquery es una instrucción SQL llamada desde otro Query u otro subquery. Los subqueries
pueden recuperar varios conjuntos de resultados y pueden ser definidos en base a lo que ellos
recuperan:
Renglónsimple / columna simple. Este tipo de subquery puede ser utilizado para encontrar un
solo valor (un renglón).
Múltiples renglones / una columna a la vez. Este tipo de subquery recupera una lista de valores
(múltiples renglones).
Múltiples columnas / simple o múltiples renglones. Esta es la variación más compleja.
Subqueries correlacionados. La palabra correlación es utilizada para describir larelación entre
el query llamante y el subquery.
Los subqueries también pueden ser definidos como anidados o vistas inline:
Subqueries anidados. Los subqueries pueden llamar otros subqueries y así sucesivamente ad
infinitum. En otras palabras, subqueries pueden estar anidados dentro de subqueries, dentro de
subqueries.
Vistas inline: Ia vista inline es un subquery integrado dentro dela cláusula FROM de una
instrucción SELECT, la cual a propósito es también un subquery. Los valores pueden ser
pasados desde la vista inline al query que hacerla llamada, o subquery.
¿DONDE PUEDEN UTILIZARSE LOS SUBQUERIES?
Los subqueries pueden utilizarse casi donde quiera en una instrucción SQL, en cualquier
comando SQL donde una expresión pueda ser puesta. Siguiendo la lista de decláusulas de la
instrucción SQL en la cual se puede utilizar un subquery tenemos:
Cláusula SELECT.
Cláusula WHERE
Cláusula ORDER BY
Cláusula FROM (Inline view)
Cláusula VALUES de una instrucción INSERT
Instrucción UPDATE en la cláusula SET.
Instrucción CASE.
Parámetros de funciones.
Cláusula SPREADSHEET.
Francisco J. Carrillo Z.
Ene 2010
1
Versión 3.0Bases de Datos II
Laboratorio 06 Subqueries
Ingeniería en Sistemas Computacionales
CONDICIONES DE COMPARACIÓN Y SUBQUERIES
Muchas condiciones de comparación son aplicables a subqueries. El diagrama de sintaxis se
muestra en la siguiente figura:
Simple
Like
Membership
Existencia
Rango
Grupo
( subquery ) [ = | != ] ( subquery )
(subquery) LIKE (subquery)
(subquery) [NOT] IN(subquery)
[NOT] EXISTS (subquery)
(subquery) BETWEEN (subquery) AND (subquery)
(subquery) { = | != | > | < | >= | , (select avg(proExistencia) from productos)
Subqueries de múltiples columnas
select a.proNumero, a.prodescripcion, O.ordFecha
from ordenesCompra O,(select proNumero, prodescripcion from productos where prodescripcion like
'%Acido%') a, detalleOrdenes DO
wherea.proNumero=DO.proNumero and O.OrdNumero = DO.ordNumero
Subqueries regulares contra correlacionados
update productos P
set proacumulado = (select sum(detOrdCantidad * propreciouni) from detalleOrdenes DO
where P.proNumero = DO.proNumero)
Subqueries anidados
a) select pronumero, extract(month from ordfecha) as MES,sum(detordcantidad *
propreciouni) total from ordenesCompra E,...
Regístrate para leer el documento completo.