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: cláusula WHERE , cláusula HAVING , cláusula FROM. Las subconsultas se pueden usar 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 denomina consulta principal y la consulta interna se denomina subconsulta .
  • La subconsulta generalmente se ejecuta primero cuando la subconsulta no tiene ninguna correlación con la consulta principal , cuando hay una correlación, el analizador toma la decisión sobre la marcha sobre qué consulta ejecutar en precedencia y usa la salida de la subconsulta respectivamente.
  • La subconsulta debe estar entre paréntesis.
  • Las subconsultas están en el lado derecho del operador de comparación.
  • El comando ORDER BY no se puede utilizar en una subconsulta. El comando GROUPBY 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 hay ninguna sintaxis general para Subconsultas. Sin embargo, se ve que las subconsultas se usan 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 ROLLO_NO UBICACIÓN NÚMERO DE TELÉFONO
RAM 101 Chennai 9988775566
Raj 102 coimbatore 8877665544
sasi 103 Madurai 7766553344
Ravi 104 Salem 8989898989
sumathi 105 Kanchipuram 8989856868

ALUMNO

NOMBRE ROLLO_NO SECCIÓN
Ravi 104 A
sumathi 105 B
Raj 102 A

Consultas de muestra

:

  • Para mostrar NOMBRE, UBICACIÓN, NÚMERO_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 from STUDENT where SECTION=’A’ » devuelve ROLL_NO de la tabla STUDENT cuya SECCIÓN es ‘A’. Luego, la consulta externa la ejecuta y devuelve el NOMBRE, UBICACIÓN, NÚMERO_TELÉFONO de la tabla BASE DE DATOS del estudiante cuyo ROLL_NO se devuelve desde la subconsulta interna. Producción:
NOMBRE ROLLO_NO UBICACIÓN NÚMERO DE TELÉFONO
Ravi 104 Salem 8989898989
Raj 102 coimbatore 8877665544
  • Insertar ejemplo de consulta:

Tabla1: Estudiante1

NOMBRE ROLLO_NO UBICACIÓN NÚMERO DE TELÉFONO  
RAM 101 Chennai 9988773344  
Raju 102 Coimbatore 9090909090  
Ravi 103 salem 8989898989  

Tabla2: Estudiante2

NOMBRE ROLLO_NO UBICACIÓN NÚMERO DE TELÉFONO  
Raj 111 Chennai 8787878787  
Sai 112 Bombay 6565656565  
Sri 113 Coimbatore 7878787878  
  • Para insertar Student2 en la tabla Student1:
INSERT INTO Student1  SELECT * FROM Student2;
  • Producción:
NOMBRE ROLLO_NO UBICACIÓN NÚMERO DE TELÉFONO  
RAM 101 Chennai 9988773344  
Raju 102 Coimbatore 9090909090  
Ravi 103 salem 8989898989  
Raj 111 Chennai 8787878787  
Sai 112 Bombay 6565656565  
Sri 113 Coimbatore 7878787878  
  • Para eliminar estudiantes de la tabla Student2 cuyo número de registro sea el mismo que el de la tabla Student1 y tenga una ubicación como 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 ROLLO_NO UBICACIÓN NÚMERO DE TELÉFONO  
Sai 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 ROLLO_NO UBICACIÓN NÚMERO DE TELÉFONO  
Sai 112 Bombay 6565656565  
frikis 113 Coimbatore 7878787878  

Este artículo es una contribución de RanjaniRavi . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Categories SQL

Deja una respuesta

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