SELECT, columnas calculadas y alias
BásicoSELECT elige qué columnas devuelve la consulta y en qué orden. Cada columna puede ser una expresión, como una resta entre dos columnas, y AS le pone un alias, es decir, el nombre con el que aparece en el resultado.
Sintaxis
SELECT
columna,
columna_a - columna_b AS nombre_nuevo
FROM tabla AS t;Ejemplo
SELECT
o.id AS pedido,
o.subtotal,
o.discount AS descuento,
o.subtotal - o.discount AS neto
FROM orders AS o
WHERE o.currency = 'UYU'
AND o.discount > 0
ORDER BY o.id
LIMIT 5;Resultado
| pedido | subtotal | descuento | neto |
|---|---|---|---|
| 212 | 1133.60 | 90.69 | 1042.91 |
| 228 | 2260.43 | 452.09 | 1808.34 |
| 401 | 38390.00 | 4606.80 | 33783.20 |
| 544 | 6949.60 | 694.96 | 6254.64 |
| 704 | 1295.60 | 194.34 | 1101.26 |
Cómo leerlo
La columna neto no existe en la tabla orders: se calcula en cada fila a partir de subtotal y discount. Los encabezados del resultado son los alias (pedido, descuento, neto), no los nombres originales. subtotal no tiene alias y conserva su nombre. El alias de tabla o evita repetir orders y deja claro de qué tabla sale cada columna.
Error común
Escribir el alias entre comillas simples (AS 'neto'). En PostgreSQL las comillas simples encierran texto y la consulta da error de sintaxis. Si el alias necesita espacios o mayúsculas, va entre comillas dobles (AS "Monto neto"), y después hay que escribirlo siempre igual, con las comillas. Lo más práctico es usar alias en minúsculas y con guion bajo.
En otros motores: MySQL, BigQuery, SQL Server, Oracle, Snowflake
MySQLBigQuery
Usan acentos graves (backticks) para nombres con espacios. MySQL además acepta el alias entre comillas simples, algo que PostgreSQL rechaza.
SELECT subtotal - discount AS `monto neto` FROM orders;SQL Server
Usa corchetes para nombres con espacios (también acepta comillas dobles con la configuración por defecto) y admite el alias entre comillas simples.
SELECT subtotal - discount AS [monto neto] FROM orders;OracleSnowflake
Un alias sin comillas se guarda en MAYÚSCULAS (
netopasa aNETO); PostgreSQL lo guarda en minúsculas. Con comillas dobles, los dos respetan exactamente lo escrito.
Estos fragmentos no se ejecutan en el curso: se muestran como referencia de cada motor.