Alias

Categories:

En algunas ocasiones va a ser necesario cambiar el nombre de las columnas o de las tablas, en este caso podemos utilizar un alias.

AS
AS – alias – permite cambiar el nombre de una columna o tabla al momento de realizar consultas.

Esto nos es útil cuando al obtener los registros de una consulta el nombre de la columna no representa los datos que contiene o el nombre no es conveniente para utilizar – sobre todo si vamos a procesar los datos en algún lenguaje de programación -.

Un ejemplo es cuando utilizamos funciones de agregación.

-- Utilizamos la función SUM para 
-- obtener la sumatoria de vistas de las publicaciones.

SELECT SUM(vistas) FROM publicaciones;

-- Cambiamos el nombre de la columna por
-- Vistas totales
-- Esto nos puede servir si utilizamos MySQL en modo
-- consola o utilizamos algún editor para 
-- realizar la consulta.

SELECT SUM(vistas) AS "Vistas totales" FROM publicaciones;

-- Si utilizamos un lenguaje de programación para procesar
-- los datos prefiero utilizar notación snake_case

SELECT SUM(vistas) AS "vistas_totales" FROM publicaciones;

Cambiar el nombre de la columna con alias - 01

Cambiar el nombre de la columna con alias - 02

Cambiar el nombre de la columna con alias - 03

Otro uso puede ser cuando se selecciona contenido de dos tablas distintas – más adelante vamos a revisar distintas maneras de hacer esto, por ahora es solo un ejemplo de cómo utilizar los alias – que tienen el mismo nombre para una columna. En este caso podemos utilizar la notación nombre_tabla.nombre_columna para realizar la consulta y prevenir que mysql envíe un mensaje de que el nombre de la columna es ambiguo. Si se va a utilizar el resultado de tipo de consultas fuera del administrador de bases de datos – MySQL – por ejemplo en PHP, es conveniente diferenciar el nombre de las columnas.

-- En este caso queremos mostrar el nombre del usuario
-- y el nombre del rol que tiene asignado pero 
-- MySQL nos indica que la columna "nombre"
-- es ambigua porque las dos tablas tienen 
-- una columna que se llama nombre:

SELECT nombre, nombre  FROM roles, usuarios WHERE 
usuarios.rol_id = roles.id;

-- Column 'nombre' in field list is ambiguous

-- Para prevenir este error podemos utilizar la notación
-- nombre_tabla.nombre_columna de esta manera
-- estamos especificando a qué tabla pertenece 
-- la columna de la cual queremos mostrar los nombres
-- pero en los resultados ambas columnas tienen
-- el encabezado nombre, lo cuál no es muy útil
-- si queremos procesar el resultado en un lenguaje
-- de programación. 

SELECT usuarios.nombre , roles.nombre  FROM roles, usuarios WHERE usuarios.rol_id = roles.id;

-- Al utilizar un alias en cada columna
-- definimos que el encabezado de la columna
-- represente el valor de los datos que se están mostrando
-- además de que al utilizar nombres distintos
-- se pueden procesar por el lenguaje de programación
-- sin ningún problema.

SELECT usuarios.nombre AS 'usuario', roles.nombre AS 'rol' FROM roles, usuarios WHERE usuarios.rol_id = roles.id;

Evitar ambigüedad - 01

Evitar ambigüedad - 02

También es posible utilizar un alias para el nombre de las tablas.
Al crear un alias para las tablas – después de FROM – se tiene que utilizar el alias cuando se haga referencia a la tabla – ya sea al seleccionar las columnas en SELECT o al especificar las condiciones en WHERE -.

-- Mostrar el nombre del usuario
-- y el nombre del rol que tiene asignado.

SELECT u.nombre, r.nombre FROM usuarios AS u, roles AS r WHERE u.rol_id = r.id

-- Si queremos procesar los datos después de realizar
-- la consulta, podemos cambiar el nombre del
-- encabezado de las columnas utilizando un alias
-- en las columnas.

SELECT u.nombre AS 'usuario', r.nombre AS 'rol' FROM usuarios AS u, roles AS r  WHERE u.rol_id = r.id;

Cambiar nombre a las tablas - 01

Cambiar nombre a las tablas - 02

Es posible omitir el término AS al utilizar alias. De manera personal lo he visto más en alias
que hacen referencia a nombres de tablas que a nombres de columna.

-- Utilizar alias de tabla omitiendo 
-- la palabra AS

SELECT u.nombre, r.nombre 
FROM usuarios u, roles r 
WHERE u.rol_id = r.id

-- Funciona correctamente utilizando
-- alias en el nombre de las columnas.

SELECT u.nombre AS 'usuario', r.nombre AS 'rol'
FROM usuarios u, roles r 
WHERE u.rol_id = r.id

-- También es posible utilizar alias en el nombre
-- de las columnas sin utilizar el término 
-- AS

SELECT u.nombre 'usuario', r.nombre 'rol'
FROM usuarios u, roles r 
WHERE u.rol_id = r.id

Utilizar alias sin el término AS - 01

Utilizar alias sin el término AS - 02

Utilizar alias sin el término AS - 03

Aunque los alias nos van a ser más útiles cuando realicemos consultas en más de una tabla por el momento los puedes usar para abreviar el nombre de las tablas si seleccionas columnas en particular o para visualizar cambiar el nombre de las funciones en el encabezado de los resultados.