SQL
Tutorial SQL: Consultar datos: SELECT
Aprende a consultar datos en SQL usando SELECT, selección de columnas y alias para mejorar la legibilidad y rendimiento de tus consultas.
Aprende SQL y certifícateSELECT y FROM básico
La sentencia SELECT
es el corazón de SQL y constituye la forma fundamental de recuperar datos de una base de datos. Esta instrucción permite consultar información almacenada en tablas y es probablemente la operación más utilizada en el día a día con bases de datos. La estructura básica de una consulta SELECT
siempre incluye esta palabra clave junto con FROM
para indicar de dónde obtener los datos.
Estructura básica de una consulta SELECT
La sintaxis más simple de una consulta SELECT
tiene esta estructura:
SELECT columna1, columna2, ...
FROM nombre_tabla;
Donde:
SELECT
indica que queremos recuperar datos- Las columnas especificadas son los campos que deseamos obtener
FROM
especifica la tabla de donde extraeremos los datos
Por ejemplo, si tenemos una tabla llamada empleados
, podemos obtener los nombres y apellidos de todos los empleados con:
SELECT nombre, apellido
FROM empleados;
Seleccionar todas las columnas
Si queremos recuperar todas las columnas de una tabla, podemos utilizar el asterisco (*
) como comodín:
SELECT *
FROM empleados;
Este tipo de consulta devuelve todas las columnas disponibles en la tabla empleados
, en el orden en que están definidas en la estructura de la tabla. Aunque es conveniente para consultas rápidas, no se recomienda en entornos de producción por razones de rendimiento y claridad.
Ejemplos prácticos
Veamos algunos ejemplos prácticos utilizando una tabla productos
:
-- Seleccionar solo el nombre y precio de los productos
SELECT nombre, precio
FROM productos;
-- Seleccionar todas las columnas de la tabla clientes
SELECT *
FROM clientes;
-- Seleccionar el ID y fecha de las ventas
SELECT id_venta, fecha
FROM ventas;
Orden de ejecución
Es importante entender que aunque escribimos primero SELECT
y luego FROM
, el motor de base de datos ejecuta primero la cláusula FROM
para identificar la tabla, y luego aplica el SELECT
para filtrar las columnas. Este conocimiento será útil cuando trabajemos con consultas más complejas.
Buenas prácticas
Al trabajar con SELECT
, es recomendable seguir estas prácticas:
- Especificar las columnas necesarias en lugar de usar
*
, especialmente en tablas grandes - Mantener consistencia en el formato de las consultas (mayúsculas para palabras clave SQL)
- Terminar las consultas con punto y coma (
;
) - Usar nombres descriptivos para tablas y columnas
Consideraciones de rendimiento
Cuando trabajamos con tablas que contienen muchos registros o columnas, seleccionar solo las columnas necesarias puede mejorar significativamente el rendimiento:
-- Mejor rendimiento que SELECT *
SELECT id_cliente, nombre, email
FROM clientes;
Esta consulta transferirá menos datos desde el servidor de base de datos, lo que resulta en una ejecución más rápida, especialmente cuando la tabla contiene columnas con datos extensos como texto largo o imágenes.
Compatibilidad entre MySQL y PostgreSQL
La sintaxis básica de SELECT
y FROM
es estándar y funciona de manera idéntica tanto en MySQL como en PostgreSQL. Esto facilita el aprendizaje inicial de SQL, ya que los conceptos fundamentales son transferibles entre diferentes sistemas de gestión de bases de datos.
-- Esta consulta funciona igual en MySQL y PostgreSQL
SELECT nombre, descripcion, precio
FROM productos;
La estructura básica de SELECT
y FROM
constituye el fundamento sobre el cual construiremos consultas más complejas a medida que avancemos en el aprendizaje de SQL. Dominar estos conceptos es esencial antes de adentrarse en filtros, ordenación y funciones agregadas.
Selección de columnas
La selección de columnas es una técnica fundamental en SQL que permite especificar exactamente qué datos queremos recuperar de una tabla. En lugar de obtener toda la información disponible, podemos filtrar solo las columnas relevantes para nuestra necesidad específica.
Selección de columnas específicas
Cuando trabajamos con bases de datos, es común que las tablas contengan numerosas columnas, pero para una consulta particular solo necesitemos algunas de ellas. La sintaxis para seleccionar columnas específicas es:
SELECT columna1, columna2, columna3
FROM nombre_tabla;
Por ejemplo, si tenemos una tabla clientes
con muchos campos, pero solo necesitamos información de contacto:
SELECT nombre, telefono, email
FROM clientes;
Esta consulta devuelve únicamente las tres columnas especificadas para todos los registros de la tabla clientes
.
Orden de las columnas en el resultado
Un aspecto importante a considerar es que el orden en que listamos las columnas en la cláusula SELECT determina el orden en que aparecerán en el resultado:
-- Las columnas aparecerán en este orden: email, nombre, telefono
SELECT email, nombre, telefono
FROM clientes;
Esto nos permite organizar la información de salida según nuestras necesidades, independientemente de cómo estén organizadas las columnas en la estructura de la tabla.
Selección de columnas con tipos de datos diferentes
Las tablas suelen contener columnas con diversos tipos de datos. Podemos seleccionar cualquier combinación de columnas sin importar su tipo:
SELECT id_producto, nombre, precio, fecha_creacion, disponible
FROM productos;
En este ejemplo, estamos seleccionando:
id_producto
(entero)nombre
(texto)precio
(decimal)fecha_creacion
(fecha)disponible
(booleano)
Selección de columnas calculadas
También podemos realizar operaciones aritméticas con las columnas como parte de la selección:
SELECT nombre, precio, precio * 0.21
FROM productos;
Esta consulta devuelve el nombre del producto, su precio y el valor del IVA (21% del precio).
Selección de columnas con valores literales
Podemos incluir valores constantes en nuestra selección de columnas:
SELECT nombre, 'Euros' AS moneda, precio
FROM productos;
Esta consulta devuelve el nombre del producto, la palabra "Euros" para cada fila, y el precio.
Selección de columnas con funciones
Las columnas seleccionadas pueden incluir el resultado de funciones aplicadas a los datos:
SELECT nombre, UPPER(categoria), LENGTH(descripcion)
FROM productos;
Esta consulta devuelve el nombre del producto, la categoría en mayúsculas y la longitud de la descripción.
Consideraciones de rendimiento
La selección adecuada de columnas tiene un impacto significativo en el rendimiento:
- Reduce el tráfico de red: Al transferir solo los datos necesarios
- Disminuye el uso de memoria: Tanto en el servidor como en la aplicación cliente
- Mejora la velocidad de ejecución: Especialmente con columnas de tipo texto largo o BLOB
Por ejemplo, si una tabla articulos
tiene una columna contenido
que almacena textos extensos:
-- Consulta eficiente que evita transferir la columna de contenido extenso
SELECT id, titulo, fecha_publicacion
FROM articulos
WHERE categoria = 'tecnologia';
Diferencias sutiles entre MySQL y PostgreSQL
Aunque la selección básica de columnas funciona igual en ambos sistemas, existen algunas diferencias en el comportamiento de ciertas funciones:
En MySQL:
SELECT nombre, LEFT(descripcion, 50) AS resumen
FROM productos;
En PostgreSQL:
SELECT nombre, SUBSTRING(descripcion, 1, 50) AS resumen
FROM productos;
Ambas consultas logran el mismo resultado (extraer los primeros 50 caracteres), pero utilizan funciones con nombres diferentes según el sistema de gestión de base de datos.
Buenas prácticas en la selección de columnas
Para mantener un código SQL eficiente y mantenible:
- Evita seleccionar columnas innecesarias: Cada columna adicional consume recursos
- Nombra explícitamente las columnas: Evita usar
SELECT *
excepto en consultas exploratorias - Mantén un orden lógico: Organiza las columnas de manera que facilite la lectura de los resultados
- Considera el impacto en índices: La selección de columnas puede afectar qué índices utiliza el optimizador
-- Ejemplo de buena práctica
SELECT
id_pedido,
fecha_pedido,
total
FROM pedidos
WHERE fecha_pedido >= '2023-01-01';
La selección adecuada de columnas es una habilidad fundamental que mejora tanto la claridad del código como el rendimiento de las aplicaciones que interactúan con bases de datos.
Alias en consultas
Un alias es un nombre temporal que se asigna a una columna o tabla en una consulta SQL. Los alias permiten renombrar columnas para mejorar la legibilidad de los resultados y facilitar la referencia a expresiones complejas.
Sintaxis básica de alias para columnas
La palabra clave AS
se utiliza para crear alias, aunque en muchos casos es opcional:
SELECT columna AS nuevo_nombre
FROM tabla;
Por ejemplo, si queremos mostrar el precio con IVA de productos con nombres más descriptivos:
SELECT
nombre AS producto,
precio AS precio_sin_iva,
precio * 1.21 AS precio_con_iva
FROM productos;
El resultado mostrará las columnas con los nombres "producto", "precio_sin_iva" y "precio_con_iva" en lugar de los nombres originales.
Alias sin la palabra AS
La palabra AS
es opcional en la mayoría de los sistemas de bases de datos, por lo que también podemos escribir:
SELECT
nombre producto,
precio precio_sin_iva,
precio * 1.21 precio_con_iva
FROM productos;
Esta sintaxis produce el mismo resultado que el ejemplo anterior.
Alias con espacios o caracteres especiales
Si necesitamos que un alias contenga espacios o caracteres especiales, debemos encerrarlo entre comillas:
SELECT
nombre AS "Nombre del Producto",
precio AS "Precio (€)",
fecha_creacion AS "Fecha de Alta"
FROM productos;
En MySQL podemos usar comillas dobles o simples, mientras que PostgreSQL prefiere las comillas dobles para los alias.
Uso de alias en expresiones complejas
Los alias son especialmente útiles cuando trabajamos con expresiones complejas o funciones:
SELECT
CONCAT(nombre, ' ', apellido) AS nombre_completo,
YEAR(fecha_nacimiento) AS año_nacimiento,
DATEDIFF(CURRENT_DATE, fecha_contratacion)/365 AS años_en_empresa
FROM empleados;
Sin los alias, sería difícil referirse a estas columnas calculadas en los resultados.
Alias para mejorar la legibilidad de los resultados
Los alias pueden transformar nombres técnicos de columnas en etiquetas más comprensibles para los usuarios:
SELECT
p.prod_id AS "Código",
p.prod_nombre AS "Artículo",
p.prod_precio AS "Precio Unitario",
c.cat_nombre AS "Categoría"
FROM productos p
JOIN categorias c ON p.cat_id = c.cat_id;
Alias en columnas calculadas
Cuando realizamos cálculos en las columnas, los alias son prácticamente imprescindibles:
SELECT
nombre,
cantidad,
precio_unitario,
cantidad * precio_unitario AS subtotal,
cantidad * precio_unitario * 0.21 AS iva,
cantidad * precio_unitario * 1.21 AS total
FROM detalles_pedido;
Uso de alias con funciones de agregación
Los alias son muy útiles cuando trabajamos con funciones de agregación:
SELECT
COUNT(*) AS total_productos,
AVG(precio) AS precio_promedio,
MAX(precio) AS precio_maximo,
MIN(precio) AS precio_minimo
FROM productos;
Consideraciones sobre los alias
Algunos puntos importantes a tener en cuenta:
- Los alias solo existen durante la ejecución de la consulta
- No modifican la estructura de la tabla ni los nombres reales de las columnas
- Son útiles para aplicaciones que consumen los resultados de la consulta
- Facilitan la compatibilidad cuando migramos entre diferentes sistemas de bases de datos
Diferencias entre MySQL y PostgreSQL
Existen algunas diferencias sutiles en el manejo de alias entre estos sistemas:
- En MySQL, los alias de columna pueden referenciarse en cláusulas
WHERE
,GROUP BY
yHAVING
dentro de la misma consulta - En PostgreSQL, los alias de columna no pueden usarse en
WHERE
pero sí enGROUP BY
yHAVING
-- Funciona en MySQL pero no en PostgreSQL
SELECT
precio * 1.21 AS precio_con_iva
FROM productos
WHERE precio_con_iva > 100;
-- Forma compatible con ambos sistemas
SELECT
precio * 1.21 AS precio_con_iva
FROM productos
WHERE precio * 1.21 > 100;
Los alias son una herramienta fundamental para crear consultas SQL más legibles y mantenibles, permitiendo que los resultados sean más comprensibles tanto para desarrolladores como para usuarios finales.
Alias en consultas
Los alias en SQL son nombres temporales que asignamos a columnas o tablas durante una consulta para facilitar su referencia y mejorar la legibilidad de los resultados. Esta técnica es especialmente útil cuando trabajamos con nombres de columnas largos o poco descriptivos, o cuando necesitamos identificar claramente el origen de los datos.
Creación de alias para columnas
Para crear un alias de columna, utilizamos la palabra clave AS
seguida del nuevo nombre que queremos asignar:
SELECT nombre AS nombre_cliente
FROM clientes;
En este ejemplo, la columna nombre
aparecerá en los resultados con el encabezado nombre_cliente
.
Alias para expresiones y funciones
Los alias son particularmente valiosos cuando trabajamos con expresiones calculadas o funciones, ya que estas no tienen un nombre de columna predeterminado:
SELECT
precio,
precio * 0.10 AS descuento,
precio - (precio * 0.10) AS precio_final
FROM productos;
Sin los alias, las columnas calculadas mostrarían expresiones como precio * 0.10
en los encabezados de resultados, lo que dificultaría su interpretación.
Uso de alias sin la palabra AS
La palabra AS
es opcional en la mayoría de los sistemas de gestión de bases de datos, lo que permite una sintaxis más concisa:
SELECT
id_producto codigo,
nombre_producto descripcion,
precio valor
FROM inventario;
Esta forma abreviada produce exactamente el mismo resultado que si utilizáramos AS
explícitamente.
Alias con espacios y caracteres especiales
Cuando necesitamos que un alias contenga espacios o caracteres especiales, debemos encerrarlo entre comillas:
SELECT
fecha_nacimiento AS "Fecha de Nacimiento",
telefono AS "Teléfono de Contacto",
email AS "Correo Electrónico"
FROM usuarios;
En MySQL podemos usar comillas simples o dobles, mientras que PostgreSQL generalmente requiere comillas dobles para este propósito.
Alias para mejorar la presentación de datos
Los alias nos permiten transformar nombres técnicos en etiquetas más amigables para los usuarios finales:
SELECT
num_doc AS "Número de Factura",
fecha_emision AS "Fecha de Emisión",
importe_total AS "Total (€)"
FROM facturas;
Esta técnica es especialmente útil cuando los resultados de la consulta se mostrarán directamente a usuarios no técnicos.
Alias para columnas con funciones de texto
Cuando aplicamos funciones de manipulación de texto, los alias nos ayudan a dar nombres significativos a los resultados:
SELECT
UPPER(nombre) AS nombre_mayusculas,
LOWER(email) AS email_minusculas,
SUBSTRING(telefono, 1, 3) AS prefijo_telefono
FROM contactos;
Alias para columnas con operaciones de fecha
Las operaciones con fechas también se benefician del uso de alias para clarificar qué representa cada resultado:
SELECT
fecha_nacimiento,
EXTRACT(YEAR FROM fecha_nacimiento) AS año_nacimiento,
EXTRACT(MONTH FROM fecha_nacimiento) AS mes_nacimiento,
EXTRACT(DAY FROM fecha_nacimiento) AS dia_nacimiento
FROM empleados;
Consideraciones prácticas sobre los alias
Al trabajar con alias, es importante tener en cuenta:
- Los alias son locales a la consulta y no modifican la estructura real de la tabla
- Elegir nombres de alias descriptivos y concisos mejora la mantenibilidad del código
- Mantener una convención de nomenclatura consistente facilita la comprensión del código
Ejemplos de uso efectivo de alias
Veamos algunos ejemplos prácticos que demuestran el valor de los alias:
- Formateo de información personal:
SELECT
id_cliente,
CONCAT(nombre, ' ', apellido) AS nombre_completo,
CONCAT(calle, ', ', ciudad, ', ', codigo_postal) AS direccion_completa
FROM clientes;
- Cálculos en un pedido:
SELECT
id_pedido,
cantidad,
precio_unitario,
cantidad * precio_unitario AS importe_bruto,
(cantidad * precio_unitario) * 0.21 AS iva,
(cantidad * precio_unitario) * 1.21 AS importe_total
FROM lineas_pedido;
- Transformación de datos para presentación:
SELECT
codigo_producto,
CASE
WHEN stock > 100 THEN 'Alto'
WHEN stock > 50 THEN 'Medio'
ELSE 'Bajo'
END AS nivel_inventario
FROM inventario;
Recomendaciones para nombrar alias
Para maximizar la claridad y mantenibilidad de tus consultas:
- Usa nombres descriptivos que indiquen claramente qué contiene la columna
- Mantén los nombres relativamente cortos para facilitar su referencia
- Sigue una convención de nomenclatura consistente (como snake_case o camelCase)
- Evita usar palabras reservadas de SQL como nombres de alias
- Considera usar prefijos cuando trabajas con múltiples tablas relacionadas
-- Ejemplo de convención de nomenclatura consistente
SELECT
c.id AS cliente_id,
c.nombre AS cliente_nombre,
p.id AS producto_id,
p.nombre AS producto_nombre,
v.fecha AS venta_fecha,
v.cantidad AS venta_cantidad
FROM clientes c
JOIN ventas v ON c.id = v.cliente_id
JOIN productos p ON v.producto_id = p.id;
Los alias son una herramienta sencilla pero poderosa que mejora significativamente la legibilidad y usabilidad de tus consultas SQL, facilitando tanto el desarrollo como la interpretación de los resultados por parte de los usuarios finales.
Otros ejercicios de programación de SQL
Evalúa tus conocimientos de esta lección Consultar datos: SELECT con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.
Tipos de datos
Inserción de datos: INSERT INTO
Filtrado de grupos de resultados con HAVING
Uso de índices y particiones
Renombrar tablas y bases de datos: RENAME
Uso de vistas
Uso de INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN
Agrupación de resultados con GROUP BY
Creación y uso de subqueries
Sentencias INSERT
Copias de seguridad y restauración de bases de datos
Uso de INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN
Instalación de MySQL
Relaciones entre tablas
Eliminación de datos: DELETE
Creación de bases de datos y tablas: CREATE DATABASE, CREATE TABLE
Creación y uso de funciones
Creación de tablas e inserción de datos con SQL
Uso de funciones agregadas: COUNT, SUM, AVG, MAX, MIN
Optimización de consultas
Introducción a SQL
Triggers y eventos
Clasificación de resultados con ORDER BY
Alterar la estructura de tablas existentes: ALTER TABLE
Eliminación de datos: DELETE
Instalación de PostgreSQL
Creación y uso de procedimientos almacenados
Consultas básicas de selección: SELECT y WHERE
Vaciar tablas y bases de datos: DROP
Actualización de datos: UPDATE
Creación y manejo de usuarios y roles
Consultas básicas de selección SELECT y WHERE
Creación de bases de datos y tablas
Bases de datos y tablas
Actualización de datos: UPDATE
Relaciones entre tablas
Filtrado de valores únicos con DISTINCT
Asignación y gestión de permisos
Todas las lecciones de SQL
Accede a todas las lecciones de SQL y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.
Introducción A Sql
Introducción Y Entorno
Ddl Y Dml
Introducción Y Entorno
Instalación De Mysql
Introducción Y Entorno
Instalación De Postgresql
Introducción Y Entorno
Tipos De Datos
Introducción Y Entorno
Bases De Datos Y Tablas
Introducción Y Entorno
Sistemas De Gestión De Bases De Datos
Introducción Y Entorno
Tipos De Bases De Datos
Introducción Y Entorno
Creación De Bases De Datos Y Tablas: Create Database, Create Table
Sintaxis Dml Crud
Consultas Básicas De Selección: Select Y Where
Sintaxis Dml Crud
Inserción De Datos: Insert Into
Sintaxis Dml Crud
Actualización De Datos: Update
Sintaxis Dml Crud
Eliminación De Datos: Delete
Sintaxis Dml Crud
Introducción A Dml
Sintaxis Dml Crud
Consultar Datos: Select
Sintaxis Dml Crud
Clasificación De Resultados Con Order By
Filtros Y Clasificación
Filtrado De Valores Únicos Con Distinct
Filtros Y Clasificación
Paginación Con Limit Y Offset
Filtros Y Clasificación
Alterar La Estructura De Tablas Existentes: Alter Table
Sintaxis Ddl
Renombrar Tablas Y Bases De Datos: Rename
Sintaxis Ddl
Vaciar Tablas Y Bases De Datos: Drop
Sintaxis Ddl
Uso De Funciones Agregadas: Count, Sum, Avg, Max, Min
Funciones Y Agrupación
Agrupación De Resultados Con Group By
Funciones Y Agrupación
Filtrado De Grupos De Resultados Con Having
Funciones Y Agrupación
Funciones Numéricas Y Matemáticas
Funciones Y Agrupación
Funciones De Fecha Y Hora
Funciones Y Agrupación
Funciones De Texto
Funciones Y Agrupación
Many To One
Asociaciones Entre Tablas
One To Many
Asociaciones Entre Tablas
One To One
Asociaciones Entre Tablas
Many To Many
Asociaciones Entre Tablas
Relaciones Entre Tablas
Joins Y Subqueries
Uso De Inner Join, Left Join, Right Join, Full Join
Joins Y Subqueries
Creación Y Uso De Subqueries
Joins Y Subqueries
Left Join Y Right Join
Joins Y Subqueries
Full Join
Joins Y Subqueries
Cross Join Y Self Join
Joins Y Subqueries
Optimización De Consultas
Sintaxis Avanzada
Uso De Índices Y Particiones
Sintaxis Avanzada
Uso De Vistas
Sintaxis Avanzada
Triggers Y Eventos
Sintaxis Avanzada
Particiones
Sintaxis Avanzada
Restricciones E Integridad
Sintaxis Avanzada
Transacciones
Sintaxis Avanzada
Vistas Materializadas
Sintaxis Avanzada
Rollback
Sintaxis Avanzada
Vistas Con Create View
Sintaxis Avanzada
Principios Acid
Sintaxis Avanzada
Manejo De Errores Y Excepciones
Sintaxis Avanzada
Funciones Ventana
Sintaxis Avanzada
Índices
Sintaxis Avanzada
Expresiones De Tabla Comunes (Cte) Con With
Sintaxis Avanzada
Creación Y Uso De Funciones
Programación En Sql
Creación Y Uso De Procedimientos Almacenados
Programación En Sql
Variables Y Control De Flujo
Programación En Sql
Creación Y Manejo De Usuarios Y Roles
Seguridad Y Administración
Asignación Y Gestión De Permisos
Seguridad Y Administración
Copias De Seguridad Y Restauración De Bases De Datos
Seguridad Y Administración
En esta lección
Objetivos de aprendizaje de esta lección
- Comprender la estructura básica de una consulta SELECT y la función de la cláusula FROM.
- Aprender a seleccionar columnas específicas y todas las columnas de una tabla.
- Conocer cómo utilizar alias para renombrar columnas y expresiones en las consultas.
- Identificar buenas prácticas para optimizar consultas y mejorar la legibilidad del código SQL.
- Diferenciar aspectos básicos de compatibilidad y diferencias entre MySQL y PostgreSQL en el uso de SELECT y alias.