Subconsultas SQL

Última actualización el 26 de febrero de 2020 08:07:42 (UTC / GMT +8 horas)

¿Qué es una subconsulta en SQL?

Una subconsulta es una consulta SQL anidada dentro de una consulta más grande.

  • Una subconsulta puede ocurrir en:
    • – Una cláusula SELECT
    • – Una cláusula FROM
    • : una cláusula WHERE
  • La subconsulta se puede anidar dentro de una instrucción SELECT, INSERT, UPDATE o DELETE o dentro de otra subconsulta.
  • Generalmente se agrega una subconsulta dentro de la cláusula WHERE de otra instrucción SQL SELECT.
  • Puede usar los operadores de comparación, como >, < o =. El operador de comparación también puede ser un operador de varias filas, como IN, ANY o ALL.
  • Una subconsulta también se denomina consulta interna o selección interna, mientras que la declaración que contiene una subconsulta también se denomina consulta externa o selección externa.
  • La consulta interna se ejecuta primero antes que su consulta principal para que los resultados de una consulta interna se puedan pasar a la consulta externa.

Usted puede usar una subconsulta en una instrucción SELECT, INSERT, DELETE o UPDATE para realizar las siguientes tareas:

  • Comparar una expresión con el resultado de la consulta.
  • Determinar si se incluye una expresión en los resultados de la consulta.
  • Compruebe si la consulta selecciona alguna fila.

Sintaxis:

  • La subconsulta (consulta interna) se ejecuta una vez antes de que se ejecute la consulta principal (consulta externa).
  • La consulta principal (consulta externa) usa el resultado de la subconsulta.

Ejemplo de subconsultas SQL:

En esta sección, aprenderá los requisitos para usar subconsultas. Tenemos las siguientes dos tablas «estudiante» y «marcas» con el campo común «StudentID».



notas de los estudiantes

Ahora queremos escribir una consulta para identificar a todos los estudiantes que obtienen mejores notas que la del estudiante cuyo StudentID es «V002», pero no conocemos las notas de «V002».
– Para resolver el problema, necesitamos dos consultas. Una consulta devuelve las marcas (almacenadas en el campo Total_marks) de «V002» y una segunda consulta identifica a los estudiantes que obtienen mejores calificaciones que el resultado de la primera consulta.

Primera consulta:

Resultado de la consulta:

El resultado de la consulta es 80.
-Usando el resultado de esta consulta, aquí hemos escrito otra consulta para identificar a los estudiantes que obtienen mejores notas que 80. Aquí está la consulta:

Segunda consulta:

Resultado de la consulta:

Dos consultas anteriores estudiantes identificados que obtienen t El número mejor que el del estudiante cuyo StudentID es «V002» (Abhay).

Puede combinar las dos consultas anteriores colocando una consulta dentro de la otra. La subconsulta (también llamada «consulta interna») es la consulta entre paréntesis. Vea el siguiente código y el resultado de la consulta:

Código SQL:

Resultado de la consulta:

Presentación ilustrada de la subconsulta SQL:

Subconsultas: reglas generales

Una instrucción SELECT de subconsulta es casi similar a la instrucción SELECT y se usa para comenzar una consulta regular o externa. Aquí está la sintaxis de una subconsulta:

Sintaxis:

Subconsultas: Pautas

Hay algunas pautas a considerar al usar subconsultas:

  • Una subconsulta debe estar entre paréntesis.
  • Se debe colocar una subconsulta en el lado derecho del operador de comparación.
  • Las subconsultas no pueden manipular sus resultados internamente, por lo tanto, la cláusula ORDER BY no se puede agregar a una subconsulta. Puede usar una cláusula ORDER BY en la declaración principal SELECT (consulta externa) que será la última cláusula.
  • Utilice operadores de una sola fila con subconsultas de una sola fila.
  • Si una subconsulta (consulta interna) devuelve un valor nulo a la consulta externa, la consulta externa no devolverá ninguna fila al usar ciertos operadores de comparación en una cláusula WHERE.

Tipo de subconsultas

  • Subconsulta de una sola fila: Devuelve cero o una fila.
  • Subconsulta de varias filas: devuelve una o más filas.
  • Subconsultas de varias columnas: devuelve una o más columnas.
  • Subconsultas correlacionadas: haga referencia a una o más columnas en la declaración SQL externa. La subconsulta se conoce como subconsulta correlacionada porque la subconsulta está relacionada con la sentencia SQL externa.
  • Subconsultas anidadas: las subconsultas se colocan dentro de otra subconsulta.

En la próxima sesión, discutimos en profundidad los temas anteriores. Además del tipo de subconsultas anterior, puede utilizar una subconsulta dentro de la instrucción INSERT, UPDATE y DELETE. Aquí hay una breve discusión:

Subconsultas con instrucción INSERT

La instrucción INSERT puede usarse con subconsultas.Aquí está la sintaxis y un ejemplo de subconsultas usando la instrucción INSERT.

Sintaxis:

INSERT INTO table_name ) ]SELECT FROM table1 ;

Si queremos insertar esos pedidos de » pedidos «que tienen el Advance_amount 2000 o 5000 en la tabla» neworder «se puede utilizar el siguiente SQL:

Tabla de muestra: pedidos

Código SQL:

Salida:

Para ver más detalles de las subconsultas que utilizan la instrucción INSERT haga clic aquí.

Subconsultas con instrucción UPDATE

En una instrucción UPDATE, puede establecer un nuevo valor de columna igual al resultado devuelto por una subconsulta de una sola fila. Aquí está la sintaxis y un ejemplo de subconsultas usando la instrucción UPDATE.

Sintaxis:

UPDATE table SET column_name = new_value(SELECT COLUMN_NAMEFROM TABLE_NAME) 

Si queremos actualizar ese ord_date en » neworder «tabla con» 15-JAN-10 «que tienen la diferencia de ord_amount y advance_amount es menor que el mínimo ord_amount de la tabla» orders «se puede usar el siguiente SQL:

Tabla de muestra: neworder

Código SQL:

Salida:

Para ver más detalles de las subconsultas usando la instrucción UPDATE, haga clic aquí.

Subconsultas con instrucción DELETE

La instrucción DELETE se puede utilizar con subconsultas. Aquí está la sintaxis y un ejemplo de subconsultas usando la instrucción DELETE.

Sintaxis:

DELETE FROM TABLE_NAME(SELECT COLUMN_NAME FROM TABLE_NAME) 

Si queremos eliminar esos pedidos de la tabla «neworder» cuyo importe_avance es menor que el importe_avance máximo de » pedidos «, se puede utilizar el siguiente SQL:

Tabla de ejemplo: nuevo orden

Código SQL:

Salida:

Para ver más detalles de las subconsultas usando la instrucción DELETE, haga clic aquí.

¿Qué sigue?

  • Subconsultas SQL – Presentación de diapositivas
  • Subconsultas de una sola fila
  • Subconsultas de varias filas y columnas
  • Subconsultas correlacionadas usando alias
  • Subconsultas anidadas

Nota: Los resultados de dicha declaración SQL que se muestra aquí se toman utilizando Oracle Database 10g Express Edition.

Ejercicios de práctica de SQL

  • Ejercicios de SQL, práctica, solución
  • SQL Recuperar datos de tablas
  • Operadores booleanos y relacionales de SQL
  • Operadores especiales y comodín de SQL
  • Agregado de SQL Funciones
  • Salida de consultas de formato SQL
  • Consultas SQL en varias tablas
  • FILTRADO y CLASIFICACIÓN en la base de datos de recursos humanos
  • UNIONES SQL
    • SQL JOINS
    • SQL JOINS en HR Database
  • SQL SUBQUERIES
    • SQL SUBQUERIES
    • SUBQUERIES SQL en la base de datos de recursos humanos
  • Unión SQL
  • Vista SQL
  • Administración de cuentas de usuario SQL
  • Base de datos de películas
    • Consultas BÁSICAS en la base de datos de películas
    • SUBQUERIES en la base de datos de películas
    • UNE a la base de datos de películas
  • Soccer Database
    • Introducción
    • Consultas BÁSICAS en la base de datos de fútbol
    • SUBQUERIES en la base de datos de fútbol
    • UNE consultas sobre Base de datos de fútbol
  • Base de datos hospitalaria
    • Introducción
    • BÁSICA, SUBQUERIES y UNIONES
  • Base de datos de empleados
    • Consultas BÁSICAS sobre la base de datos de empleados
    • SUBQUERIES en la base de datos de empleados
  • ¡Más por venir!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *