El comando SELECT es la pieza central de SQL: te permite extraer datos de tus tablas y convertirlos en información útil para tu negocio. Si trabajas con MySQL, dominar su estructura te abre la puerta a consultas precisas, ordenadas y paginadas que reemplazan el ruido de miles de registros por respuestas concretas.
Lo que viene a continuación es una recorrida por las cláusulas que acompañan al SELECT (FROM, WHERE, ORDER BY, LIMIT), las operaciones aritméticas dentro del query, los alias y la paginación. Todo aplicado a una tabla real de productos con más de 2.300 registros.
¿Cuál es la estructura básica de un SELECT en MySQL?
El SELECT parece complejo, pero más que complicado es extenso. Tiene muchas opciones, y casi todas son opcionales salvo lo mínimo: qué quieres traer y, si aplica, de dónde.
La anatomía general se ve así:
- SELECT: las columnas, variables o expresiones que quieres mostrar.
- FROM: la tabla o tablas de origen.
- WHERE: las condiciones que filtran las filas.
- GROUP BY: agrupa resultados (lo verás con funciones agregadoras).
- HAVING: condiciones que se aplican después del GROUP BY.
- ORDER BY: define el orden de presentación.
- LIMIT: restringe cuántas filas devuelve la consulta.
Si el SELECT es el rey, el WHERE es la corona [3:00]. En consultas como UPDATE o DELETE es crucial; en SELECT evita que llenes la pantalla con miles de filas innecesarias.
¿Qué hace SELECT NOW() en MySQL? Devuelve la fecha y hora actual del servidor. Es útil para confirmar el time zone donde corre tu base de datos, sobre todo si trabajas en consola sin un viewer que te muestre esa información.
¿Cómo elijo solo las columnas que necesito?
Un SELECT * FROM products sobre una tabla con 2.358 registros te devuelve demasiada información. Mejor especifica las columnas:
sql
SELECT product_id, name, price, stock FROM products;
Así te ahorras columnas como created_at, updated_at o description que solo agregan ruido cuando no las necesitas.
¿Cómo filtro registros con WHERE y combino condiciones?
El WHERE es donde empiezas a discriminar datos. Imagina que buscas productos baratos: aquellos que cuesten menos de 100 [6:30].
sql
SELECT product_id, name, price, stock
FROM products
WHERE price <= 100;
De 2.358 productos, te quedas con 33. Ahora súmale otra condición: que además tengan más de 90 unidades en stock.
sql
SELECT product_id, name, price, stock
FROM products
WHERE price <= 100 AND stock > 90;
El resultado se reduce a tres productos. Con dos condiciones y un AND pasaste de miles de filas a una respuesta puntual.
¿Cómo ordeno y calculo totales dentro de un SELECT?
Filtrar es solo el comienzo. ORDER BY te permite presentar los resultados en el orden que tenga sentido para tu negocio.
¿Cómo funciona ORDER BY ASC y DESC?
La sintaxis pide la columna y luego la dirección: ASC (ascendente, valor por defecto) o DESC (descendente).
sql
SELECT product_id, name, price, stock
FROM products
WHERE price <= 100 AND stock > 90
ORDER BY stock DESC;
Con esto los tres productos se ordenan del que más unidades tienes al que menos: 97, 96 y 95.
¿Puedo hacer operaciones aritméticas en un SELECT?
Sí. Las expresiones del SELECT aceptan columnas, números, operaciones y funciones. Una pregunta típica de negocio es cuánto dinero tienes invertido en inventario, o sea price multiplicado por stock [11:30].
sql
SELECT product_id, name, price, stock, price * stock AS total
FROM products
WHERE price <= 100 AND stock > 90
ORDER BY total DESC;
El uso de AS total crea un alias: renombra la columna calculada para que la consulta sea legible y para poder referenciarla en el ORDER BY. También puedes envolver la operación en ROUND() si quieres un entero sin decimales.
¿Para qué sirve un alias en SQL? Renombra una columna o expresión en el resultado. Es útil cuando calculas algo como price * stock y quieres mostrarlo como total, además de poder usar ese nombre en otras cláusulas.
¿Cómo pagino resultados con LIMIT en SQL?
Cuando ya tienes el query ordenado por total descendente sobre toda la tabla, ver 2.358 filas en pantalla no sirve. Aquí entra LIMIT.
sql
SELECT product_id, name, price, stock, price * stock AS total
FROM products
ORDER BY total DESC
LIMIT 10;
Eso te da los 10 productos donde más dinero tienes invertido en stock. En el ejemplo, Enormous Granite Knife concentra 483.000 invertidos.
¿Cuáles son las dos formas de usar LIMIT?
LIMIT tiene dos sintaxis [18:30]:
LIMIT A: trae A filas desde el inicio. Equivale a LIMIT 0, A.
LIMIT B, A: salta B filas y luego trae A. Es la base de la paginación.
Por ejemplo, LIMIT 2, 10 se salta las primeras dos filas y devuelve las siguientes diez. Si quieres ir a la página 10 con páginas de 10 elementos, usarías LIMIT 90, 10.
sql
SELECT product_id, name, price, stock, price * stock AS total
FROM products
ORDER BY total DESC
LIMIT 90, 10;
Esa segunda forma de LIMIT es la que convierte tus consultas en interfaces paginadas reales, como las que ves en cualquier panel de administración o tienda online.
Con filtros (WHERE), orden (ORDER BY), expresiones con alias y paginación (LIMIT), ya puedes responder preguntas concretas con SQL sin saturar la pantalla. ¿Qué consulta de tu base de datos te gustaría escribir primero con esta estructura?