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;
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;
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;
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
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.