SlideShare una empresa de Scribd logo
1 de 4
Descargar para leer sin conexión
S QL                                                                     SUBCONSULTAS


Subconsultas

                            Definición y clasificaciones
                            Donde emplearlas
                            Condiciones de comparación y subconsultas
                            Ejemplos

Definición y clasificaciones

Una subconsulta es una instrucción SQL llamada desde otra instrucción o desde otra
subconsulta. Las subconsultas pueden devolver varios conjuntos de resultados, pudiéndose
clasificar basándose en estos conjuntos como:

              Una fila/una columna
              Múltiples filas/una única columna
              Múltiples columnas/una única o múltiples filas

Una subconsulta puede tener un formato regular o correlacionado.

              Subconsulta regular.
              Un consulta contenida dentro de otra sin que haya relación entre ambas.

              Subconsulta correlacionadas:
              Correlacionado implica una conexión entre la consulta –o subconsulta- que
              invoca la subconsulta y la propia subconsulta. Hay que tener en cuenta, que la
              columna correlacionada puede ser pasada de la consulta superior (la externa)
              a la inferior (la subconsulta interna) y NO al revés. La subconsulta
              correlacionada depende siempre de la consulta externa.

Las subconsultas pueden definirse también como anidadas o vistas en línea.

              Subconsulta anidada:
              Las subconsultas pueden llamar a otras subconsultas, y estas a su vez a
              otras, así sucesivamente, sin limitación.

              Subconsulta vista en línea:
              Es una subconsulta embebida dentro de la cláusula FROM de la instrucción
              SELECT que invoca la subconsulta.

Las subconsultas pueden pertenecer a la combinación de varios tipos de clasificaciones.


Donde emplearlas

Las subconsultas pueden emplearse en casi todas las instrucciones SQL, en cualquier
comando SQL donde se pueda emplear una expresión. El siguiente listado muestra las
instrucciones SQL donde puede emplearse una subconsulta:

              Cláusula SELECT
              Cláusula WHERE
              Cláusula ORDER BY
              Cláusula FROM (vista en línea)


                                  CURSO 2005-06                                           19
S QL                                                                    SUBCONSULTAS


              Cláusula VALUES de la instrucción INSERT
              Cláusula SET de la instrucción UPDATE


Condiciones de comparación y subconsultas

Las subconsultas pueden aplicarse a muchas condiciones de comparación. Dependiendo del
tipo de operador que empleemos, estará permitido un tipo de subconsulta u otro, en función
del tipo de resultados que esta devuelva.

       SIMPLE               (subconsulta) {= | != } (subconsulta)
       LIKE                 (subconsulta) LIKE (subconsulta)
       PERTENENCIA          (subconsulta)[NOT] IN (subconsulta)
       EXISTENCIA           [NOT] EXIST (subconsulta)
       RANGO                (subconsulta) BETWEEN (subconsulta) AND (subconsulta)
       AGRUPACIÓN           (subconsulta) {= | != | > | < | >= | <= } {ANY | SOME | ALL}
       (subconsulta)

Los operadores marcados, requieren subconsultas que devuelvan una única fila, como son
la igualdad/desigualdad, los operadores de comparación (<,>,>=,<=), así como los
operadores LIKE y BETWEEN.

El resto de operadores permiten como resultado de la subconsulta múltiples filas: IN, NOT
IN, EXIST, NOT EXIST, además de los operadores de comparación combinados con ANY,
SOME o ALL.

Una subconsulta en si misma, es generalmente equivalente sintácticamente a una
instrucción SELECT.


Ejemplos:

A continuación vamos a ver unos ejemplos de subconsultas:

Subconsultas de una única fila:

Es una subconsulta que devuelve como resultado una única fila.

Ejemplo:

       SELECT *
       FROM estudiantes
       WHERE población= (SELECT población
                          FROM estudiantes
                          WHERE dni=’33445667’);


Subconsultas de una múltiples filas:

Son subconsultas que devuelven como resultado múltiples filas. Es importante tener en
cuenta que pueden no devolver ninguna fila, y que el conjunto vacío es un resultado válido
en la pertenencia, existencia o condiciones de agrupación de comparación.




20                                CURSO 2005-06
S QL                                                                     SUBCONSULTAS


Ejemplos:

       SELECT *
       FROM profesores
       WHERE población IN (SELECT población
                           FROM estudiantes
                           WHERE edad>25);

       SELECT *
       FROM estudiantes
       WHERE edad > ALL (SELECT edad
                          FROM profesores
                          WHERE dpto=’Matemáticas’);



Subconsultas de múltiples columnas:

Una subconsulta de múltiples columnas, puede devolver una única o múltiples filas.
Devuelve más de una columna para cada fila. Suele emplearse para validar un conjunto de
columnas con otro en la cláusula WHERE, o como vista en línea en la cláusula FROM.

Ejemplos:

       SELECT *
       FROM profesores
       WHERE (nombre, apellidos) IN (SELECT nombre, apellidos
                                   FROM estudiantes
                                   WHERE edad>25);

       SELECT E.nia, nombre, apellidos, media
       FROM estudiantes E, (SELECT nia, AVG(nota) MEDIA
                            FROM suspendidos
                            GROUP BY nia
                            HAVING AVG(nota)<3) SUSP3
       WHERE E.nia=SUSP3.nia;


       CREATE TABLE medias AS (SELECT dni, AVG(notas) media
                                FROM estudiantes
                                GROUP BY dni);


Subconsultas correlacionadas:

Las subconsultas correlacionadas permiten la correlación o coincidencia de valores entre las
columnas de la consulta externa y la subconsulta. La consulta externa puede pasar el valor
de una columna a la subconsulta, no siendo posible al revés. Las consultas se van
ejecutando de izquierda a derecha y de arriba abajo. Las subconsultas internas se ejecutan
antes que las invoquen las externas.

Ejemplo:

       SELECT nombre
       FROM estudiante E
       WHERE ‘01/01/02’ > ALL (SELECT fecha_matricula
                                  FROM asigunaturas A
                                  WHERE A.nia=E.nia);




                                  CURSO 2005-06                                          21
S QL                                                                                 SUBCONSULTAS


Subconsultas anidadas:

Una subconsulta anidada es una subconsulta embebida dentro de otra subconsulta.

Ejemplo:

         SELECT nombre, apellidos
         FROM estudiante E
         WHERE nia IN (SELECT nia
                      FROM matricula
                      WHERE codasig IN (SELECT codasig
                                          FROM asignaturas
                                          GROUP BY codasig
                                          HAVING COUNT(DISTINCT nia)>100));

Subconsultas vista en línea:

Una subconsultas llamada vista en línea, es una subconsulta embebida en la cláusula FROM
de una instrucción SELECT, como si de una tabla o vista se tratara.

Ejemplos:

         SELECT E.nia, nombre, apellidos, Num_asig “Número asignaturas”
         FROM estudiante E, (SELECT nia, count(*) Num_asig
                              FROM matricula
                              GROUP BY nia
                              HAVING COUNT(*)>10) AUX
         WHERE E.nia=AUX.nia;


     UPDATE facturas
     SET total=(SELECT importe
                  FROM (SELECT Fac.codfac codigo, total_fac+total_fac*iva/100-total_fac*dto/100 Importe
                         FROM facturas Fac, (SELECT F.codfac, SUM(L.subtotal) Total_Fac
                                                 FROM facturas F,
                                                          (SELECT codfac, (precio*cant)-(precio*cant*dto/100)
                                                 Subtotal
                                                          FROM lineas_fac) L
                                                          WHERE F.codfac=L.codfac
                                                          GROUP BY F.codfac) Fac_Tot
                            WHERE Fac.codfac=Fac_Tot.codfac) AUX
     WHERE Aux.codigo=facturas.codfac)




22                                      CURSO 2005-06

Más contenido relacionado

La actualidad más candente

La actualidad más candente (12)

Sql
SqlSql
Sql
 
Capitulo3 sql consultas
Capitulo3 sql consultasCapitulo3 sql consultas
Capitulo3 sql consultas
 
Subconsultas
SubconsultasSubconsultas
Subconsultas
 
SELECT BASICO _
SELECT BASICO _  SELECT BASICO _
SELECT BASICO _
 
Fundamentos sql
Fundamentos sqlFundamentos sql
Fundamentos sql
 
Introducción a Sql
Introducción a SqlIntroducción a Sql
Introducción a Sql
 
Sql Setencias
Sql SetenciasSql Setencias
Sql Setencias
 
SETENCIAS SQL
SETENCIAS SQLSETENCIAS SQL
SETENCIAS SQL
 
Funciones de grupo
Funciones de grupoFunciones de grupo
Funciones de grupo
 
Subconsultas
SubconsultasSubconsultas
Subconsultas
 
Eeeeeeeeeeeeeeeeeeeeeeeeeeeeee
EeeeeeeeeeeeeeeeeeeeeeeeeeeeeeEeeeeeeeeeeeeeeeeeeeeeeeeeeeee
Eeeeeeeeeeeeeeeeeeeeeeeeeeeeee
 
Curso SQL - Leccion 2
Curso SQL - Leccion 2Curso SQL - Leccion 2
Curso SQL - Leccion 2
 

Similar a 0506 Sql Subconsultas (20)

Subconsultas
SubconsultasSubconsultas
Subconsultas
 
Subconsultas
SubconsultasSubconsultas
Subconsultas
 
Subconsultas
SubconsultasSubconsultas
Subconsultas
 
Subconsultas
SubconsultasSubconsultas
Subconsultas
 
Subconsultas tecnica de archivos
Subconsultas tecnica de archivosSubconsultas tecnica de archivos
Subconsultas tecnica de archivos
 
BD_L8_EXP_ROZIC_CAP9_SQL
BD_L8_EXP_ROZIC_CAP9_SQLBD_L8_EXP_ROZIC_CAP9_SQL
BD_L8_EXP_ROZIC_CAP9_SQL
 
Subconsultas
SubconsultasSubconsultas
Subconsultas
 
Subconsultas
SubconsultasSubconsultas
Subconsultas
 
Sub consultas
Sub consultasSub consultas
Sub consultas
 
Consultas sql
Consultas sqlConsultas sql
Consultas sql
 
Consultas sql
Consultas sqlConsultas sql
Consultas sql
 
Sql basico parte_i_
Sql basico parte_i_Sql basico parte_i_
Sql basico parte_i_
 
Yersin manuel hernandez mendoza
Yersin manuel hernandez mendozaYersin manuel hernandez mendoza
Yersin manuel hernandez mendoza
 
Bdii 06 func_grupo_y_subconsultas
Bdii 06 func_grupo_y_subconsultasBdii 06 func_grupo_y_subconsultas
Bdii 06 func_grupo_y_subconsultas
 
Cursores
CursoresCursores
Cursores
 
Operaciones basicas de sql
Operaciones basicas de sqlOperaciones basicas de sql
Operaciones basicas de sql
 
Consultas SQL
Consultas SQLConsultas SQL
Consultas SQL
 
Sql basico parte_i_
Sql basico parte_i_Sql basico parte_i_
Sql basico parte_i_
 
Clase 3 El lenguaje DML de SQL
Clase 3 El lenguaje DML de SQLClase 3 El lenguaje DML de SQL
Clase 3 El lenguaje DML de SQL
 
Consultas sql 2014
Consultas sql 2014Consultas sql 2014
Consultas sql 2014
 

Último

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 

Último (13)

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 

0506 Sql Subconsultas

  • 1. S QL SUBCONSULTAS Subconsultas Definición y clasificaciones Donde emplearlas Condiciones de comparación y subconsultas Ejemplos Definición y clasificaciones Una subconsulta es una instrucción SQL llamada desde otra instrucción o desde otra subconsulta. Las subconsultas pueden devolver varios conjuntos de resultados, pudiéndose clasificar basándose en estos conjuntos como: Una fila/una columna Múltiples filas/una única columna Múltiples columnas/una única o múltiples filas Una subconsulta puede tener un formato regular o correlacionado. Subconsulta regular. Un consulta contenida dentro de otra sin que haya relación entre ambas. Subconsulta correlacionadas: Correlacionado implica una conexión entre la consulta –o subconsulta- que invoca la subconsulta y la propia subconsulta. Hay que tener en cuenta, que la columna correlacionada puede ser pasada de la consulta superior (la externa) a la inferior (la subconsulta interna) y NO al revés. La subconsulta correlacionada depende siempre de la consulta externa. Las subconsultas pueden definirse también como anidadas o vistas en línea. Subconsulta anidada: Las subconsultas pueden llamar a otras subconsultas, y estas a su vez a otras, así sucesivamente, sin limitación. Subconsulta vista en línea: Es una subconsulta embebida dentro de la cláusula FROM de la instrucción SELECT que invoca la subconsulta. Las subconsultas pueden pertenecer a la combinación de varios tipos de clasificaciones. Donde emplearlas Las subconsultas pueden emplearse en casi todas las instrucciones SQL, en cualquier comando SQL donde se pueda emplear una expresión. El siguiente listado muestra las instrucciones SQL donde puede emplearse una subconsulta: Cláusula SELECT Cláusula WHERE Cláusula ORDER BY Cláusula FROM (vista en línea) CURSO 2005-06 19
  • 2. S QL SUBCONSULTAS Cláusula VALUES de la instrucción INSERT Cláusula SET de la instrucción UPDATE Condiciones de comparación y subconsultas Las subconsultas pueden aplicarse a muchas condiciones de comparación. Dependiendo del tipo de operador que empleemos, estará permitido un tipo de subconsulta u otro, en función del tipo de resultados que esta devuelva. SIMPLE (subconsulta) {= | != } (subconsulta) LIKE (subconsulta) LIKE (subconsulta) PERTENENCIA (subconsulta)[NOT] IN (subconsulta) EXISTENCIA [NOT] EXIST (subconsulta) RANGO (subconsulta) BETWEEN (subconsulta) AND (subconsulta) AGRUPACIÓN (subconsulta) {= | != | > | < | >= | <= } {ANY | SOME | ALL} (subconsulta) Los operadores marcados, requieren subconsultas que devuelvan una única fila, como son la igualdad/desigualdad, los operadores de comparación (<,>,>=,<=), así como los operadores LIKE y BETWEEN. El resto de operadores permiten como resultado de la subconsulta múltiples filas: IN, NOT IN, EXIST, NOT EXIST, además de los operadores de comparación combinados con ANY, SOME o ALL. Una subconsulta en si misma, es generalmente equivalente sintácticamente a una instrucción SELECT. Ejemplos: A continuación vamos a ver unos ejemplos de subconsultas: Subconsultas de una única fila: Es una subconsulta que devuelve como resultado una única fila. Ejemplo: SELECT * FROM estudiantes WHERE población= (SELECT población FROM estudiantes WHERE dni=’33445667’); Subconsultas de una múltiples filas: Son subconsultas que devuelven como resultado múltiples filas. Es importante tener en cuenta que pueden no devolver ninguna fila, y que el conjunto vacío es un resultado válido en la pertenencia, existencia o condiciones de agrupación de comparación. 20 CURSO 2005-06
  • 3. S QL SUBCONSULTAS Ejemplos: SELECT * FROM profesores WHERE población IN (SELECT población FROM estudiantes WHERE edad>25); SELECT * FROM estudiantes WHERE edad > ALL (SELECT edad FROM profesores WHERE dpto=’Matemáticas’); Subconsultas de múltiples columnas: Una subconsulta de múltiples columnas, puede devolver una única o múltiples filas. Devuelve más de una columna para cada fila. Suele emplearse para validar un conjunto de columnas con otro en la cláusula WHERE, o como vista en línea en la cláusula FROM. Ejemplos: SELECT * FROM profesores WHERE (nombre, apellidos) IN (SELECT nombre, apellidos FROM estudiantes WHERE edad>25); SELECT E.nia, nombre, apellidos, media FROM estudiantes E, (SELECT nia, AVG(nota) MEDIA FROM suspendidos GROUP BY nia HAVING AVG(nota)<3) SUSP3 WHERE E.nia=SUSP3.nia; CREATE TABLE medias AS (SELECT dni, AVG(notas) media FROM estudiantes GROUP BY dni); Subconsultas correlacionadas: Las subconsultas correlacionadas permiten la correlación o coincidencia de valores entre las columnas de la consulta externa y la subconsulta. La consulta externa puede pasar el valor de una columna a la subconsulta, no siendo posible al revés. Las consultas se van ejecutando de izquierda a derecha y de arriba abajo. Las subconsultas internas se ejecutan antes que las invoquen las externas. Ejemplo: SELECT nombre FROM estudiante E WHERE ‘01/01/02’ > ALL (SELECT fecha_matricula FROM asigunaturas A WHERE A.nia=E.nia); CURSO 2005-06 21
  • 4. S QL SUBCONSULTAS Subconsultas anidadas: Una subconsulta anidada es una subconsulta embebida dentro de otra subconsulta. Ejemplo: SELECT nombre, apellidos FROM estudiante E WHERE nia IN (SELECT nia FROM matricula WHERE codasig IN (SELECT codasig FROM asignaturas GROUP BY codasig HAVING COUNT(DISTINCT nia)>100)); Subconsultas vista en línea: Una subconsultas llamada vista en línea, es una subconsulta embebida en la cláusula FROM de una instrucción SELECT, como si de una tabla o vista se tratara. Ejemplos: SELECT E.nia, nombre, apellidos, Num_asig “Número asignaturas” FROM estudiante E, (SELECT nia, count(*) Num_asig FROM matricula GROUP BY nia HAVING COUNT(*)>10) AUX WHERE E.nia=AUX.nia; UPDATE facturas SET total=(SELECT importe FROM (SELECT Fac.codfac codigo, total_fac+total_fac*iva/100-total_fac*dto/100 Importe FROM facturas Fac, (SELECT F.codfac, SUM(L.subtotal) Total_Fac FROM facturas F, (SELECT codfac, (precio*cant)-(precio*cant*dto/100) Subtotal FROM lineas_fac) L WHERE F.codfac=L.codfac GROUP BY F.codfac) Fac_Tot WHERE Fac.codfac=Fac_Tot.codfac) AUX WHERE Aux.codigo=facturas.codfac) 22 CURSO 2005-06