SELECT
La sentencia SELECT es la instrucción más utilizada en SQL. Con ella recuperas datos almacenados en las tablas de tu base de datos. Puedes seleccionar columnas específicas, todas las columnas, aplicar expresiones, e incluso usar SELECT sin hacer referencia a ninguna tabla.
Antes de empezar, asegúrate de que estás usando la base de datos de ejemplo:
USE tienda_mysql;Sintaxis básica
La forma más simple de SELECT especifica qué columnas quieres obtener y de qué tabla:
SELECT columna1, columna2, ...
FROM tabla;La cláusula SELECT indica las columnas que aparecerán en el resultado. La cláusula FROM indica la tabla de donde se extraen los datos. MySQL ejecuta primero el FROM (determina la tabla) y después el SELECT (elige las columnas). Este orden de procesamiento interno es importante entenderlo, aunque no afecta a cómo escribes la consulta.
Seleccionar columnas específicas
Para obtener el nombre y el precio de todos los productos:
SELECT nombre, precio
FROM productos;| nombre | precio |
|---|---|
| iPhone 15 Pro | 1299.99 |
| Samsung Galaxy S24 | 899.99 |
| Google Pixel 8 | 699.00 |
| Xiaomi 14 | 599.99 |
| MacBook Air M3 | 1399.00 |
| Lenovo ThinkPad X1 | 1549.00 |
| ASUS ROG Zephyrus | 1899.99 |
| Funda iPhone silicona | 49.99 |
| Cargador USB-C 65W | 35.99 |
| Cable USB-C a Lightning | 19.99 |
| ... | ... |
MySQL devuelve una fila por cada registro en la tabla productos. El resultado muestra únicamente las dos columnas solicitadas, en el orden en que las escribiste en el SELECT. Si cambias el orden, el resultado refleja ese cambio:
SELECT precio, nombre
FROM productos;Ahora la columna precio aparece primero y nombre después. El orden de las columnas en el SELECT determina el orden de las columnas en el resultado.
Seleccionar todas las columnas
El asterisco (*) es un atajo para seleccionar todas las columnas de una tabla:
SELECT *
FROM categorias;| id | nombre | descripcion | categoria_padre_id |
|---|---|---|---|
| 1 | Electrónica | Dispositivos electrónicos y accesorios | NULL |
| 2 | Ropa | Ropa y complementos para hombre y mujer | NULL |
| 3 | Hogar | Artículos para el hogar y decoración | NULL |
| 4 | Deportes | Equipamiento deportivo y fitness | NULL |
| 5 | Libros | Libros físicos y digitales | NULL |
| 6 | Smartphones | Teléfonos inteligentes | 1 |
| 7 | Portátiles | Ordenadores portátiles | 1 |
| 8 | Accesorios electrónicos | Fundas, cargadores, cables | 1 |
| ... | ... | ... | ... |
El asterisco es cómodo para explorar datos rápidamente, pero no es recomendable usarlo en aplicaciones o scripts en producción. Si alguien añade o elimina columnas de la tabla, el resultado de tu consulta cambiará sin aviso, lo que puede romper el código que depende de un orden o número concreto de columnas. Además, seleccionar columnas que no necesitas consume memoria y ancho de banda innecesariamente.
SELECT sin tabla
MySQL permite ejecutar SELECT sin la cláusula FROM. Esto es útil para evaluar expresiones, funciones del sistema o constantes:
SELECT 2 + 3;| 2 + 3 |
|---|
| 5 |
Puedes usar funciones del sistema de la misma forma:
SELECT NOW(), VERSION(), DATABASE();| NOW() | VERSION() | DATABASE() |
|---|---|---|
| 2026-02-14 15:30:00 | 8.4.0 | tienda_mysql |
NOW() devuelve la fecha y hora actuales, VERSION() la versión del servidor MySQL y DATABASE() el nombre de la base de datos seleccionada. Este tipo de consultas sin FROM son habituales para comprobar valores del sistema o hacer cálculos rápidos.
Expresiones en SELECT
No estás limitado a seleccionar columnas tal cual están almacenadas. Puedes usar expresiones para transformar o combinar los datos en la propia consulta:
SELECT
nombre,
precio,
precio * 1.21 AS precio_con_iva
FROM productos;| nombre | precio | precio_con_iva |
|---|---|---|
| iPhone 15 Pro | 1299.99 | 1572.99 |
| Samsung Galaxy S24 | 899.99 | 1088.99 |
| Google Pixel 8 | 699.00 | 845.79 |
| ... | ... | ... |
La expresión precio * 1.21 calcula el precio con un 21% de IVA. La palabra clave AS le asigna un nombre a esa columna calculada (un alias). Veremos los alias con más detalle en un artículo posterior.
También puedes concatenar texto:
SELECT
CONCAT(nombre, ' ', apellidos) AS nombre_completo,
email
FROM clientes;| nombre_completo | |
|---|---|
| María García López | maria.garcia@email.com |
| Carlos Rodríguez Martín | carlos.rodriguez@email.com |
| Ana Martínez Ruiz | ana.martinez@email.com |
| ... | ... |
La función CONCAT une varios valores en una sola cadena. Aquí combinamos el nombre y los apellidos con un espacio entre ellos.
Seleccionar columnas con cálculos de stock
Otro ejemplo práctico con expresiones. Supón que quieres ver el valor total del inventario de cada producto (precio multiplicado por las unidades en stock):
SELECT
nombre,
precio,
stock,
precio * stock AS valor_inventario
FROM productos;| nombre | precio | stock | valor_inventario |
|---|---|---|---|
| iPhone 15 Pro | 1299.99 | 45 | 58499.55 |
| Samsung Galaxy S24 | 899.99 | 62 | 55799.38 |
| Google Pixel 8 | 699.00 | 38 | 26562.00 |
| Xiaomi 14 | 599.99 | 80 | 47999.20 |
| MacBook Air M3 | 1399.00 | 25 | 34975.00 |
| Cable USB-C a Lightning | 19.99 | 300 | 5997.00 |
| Camiseta algodón básica | 24.99 | 500 | 12495.00 |
| ... | ... | ... | ... |
Este tipo de consultas te permite analizar datos sin modificar nada en la base de datos. Las expresiones se calculan al vuelo y no alteran los valores almacenados.
Constantes y literales
Puedes incluir valores constantes en el resultado. Esto es útil para añadir contexto o etiquetas a los datos:
SELECT
nombre,
precio,
'EUR' AS moneda
FROM productos;| nombre | precio | moneda |
|---|---|---|
| iPhone 15 Pro | 1299.99 | EUR |
| Samsung Galaxy S24 | 899.99 | EUR |
| ... | ... | ... |
El valor 'EUR' aparece en todas las filas. No proviene de ninguna columna de la tabla, sino que se repite como una constante en cada fila del resultado.
Practica con SELECT
Usa el simulador para probar tus propias consultas SELECT. La base de datos ya tiene cargadas las tablas productos, categorias, clientes y pedidos con datos de ejemplo:
Resumen de la sintaxis
SELECT
columna1,
columna2,
expresion AS alias,
...
FROM tabla;La sentencia SELECT es el punto de partida de casi todo lo que harás en MySQL. Por sí sola devuelve todos los registros de una tabla, pero su verdadero poder aparece cuando se combina con cláusulas como WHERE para filtrar, ORDER BY para ordenar y LIMIT para restringir resultados. Eso es exactamente lo que veremos en los siguientes artículos.
Escrito por Eduardo Lázaro
