¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Pedir las filas que necesitas

Después de esta lección: Puedo pedir a una base de datos las filas que necesito.

Lección de 55 min10 comandosLaboratorio de MySQL y phpMyAdmin con una base de datos de una tienda para practicar SQL

¿Qué portátiles están fuera de garantía?

Al servicio de soporte de una empresa le hacen una pregunta sencilla. ¿Qué portátiles se compraron antes de 2023 y quién los tiene?

En una hoja de cálculo tendrías que recorrer la lista fila a fila. Una base de datos responde en un instante.

Solo tienes que hacer la pregunta de una forma que entienda.

Al terminar esta lección

Nota

Puedo pedir a una base de datos las filas que necesito.

Palabras clave

PalabraQué significaEjemplo
Consultauna pregunta que haces a una base de datos en SQL
Cláusulauna parte de la consulta, que empieza con una palabra claveWHERE
Condiciónuna prueba que cada fila supera o noprice < 30
Resultadolas filas que devuelve una consulta
Comodínun símbolo de un patrón que vale por cualquier texto%
NULLla marca de un valor que falta

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

WHERE se queda con las filas que cumplen

Una consulta empieza con SELECT, que nombra las columnas. FROM nombra la tabla.

WHERE añade una condición. Una fila solo entra en el resultado si la cumple. Une condiciones con AND y OR.

El texto va entre comillas simples. Los números, sin comillas.

Ejecuta primero las dos líneas de preparación. Ya las usaste en la lección anterior, y repetirlas no hace daño.

Aceptar el certificado del servidor

Comando
printf '[client]\nssl-verify-server-cert=0\n' > ~/.my.cnf

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un nombre corto para la tienda

Comando
alias sql='mariadb -h db -u student -pstudent shop -t -e'

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Buscar por un texto

Comando
sql "SELECT first_name, city FROM customers WHERE country = 'France' ORDER BY city, first_name"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Dos condiciones a la vez

Comando
sql "SELECT name, price FROM products WHERE category_id = 4 AND price < 30 ORDER BY price"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ejemplo resuelto: las pruebas que puedes usar

PruebaSignificaEjemplo
= <>Igual, distintocountry = 'Spain'
< <= > >=Menor o mayorprice < 30
BETWEENDentro de un rango, extremos incluidosstock BETWEEN 5 AND 10
LIKECoincide con un patrón, % es cualquier textoname LIKE '%Set%'
IS NULLFalta el valorphone IS NULL

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Buscar nombres con un patrón

Comando
sql "SELECT name FROM products WHERE name LIKE '%Set%' ORDER BY name"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Existencias entre 5 y 10

Comando
sql "SELECT name, stock FROM products WHERE stock BETWEEN 5 AND 10 ORDER BY stock, name"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

NULL es un valor que falta

Algunos clientes no tienen teléfono. La columna guarda NULL: una marca que dice que no se sabe nada.

NULL no es igual a nada, ni siquiera a otro NULL. Por eso = NULL nunca encuentra ninguna fila.

Pregunta con IS NULL. Ejecuta las dos formas y compáralas.

Contar clientes sin teléfono

Comando
sql "SELECT COUNT(*) AS no_phone FROM customers WHERE phone IS NULL"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

La misma pregunta, mal escrita

Comando
sql "SELECT COUNT(*) AS no_phone FROM customers WHERE phone = NULL"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un error frecuente

Advertencia

Mucha gente cree que phone = NULL encuentra los teléfonos que faltan. No encuentra ninguno, y no avisa. Un valor que falta no es igual a nada. Escribe siempre IS NULL o IS NOT NULL.

ORDER BY y LIMIT dan forma al resultado

Una tabla no tiene un orden fijo. Si el orden importa, pídelo con ORDER BY. DESC pone primero lo mayor.

LIMIT 3 se queda con las tres primeras filas del resultado. OFFSET 2 se salta antes dos filas.

Usa LIMIT junto con ORDER BY. Sin orden, "las tres primeras" no significa nada.

Los tres productos más baratos

Comando
sql "SELECT name, price FROM products ORDER BY price LIMIT 3"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Saltar dos y tomar dos

Comando
sql "SELECT name, price FROM products ORDER BY price DESC LIMIT 2 OFFSET 2"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ejemplo resuelto: cómo se lee una consulta

PasoCláusulaQué hace la base
1FROMElige la tabla
2WHEREDescarta las filas que no pasan la prueba
3SELECTDeja solo las columnas que nombraste
4ORDER BYPone las filas en orden
5LIMITRecorta la lista al tamaño pedido

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Pruébalo: portátiles por departamento

Código: sql
-- Portátiles de Legal o de Diseño.
SELECT tag, model, dept FROM laptops
WHERE dept = 'Legal' OR dept = 'Diseño';
-- Cámbialo para buscar los comprados en 2024 o después.

Pruébalo: los portátiles más caros

Código: sql
-- Los tres portátiles más caros, el más caro primero.
SELECT tag, price FROM laptops
ORDER BY price DESC
LIMIT 3;
-- Cambia DESC por ASC y ejecútalo otra vez.

Para ir más allá

La web de la tienda muestra los productos de cinco en cinco, del más barato al más caro. Escribe la consulta de la tercera página con LIMIT y OFFSET.

Dos productos de la tienda cuestan lo mismo, 19,99. Explica por qué esos dos podrían cambiar de sitio entre dos ejecuciones de la consulta. Después añade una segunda columna al ORDER BY para que el orden sea siempre el mismo.

Sobre este laboratorio y su código: Laboratorio de MySQL y phpMyAdmin con una base de datos de una tienda para practicar SQL

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.