Ocho pedidos hoy, ocho mil mañana
Trabajas en atención al cliente de Café Turia, una tienda online de café de Valencia.
Tu responsable te pide los pedidos pendientes para llamar a esos clientes. Hoy hay ocho pedidos y podrías mirarlos uno a uno. En diciembre habrá miles. Necesitas pedir a la base de datos solo las filas que te interesan.
Al final de esta lección
Nota
Puedo encontrar con SQL las filas que cumplen una condición.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Tabla | datos guardados en filas y columnas | |
| Fila | un registro completo, como un pedido | |
| Columna | un dato que tiene cada fila | amount |
| Consulta | una pregunta que haces a la base de datos | |
| SQL | el lenguaje para escribir consultas | |
| Condición | una prueba que cada fila pasa o no pasa | status = 'pagado' |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
SELECT elige las columnas
Una consulta empieza casi siempre por SELECT. Detrás pones las columnas que quieres ver.
FROM dice de qué tabla salen. El asterisco * significa todas las columnas.
En la empresa, los nombres de tablas y columnas suelen ir en inglés. Así los lee cualquier equipo, también uno de otro país. Por eso aquí verás orders y amount.
Prueba: elegir columnas
-- Todas las columnas de todos los pedidos.
SELECT * FROM orders;
-- Solo el cliente y el importe.
SELECT customer, amount FROM orders;
-- Añade la columna city a la segunda consulta y vuelve a ejecutar.
WHERE elige las filas
WHERE va después de FROM y lleva una condición.
La base de datos prueba la condición en cada fila. Se queda con las filas que la cumplen y descarta el resto.
Un texto se escribe entre comillas simples: 'pagado'. Un número va sin comillas: amount > 50. Puedes usar =, >, <, >= y <=.
Prueba: solo los pedidos pagados
-- Solo los pedidos pagados.
-- El texto va entre comillas simples.
SELECT id, customer, amount
FROM orders
WHERE status = 'pagado';
-- Cambia 'pagado' por 'pendiente' y vuelve a ejecutar.
Ejemplo: la condición fila a fila
| Pedido | Importe | ¿amount > 50? | Resultado |
|---|---|---|---|
| 1 | 42 € | No | Se descarta |
| 3 | 75 € | Sí | Se queda |
| 4 | 120 € | Sí | Se queda |
| 5 | 33 € | No | Se descarta |
| 6 | 64 € | Sí | Se queda |
| 8 | 58 € | Sí | Se queda |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
AND y OR juntan dos condiciones
Con AND, la fila tiene que cumplir las dos condiciones.
Con OR, basta con que cumpla una de ellas.
Ejecuta el bloque siguiente y compara los dos resultados. La primera consulta da menos filas, porque pide más.
Prueba: dos condiciones a la vez
-- Pedidos de Valencia de más de 50 euros.
SELECT id, customer, amount
FROM orders
WHERE city = 'Valencia' AND amount > 50;
-- Ahora los pedidos de Madrid o de Bilbao.
SELECT id, customer, city
FROM orders
WHERE city = 'Madrid' OR city = 'Bilbao';
Un error frecuente
Advertencia
Mucha gente piensa que «Madrid y Bilbao» se escribe con AND. No es así. Ningún pedido tiene dos ciudades a la vez, así que AND devuelve cero filas. Si quieres las filas de una ciudad o de la otra, usa OR.