Consulta y Extracción de Datos en Bases de Datos SQL
Clase 24 de 24 • Curso de Fundamentos de Bases de Datos
Resumen
¿Estás comenzando con bases de datos y deseas saber cómo consultar información útil de varias tablas en MySQL? Aprender a relacionar tablas correctamente te permite obtener información valiosa y tomar mejores decisiones basadas en datos reales.
¿Qué tablas son importantes en nuestro proyecto?
Al trabajar con bases de datos relacionales en MySQL, las tablas son fundamentales. En este ejemplo se manejan cuatro tablas clave:
- bills: la tabla principal que registra cuentas y estados de pago.
- clients: identifica quién hace la compra, relacionada mediante el campo ClientID.
- bill products: conecta cada factura con productos específicos adquiridos.
- products: contiene detalles como nombre y precio actual de los productos.
Cada tabla tiene relaciones específicas que facilitan extraer información concreta.
¿Cómo construir consultas efectivas utilizando joins?
Construir consultas SQL usando joins permite reunir datos relevantes de múltiples tablas. Aquí tienes cómo realizarlo paso a paso:
¿Cómo obtener una lista de facturas con datos esenciales?
Se inicia una consulta básica con la tabla principal:
SELECT
bill.billID,
bill.status,
clients.name
FROM bills AS bill
LEFT JOIN clients AS clients ON bill.clientID = clients.clientID;
Este tipo de consulta devuelve datos esenciales: número de cuenta, estado y nombre del cliente vinculado.
¿Cómo contar productos vendidos por factura?
La consulta se puede ampliar para contar cuántos productos se compraron en cada factura:
SELECT
bill.billID,
bill.status,
clients.name,
COUNT(bp.billproductID) AS number_of_products
FROM bills AS bill
LEFT JOIN clients AS clients ON bill.clientID = clients.clientID
LEFT JOIN billproducts AS bp ON bp.billID = bill.billID
GROUP BY bill.billID;
Esta modificación utiliza count() para conocer exactamente cuántos productos tiene cada factura.
¿Cómo calcular el monto final de una factura incluyendo descuentos?
Para tener un detalle más profundo y considerar descuentos, se agrega otro join hacia la tabla products para obtener precios actuales:
SELECT
bill.billID,
bill.status,
clients.name,
COUNT(bp.billproductID) AS number_of_products,
ROUND(SUM(bp.quantity * product.price * (1 - bp.discount / 100)), 2) AS total
FROM bills AS bill
LEFT JOIN clients AS clients ON bill.clientID = clients.clientID
LEFT JOIN billproducts AS bp ON bp.billID = bill.billID
LEFT JOIN products AS product ON bp.productID = product.productID
GROUP BY bill.billID;
Con esta consulta, obtienes automáticamente un resumen detallado de compras con el monto total que incluye descuentos aplicados.
¿Por qué es útil concatenar resultados en consultas SQL?
Si deseas que tu reporte sea fácilmente legible, concatenar valores en texto es una excelente opción:
SELECT
CONCAT(clients.name, ' tiene una cuenta ', bill.status, ' con ', COUNT(bp.billproductID), ' productos y suma ', ROUND(SUM(bp.quantity * product.price * (1 - bp.discount / 100)), 2)) AS resultado
FROM bills AS bill
LEFT JOIN clients AS clients ON bill.clientID = clients.clientID
LEFT JOIN billproducts AS bp ON bp.billID = bill.billID
LEFT JOIN products AS product ON bp.productID = product.productID
GROUP BY bill.billID;
Esto genera frases claras que resumen fácilmente la información de negocios.
¿Cuál es el valor real de saber usar bases de datos?
Entender bases de datos y la manera correcta de aprovechar su potencial, ayuda enormemente a desarrolladores y científicos de datos a obtener valor real, tomar decisiones fundamentadas y definir estrategias sólidas basadas en evidencias. Una base de datos cuidadosamente estructurada no solo facilita el acceso rápido a información precisa, también aporta flexibilidad y crecimiento sostenible en el futuro.
¿Te ha resultado útil esta guía sobre consultas SQL? ¡Comparte tus ideas y experiencias sobre bases de datos en los comentarios!