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ícate

SELECT 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 y HAVING dentro de la misma consulta
  • En PostgreSQL, los alias de columna no pueden usarse en WHERE pero sí en GROUP BY y HAVING
-- 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.

Aprende SQL online

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

Test

Inserción de datos: INSERT INTO

Test

Filtrado de grupos de resultados con HAVING

Test

Uso de índices y particiones

Test

Renombrar tablas y bases de datos: RENAME

Test

Uso de vistas

Test

Uso de INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN

Test

Agrupación de resultados con GROUP BY

Test

Creación y uso de subqueries

Test

Sentencias INSERT

Código

Copias de seguridad y restauración de bases de datos

Test

Uso de INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN

Código

Instalación de MySQL

Test

Relaciones entre tablas

Código

Eliminación de datos: DELETE

Test

Creación de bases de datos y tablas: CREATE DATABASE, CREATE TABLE

Test

Creación y uso de funciones

Test

Creación de tablas e inserción de datos con SQL

Proyecto

Uso de funciones agregadas: COUNT, SUM, AVG, MAX, MIN

Test

Optimización de consultas

Test

Introducción a SQL

Test

Triggers y eventos

Test

Clasificación de resultados con ORDER BY

Test

Alterar la estructura de tablas existentes: ALTER TABLE

Test

Eliminación de datos: DELETE

Código

Instalación de PostgreSQL

Test

Creación y uso de procedimientos almacenados

Test

Consultas básicas de selección: SELECT y WHERE

Test

Vaciar tablas y bases de datos: DROP

Test

Actualización de datos: UPDATE

Test

Creación y manejo de usuarios y roles

Test

Consultas básicas de selección SELECT y WHERE

Código

Creación de bases de datos y tablas

Código

Bases de datos y tablas

Test

Actualización de datos: UPDATE

Código

Relaciones entre tablas

Test

Filtrado de valores únicos con DISTINCT

Test

Asignación y gestión de permisos

Test

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

Accede GRATIS a SQL y certifícate

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.