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;
nombreprecio
iPhone 15 Pro1299.99
Samsung Galaxy S24899.99
Google Pixel 8699.00
Xiaomi 14599.99
MacBook Air M31399.00
Lenovo ThinkPad X11549.00
ASUS ROG Zephyrus1899.99
Funda iPhone silicona49.99
Cargador USB-C 65W35.99
Cable USB-C a Lightning19.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;
idnombredescripcioncategoria_padre_id
1ElectrónicaDispositivos electrónicos y accesoriosNULL
2RopaRopa y complementos para hombre y mujerNULL
3HogarArtículos para el hogar y decoraciónNULL
4DeportesEquipamiento deportivo y fitnessNULL
5LibrosLibros físicos y digitalesNULL
6SmartphonesTeléfonos inteligentes1
7PortátilesOrdenadores portátiles1
8Accesorios electrónicosFundas, cargadores, cables1
............

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:008.4.0tienda_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;
nombreprecioprecio_con_iva
iPhone 15 Pro1299.991572.99
Samsung Galaxy S24899.991088.99
Google Pixel 8699.00845.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_completoemail
María García Lópezmaria.garcia@email.com
Carlos Rodríguez Martíncarlos.rodriguez@email.com
Ana Martínez Ruizana.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;
nombrepreciostockvalor_inventario
iPhone 15 Pro1299.994558499.55
Samsung Galaxy S24899.996255799.38
Google Pixel 8699.003826562.00
Xiaomi 14599.998047999.20
MacBook Air M31399.002534975.00
Cable USB-C a Lightning19.993005997.00
Camiseta algodón básica24.9950012495.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;
nombrepreciomoneda
iPhone 15 Pro1299.99EUR
Samsung Galaxy S24899.99EUR
.........

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:

Simulador SQL
Ctrl+Enter para ejecutar

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