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