SELECT y FROM: elegir qué información queremos leer

Una tabla puede contener decenas de columnas, pero una consulta rara vez necesita mostrarlas todas. A veces buscamos el nombre y el correo de un cliente; otras veces necesitamos su identificador para relacionarlo con un pedido.

Antes de filtrar o combinar datos, debemos decidir dos cosas: de dónde provienen y qué parte de ellos queremos recuperar.

La idea

FROM indica el origen de los datos. SELECT define las columnas o expresiones que aparecerán en el resultado.

Aunque escribimos SELECT primero, conviene leer la consulta de esta manera:

Desde esta tabla, selecciona estas columnas.

Sintaxis

SELECT
    alias.Columna1,
    alias.Columna2
FROM dbo.Tabla AS alias;

El alias no modifica la tabla. Solo proporciona un nombre corto para referirnos a ella dentro de la consulta.

También podemos asignar un alias a una columna calculada:

SELECT
    Precio * Cantidad AS Importe
FROM dbo.PedidoDetalle;

Ejemplo

Supongamos que dbo.Cliente contiene, entre otras, estas columnas:

IdCliente Nombre Correo FechaRegistro Activo
1 Ana Torres ana@example.test 2026-01-12 09:15 1
2 Bruno Díaz bruno@example.test 2026-02-03 11:40 1
3 Carla Ruiz NULL 2026-02-18 16:05 1

Si solo necesitamos identificar al cliente y mostrar sus datos de contacto:

SELECT
    c.IdCliente,
    c.Nombre,
    c.Correo
FROM dbo.Cliente AS c;

Cómo leer el resultado

IdCliente Nombre Correo
1 Ana Torres ana@example.test
2 Bruno Díaz bruno@example.test
3 Carla Ruiz NULL

La consulta no modificó la tabla ni eliminó sus otras columnas. Únicamente construyó un resultado que contiene las tres columnas solicitadas.

El valor NULL de Carla también se conserva. SELECT muestra el valor almacenado; no lo sustituye ni lo descarta por sí mismo.

Qué conviene comprobar

SELECT * solicita todas las columnas disponibles. Puede resultar cómodo durante una exploración rápida, pero tiene consecuencias cuando permanece en código de aplicación:

  • transfiere información que quizá no se utiliza;
  • dificulta reconocer de qué depende la consulta;
  • puede cambiar el resultado cuando alguien agrega o reordena columnas;
  • aumenta la posibilidad de recibir nombres repetidos al combinar tablas.

Elegir las columnas de forma explícita documenta mejor la intención. SELECT * no es incorrecto en todos los contextos, pero debería ser una decisión y no una costumbre.

El orden de las filas tampoco está garantizado por SELECT. Si el resultado necesita un orden específico, debemos declararlo con ORDER BY.

Relacionado con

  • WHERE: limita las filas que llegan al resultado.
  • DISTINCT: elimina filas repetidas del resultado seleccionado.
  • ORDER BY: establece el orden de presentación.
  • JOIN: incorpora columnas provenientes de otras tablas.