martes, 8 de julio de 2014

Receta T-SQL No. 1-7: Creación de un Alias para el Nombre de una Tabla

Tabla de Contenido

0. Introducción
1. Problema
2. Solución
3. Discusión de la Solución
4. Práctica: Código T-SQL
5. Conclusiones
6. Glosario
7. Literatura & Enlaces

0. Introducción

Al igual que las columnas (Creación de una Columna a partir de una Expresión) a las tablas también se les puede asociar un nombre temporal (o alias) para referirse a sus columnas de manera más cómoda y legible. En esta receta aprenderemos cómo alcanzar esta tarea con la que podremos escribir consultas más fáciles de leer y  breves en construir. Veremos varios ejemplos funcionales para demostrar su uso, al igual, las situaciones en donde hay que tener cuidado con el uso indebido del nombre de la tabla y el alias.

1. Problema

Al igual que encontramos un método sencillo para renombrar temporalmente los nombres de una columna o de una expresión a través del uso un alias (o nombre de columna virtual), requerimos buscar uno aplicable a tablas. La idea básica es escribir sentencias T-SQL más cortas y fáciles de leer.

2. Solución

La solución es recurrir al uso explícito o implícito de la clausula AS seguido del nombre del alias a asignar a la tabla. Esta es la sintaxis general de uso:

nombre_tabla [ AS ] nombre_alias

3. Discusión de la Solución

Pasemos a discutir el uso de la sintaxis presentada en la sección anterior.

Discusión puntual:
  • nombre_tabla: nombre original de la tabla a referenciar.
  • nombre_alias: nombre temporal a asignar a la tabla.

    Este nombre puede contener espacios siempre y cuando se halle encerrado entre comillas. En [3] recomiendan el uso de alias para columnas, pero se desaconseja su uso para los alias de una tabla.
Hay que resaltar que el uso de la clausula AS es opcional. Podríamos poner por caso:

SELECT tha.ProductID, tha.TransactionDate, tha.ActualCost, tha.Quantity
FROM Production.TransactionHistoryArchive AS tha;

o:

SELECT tha.ProductID, tha.TransactionDate, tha.ActualCost, tha.Quantity
FROM Production.TransactionHistoryArchive tha;

Resultado:
Uso de alias para nombres de tablas
Figura 1. Uso de alias para nombres de tablas.
El resultado de la Figura 1 es el mismo para las dos sentencias anteriores.

Por otra parte, es importante hacer mención que una vez especificamos un alias para el nombre de una tabla, ya no es posible especificar el nombre original para cualquier sección de la sentencia. Por ejemplo al intentar hacer esto:

SELECT tha.ProductID, Production.TransactionHistoryArchive.TransactionDate, tha.ActualCost, tha.Quantity
FROM Production.TransactionHistoryArchive tha;

Generará el error:
Error en uso de alias incorrectamente
Figura 2. Error en uso de alias incorrectamente.

Mensaje en versión texto:

Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "Production.TransactionHistoryArchive.TransactionDate" could not be bound.

4. Práctica: Código T-SQL

Veamos otro ejemplo práctico para demostrar la utilidad de los alias para los nombres de tablas.

Hagamos uso de la tabla HumanResources.Employee con el alias E, y creemos la siguiente sentencia:

SELECT e.BusinessEntityID AS "ID Empleado",
E.VacationHours AS "Vacaciones",
E.SickLeaveHours AS "Incapacidad"
FROM HumanResources.Employee AS E;

Notemos varias cosas de esta sentencia:
  1. La sentencia es mucho más corta a diferencia del uso del nombre de tabla HumanResources.Employee en todas las columnas especificadas en la clausula SELECT. (Su utilidad será mucho más interesante cuando se referencian varias tablas en una sola sentencia.)
  2. Es posible usar la clausula AS para especificar un alias para las columnas del alias E.

5. Conclusiones

El uso de alias para los nombres de las tablas resulta ser un atajo que además de cómodo, aporta a que las construcciones de sentencias T-SQL sean más breves y fáciles de leer. Deberíamos reconocer este recurso cuando vayamos a escribir sentencias más complejas en futuras entregas de recetas T-SQL. Para la próxima oportunidad aprenderemos a usar el operador lógico de negación.

Glosario

  • Alias
  • Atajo
  • Columna
  • Expresión
  • Sentencia
  • Tabla
  • T-SQL

Literatura & Enlaces

[1]: SQL Server 2012 T-SQL Recipes - A Problem-Solucion Approach by Jason Brimhall, David Dye, Jonathan Gennick, Andy Roberts, and Wayne Sheffield. Copyright 2012 Jason Brimhall, David Dye, Jonathan Gennick, Andy Roberts, and Wayne Sheffield, 978-1-4302-4200-0.
[2]: Using Table Aliases - http://technet.microsoft.com/en-us/library/ms187455(v=SQL.105).aspx
[3]: SQL Server (Transact-SQL): ALIASES - http://www.techonthenet.com/sql_server/alias.php


S

No hay comentarios:

Publicar un comentario

Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.