logo

SQL | Subconsulta

En SQL, una subconsulta se puede definir simplemente como una consulta dentro de otra consulta. En otras palabras podemos decir que una Subconsulta es una consulta que está incrustada en la cláusula WHERE de otra consulta SQL. Reglas importantes para subconsultas:

  • Puede colocar la subconsulta en varias cláusulas SQL: DÓNDE cláusula, cláusula HAVING, cláusula FROM. Las subconsultas se pueden utilizar con declaraciones SELECT, UPDATE, INSERT, DELETE junto con el operador de expresión. Podría ser un operador de igualdad o un operador de comparación como =,>, =, <= y el operador Me gusta.
  • Una subconsulta es una consulta dentro de otra consulta. La consulta externa se llama como consulta principal y la consulta interna se llama como subconsulta .
  • La subconsulta generalmente se ejecuta primero cuando la subconsulta no tiene ningún correlación con el consulta principal , cuando hay una correlación el analizador toma la decisión sobre la marcha en qué consulta ejecutar precedencia y utiliza la salida de la subconsulta en consecuencia.
  • La subconsulta debe estar entre paréntesis.
  • Las subconsultas están en el lado derecho del operador de comparación.
  • ORDENAR POR dominio no puedo ser utilizado en una subconsulta. AGRUPAR POR El comando se puede utilizar para realizar la misma función que el comando ORDER BY.
  • Utilice operadores de una sola fila con subconsultas de una sola fila. Utilice operadores de varias filas con subconsultas de varias filas.

Sintaxis: No existe ninguna sintaxis general para las subconsultas. Sin embargo, se considera que las subconsultas se utilizan con mayor frecuencia con la instrucción SELECT, como se muestra a continuación:

SELECT column_name FROM table_name WHERE column_name expression operator ( SELECT COLUMN_NAME from TABLE_NAME WHERE ... );>

Tabla de muestra :



BASE DE DATOS

NOMBRE ROLL_NO UBICACIÓN NÚMERO DE TELÉFONO
RAM 101 Chennai 9988775566
Raj 102 Coimbatore 8877665544
sasi 103 Madurai 7766553344
Tratamiento 104 Salem 8989898989
sumati 105 Kanchipuram 8989856868

ALUMNO

NOMBRE ROLL_NO SECCIÓN
Tratamiento 104 A
sumati 105 B
Raj 102 A

Consultas de muestra

:

  • Para mostrar NOMBRE, UBICACIÓN, NÚMERO DE TELÉFONO de los estudiantes de la tabla BASE DE DATOS cuya sección es A
Select NAME, LOCATION, PHONE_NUMBER from DATABASE WHERE ROLL_NO IN (SELECT ROLL_NO from STUDENT where SECTION=’A’);>
    Explicación: La primera subconsulta ejecuta SELECT ROLL_NO de ESTUDIANTE donde SECCIÓN = 'A' devuelve ROLL_NO de la tabla ESTUDIANTE cuya SECCIÓN es 'A'. Luego, la consulta externa la ejecuta y devuelve el NOMBRE, UBICACIÓN, NÚMERO DE TELÉFONO de la tabla BASE DE DATOS del estudiante cuyo ROLL_NO se devuelve de la subconsulta interna. Producción:
NOMBRE ROLL_NO UBICACIÓN NÚMERO DE TELÉFONO
Tratamiento 104 Salem 8989898989
Raj 102 Coimbatore 8877665544
  • Insertar ejemplo de consulta:

Tabla1: Estudiante1

NOMBRE ROLL_NO UBICACIÓN NÚMERO DE TELÉFONO
RAM 101 chennai 9988773344
raju 102 coimbatore 9090909090
Tratamiento 103 salem 8989898989

Tabla2: Estudiante2

NOMBRE ROLL_NO UBICACIÓN NÚMERO DE TELÉFONO
Raj 111 chennai 8787878787
Hasta 112 Bombay 6565656565
sri 113 coimbatore 7878787878
  • Para insertar Estudiante2 en la tabla Estudiante1:
INSERT INTO Student1 SELECT * FROM Student2;>
  • Producción:
NOMBRE ROLL_NO UBICACIÓN NÚMERO DE TELÉFONO
RAM 101 chennai 9988773344
raju 102 coimbatore 9090909090
Tratamiento 103 salem 8989898989
Raj 111 chennai 8787878787
Hasta 112 Bombay 6565656565
sri 113 coimbatore 7878787878
  • Para eliminar estudiantes de la tabla Student2 cuyo número de lista sea el mismo que el de la tabla Student1 y que tengan una ubicación en Chennai
DELETE FROM Student2 WHERE ROLL_NO IN ( SELECT ROLL_NO FROM Student1 WHERE LOCATION = ’chennai’);>
  • Producción:
1 row delete successfully.>
    Mostrar tabla Student2:
NOMBRE ROLL_NO UBICACIÓN NÚMERO DE TELÉFONO
Hasta 112 Bombay 6565656565
sri 113 coimbatore 7878787878
  • Para actualizar el nombre de los estudiantes a geeks en la tabla Student2 cuya ubicación es la misma que Raju, Ravi en la tabla Student1
UPDATE Student2 SET NAME=’geeks’ WHERE LOCATION IN ( SELECT LOCATION FROM Student1 WHERE NAME IN (‘Raju’,’Ravi’));>
  • Producción:
1 row updated successfully.>
    Mostrar tabla Student2:
NOMBRE ROLL_NO UBICACIÓN NÚMERO DE TELÉFONO
Hasta 112 Bombay 6565656565
frikis 113 coimbatore 7878787878