¿Qué son las subconsultas?
Una subconsulta es una consulta de selección que está contenida dentro de otra consulta. La consulta de selección interna se usa generalmente para determinar los resultados de la consulta de selección externa.
Veamos la sintaxis de la subconsulta:
Una queja común de los clientes en la biblioteca de videos MyFlix es el bajo número de títulos de películas. La dirección quiere comprar películas para una categoría que tenga el menor número de títulos.
Puedes usar una consulta como
SELECT category_name FROM categories WHERE category_id =( SELECT MIN(category_id) from movies);
Da un resultado
Veamos cómo funciona esta consulta.
Lo anterior es una forma de subconsulta de fila . En tales subconsultas, la consulta interna solo puede dar UN resultado. Los operadores permitidos cuando se trabaja con subconsultas de filas son [=,>, =, <=,,! =,]
Veamos otro ejemplo,
Suponga que desea nombres y números de teléfono de miembros de personas que han alquilado una película y aún no la han devuelto. Una vez que obtenga los nombres y el número de teléfono, los llame para recordarles. Puedes usar una consulta como
SELECT full_names,contact_number FROM members WHERE membership_number IN (SELECT membership_number FROM movierentals WHERE return_date IS NULL );
Veamos cómo funciona esta consulta.
En este caso, la consulta interna devuelve más de un resultado. Lo anterior es un tipo de subpregunta de tabla .
¡Hasta ahora hemos visto dos consultas, veamos ahora un ejemplo de consulta triple !
Suponga que la gerencia quiere recompensar al miembro que paga más.
Podemos ejecutar una consulta como
Select full_names From members WHERE membership_number = (SELECT membership_number FROM payments WHERE amount_paid = (SELECT MAX(amount_paid) FROM payments));
La consulta anterior da el siguiente resultado:
Subconsultas Vs Uniones!
En comparación con Joins, las subconsultas son fáciles de usar y de leer. No son tan complicados como Joins
Por lo tanto, los principiantes de SQL los utilizan con frecuencia.
Pero las subconsultas tienen problemas de rendimiento. El uso de una combinación en lugar de una subconsulta puede, en ocasiones, aumentar el rendimiento hasta 500 veces.
Dada la opción, se recomienda utilizar JOIN sobre una subconsulta.
Las subconsultas solo deben usarse como una solución alternativa cuando no puede usar una operación JOIN para lograr lo anterior
Resumen
- Las subconsultas son consultas incrustadas dentro de otra consulta. La consulta incrustada se conoce como consulta interna y la consulta de contenedor se conoce como consulta externa.
- Las subconsultas son fáciles de usar, ofrecen una gran flexibilidad y se pueden dividir fácilmente en componentes lógicos individuales que componen la consulta, lo cual es muy útil al probar y depurar las consultas.
- MySQL admite tres tipos de subconsultas, subconsultas escalares, de fila y de tabla.
- Las subconsultas escalares solo devuelven una sola fila y una sola columna.
- Las subconsultas de fila solo devuelven una sola fila, pero pueden tener más de una columna.
- Las subconsultas de tabla pueden devolver múltiples filas y columnas.
- Las subconsultas también se pueden utilizar en las consultas INSERT, UPDATE y DELETE.
- Para problemas de rendimiento, cuando se trata de obtener datos de varias tablas, se recomienda encarecidamente utilizar JOIN en lugar de subconsultas. Las subconsultas solo deben usarse con una buena razón.