Vous êtes sur la page 1sur 9

UNIVERSIDAD TCNICA DE COTOPAXI

UNIDAD ACADMICA DE CIENCIAS DE LA INGENIERA Y APLICADAS


CARRERA DE INGENIERA EN INFORMTICA Y SISTEMAS
COMPUTACIONALES

PROGRAMACIN EN BASE DE DATOS


TEMA:

SUBCONSULTAS EN EL LENGUAJE SQL

INTEGRANTES:

MASABANDA JHENNY
TOAPANTA DIANA

CICLO:

QUINTO

PARALELO:

FECHA:

LUNES 19 DE DICIEMBRE DEL 2016

LATACUNGA ECUADOR

SUBCONJUNTAS EN EL LENGUAJE SQL


Una subconsulta en SQL consiste en utilizar los resultados de una consulta dentro de
otra, que se considera la principal. Esta posibilidad fue la razn original para la palabra
estructurada en el nombre Lenguaje de Consultas Estructuradas.

Sintaxis

La subconsulta se ejecuta una vez y antes de la consulta principal.


El resultado de ella es usado por la consulta principal externa.

Tipos De Subconsultas
Las subconsultas se pueden especificar en muchos sitios:

Con alias Para obtener ms informacin, vea Subconsultas con alias.

Con IN o NOT IN. Para obtener ms informacin, vea Subconsultas con


IN y Subconsultas con NOT IN.

En las instrucciones UPDATE, DELETE e INSERT. Para obtener ms


informacin, vea Subconsultas en las instrucciones UPDATE, DELETE e
INSERT.

Con los operadores de comparacin. Para obtener ms informacin,


vea Subconsultas con operadores de comparacin.

Con ANY, SOME o ALL. Para obtener ms informacin, vea Operadores de


comparacin modificados por ANY, SOME o ALL.

Con EXISTS o NOT EXISTS. Para obtener ms informacin, vea Subconsultas


con EXISTS y Subconsultas con NOT EXISTS.

En lugar de una expresin. Para obtener ms informacin, vea Subconsultas


usadas en lugar de una expresin.

Una subconsulta es una instruccin SELECT anidada dentro de una instruccin


SELECT, SELECT...INTO, INSERT...INTO, DELETE, o UPDATE o dentro de otra
subconsulta.
Puede utilizar tres formas de sintaxis para crear una subconsulta:

Comparacin [ANY | ALL | SOME] (instruccin sql)


expresin [NOT] IN (instruccin sql)
[NOT] EXISTS (instruccin sql)

Una subconsulta consta de los siguientes elementos:


Elemento
comparacin

Descripcin
Expresin y operador de comparacin que compara la expresin con

expresin
instruccinSQ

los resultados de una subconsulta.


Expresin que se busca en el conjunto de resultados de la subconsulta.
Instruccin SELECT que sigue el mismo formato y las mismas reglas

L
En donde:

que todas las instrucciones SELECT. Debe incluirse entre parntesis.

Comparacin
Es una expresin y un operador de comparacin que compara la expresin con el
resultado de la subconsulta.

Expresin
Es una expresin por la que se busca el conjunto resultante de la subconsulta.
Instruccin sql
Es una instruccin SELECT, que sigue el mismo formato y reglas que cualquier otra
instruccin SELECT. Debe ir entre parntesis.
Se puede utilizar una subconsulta en lugar de una expresin en la lista de campos de una
instruccin SELECT o en una clusula WHERE o HAVING. En una subconsulta, se
utiliza una instruccin SELECT para proporcionar un conjunto de uno o ms valores
especificados para evaluar en la expresin de la clusula WHERE o HAVING.
Se puede utilizar el predicado ANY o SOME, los cuales son sinnimos, para recuperar
registros de la consulta principal, que satisfagan la comparacin con cualquier otro
registr recuperado en la subconsulta. El ejemplo siguiente devuelve todos los
productos cuyo precio unitario es mayor que el de cualquier producto vendido con un
descuento igual o mayor al 25 por ciento.

SELECT * FROM Productos WHERE PrecioUnidad > ANY


(SELECT PrecioUnidad FROM DetallePedido WHERE Descuento >= 0 .
25);

Reglas de las subconjuntas


Las subconsultas estn sujetas a las restricciones siguientes:

La lista de seleccin de una subconsulta que se especifica con un operador de


comparacin, slo puede incluir un nombre de expresin o columna (excepto
EXISTS e IN, que operan en SELECT * o en una lista respectivamente).

Si la clusula WHERE de una consulta externa incluye un nombre de columna,


debe ser compatible con una combinacin con la columna indicada en la lista de
seleccin de la subconsulta.

Los tipos de datos ntext, text y image no estn permitidos en las listas de
seleccin de subconsultas.

Puesto que deben devolver un solo valor, las subconsultas que se especifican con
un operador de comparacin sin modificar (no seguido de la palabra clave ANY o
ALL) no pueden incluir las clusulas GROUP BY y HAVING.

La palabra clave DISTINCT no se puede usar con subconsultas que incluyan


GROUP BY.

No se pueden especificar las clusulas COMPUTE e INTO.

Slo se puede especificar ORDER BY si se especifica tambin TOP.

Una vista creada con una subconsulta no se puede actualizar.

La lista de seleccin de una subconsulta especificada con EXISTS, por


convencin, tiene un asterisco (*) en lugar de un solo nombre de columna. Las
reglas de una subconsulta especificada con EXISTS son idnticas a las de una lista
de seleccin estndar, porque este tipo de subconsulta crea una prueba de existencia
y devuelve TRUE o FALSE en lugar de datos.

EJEMPLOS
SELECT(SELECT)-FROM-WHERE
Es posible utilizar una subconsulta como una columna dentro de la seleccin.
Supongamos que se termin el periodo de postulaciones y desea obtener una lista de los
estudiantes y cuantas veces fueron aceptados.
EJEMPLO N 1:

SELECT sid, sname


(SELECT COUNT (*) FROM apply A WHERE A.sid = S.sid and A.decision =`t`)
As accepted
FROM student S
ORDER BY accepted DESC;

Cuya salida ser:

EJEMPLO N 2
Se desea saber el promedio de un determinado alumno y su diferencia con el promedio
ms alto del grupo de alumnos. Podra conseguirse averiguando el promedio ms alto de
grupo, y luego, en otra consulta, calcular la diferencia con el del valor del promedio del
alumno en cuestin (en este caso Doris). Esto es posible realizarlo en una sola consulta:
SELECT sname, average, average-(SELECT max (average) FROM
student)
As diferencia
FROM student
Cuya salida ser:

Para distinguir a ambas Doris, se puede agregar el atributo sID a la consulta:


SELECT sid, sname, average, average-(SELECT max(average) FROM
student)
As diferencia
FROM student
En cuyo caso la salida ser:

EJEMPLO N 3
Supongamos que se trabaja bajo el contexto del ejemplo 2, pero sin utilizar la funcin
MAX, que retorna slo un valor:
SELECT sname, average, average-(SELECT average FROM student)
As diferencia
FROM student
WHERE sname = Doris;
En cuyo caso la salida corresponder al siguiente error:

EJEMPLO N 4
Supongamos que se desea saber el nombre de cada alumno, su promedio, y su diferencia
respecto al promedio ms bajo del curso:
SELECT sname, average, average-(SELECT min (average) FROM
student)
As diferencia

En cuyo caso la salida ser:

SELECT-FROM(SELECT)-WHERE

Otro uso que se les da a las subconsultas es en la palabra reservada FROM. En el FROM
de la consulta, es posible utilizar una subconsulta. De todos modos es necesario agregarle
un alias, pues el resultado de la subconsulta no tiene un nombre establecido. En caso de
no hacerlo, aparece el siguiente error:

EJEMPLO N 5
Para demostrar el funcionamiento de la subconsulta dentro del FROM, supongamos que
se desea extraer el id y nombre de cada alumno dentro de la tabla student:
SELECT sid, sname
FROM student;
Cuya salida es:

Lo cual es equivalente a la consulta


SELECT sid, sname
FROM (SELECT * FROM) student;
As example;

Cuya salida es:

Es decir son equivalentes, pues el alies example, contiene toda la informacin de la


tabla student.

Vous aimerez peut-être aussi