Minette Steynberg

5 consejos prácticos de Transact-SQL que puede usted conozca (o no)

December 24, 2016 by

Introducción

Incluso si usted es un veterano de SQL, en verdad, especialmente si lo es, usted a veces se estanca haciendo algo de la manera antigua sin darse cuenta que en versiones más nuevas de SQL Server algunas funciones prácticas han sido añadidas y pueden hacer su vida más fácil.

En este artículo, mencionaré un par de funciones que aparecieron en SQL Server 2008 o versiones posteriores o que pueden haber estado ahí pero la mayor parte de la gente simplemente no sabía de ellas.

Condición lógica

En lenguajes de programación regulares, como VB o C#, usted ha podido usar la sentencia IF por largo tiempo. Usted incluso puede usar esto en Excel. Pero en SQL usted siempre tuvo que usar IF..ELSE o un CASE para realizar una operación de condición lógica.

Usted puede ahora usar esto en SQL Server. Por ejemplo:

El primer parámetro es la condición, el segundo parámetro es lo que será retornado si la condición es verdadera y el tercer parámetro es lo que será retornado si la condición es falsa.

En este caso el resultado será como sigue:

Concatenación

Puede que muchos de ustedes piensen que esto no es un gran problema, usted ya puede hacer concatenación de cadenas usando esta sintaxis aquí.

Pero por supuesto hay un error.

Para que esto funcione, usted tendrá que realizar una conversión explícita de la fecha como sigue:

Lo que retornará:

Lo que es bueno acerca de la función CONCAT es que hace la conversión implícita. Así que usted no tiene que convertir a una cadena antes de añadirla.

La función CONCAT puede concatenar hasta 255 caracteres. Null es convertido a una cadena vacía.

Operadores compuestos

Usted ha usado operadores compuestos en otros lenguajes desde siempre. En estos operadores, usted puede simplemente declarar el parámetro y el incremento o decremento con un número en un solo comando.

Pero en SQL usted tenía que asignar la variable y su incremento de vuelta a la variable.

Pero ahora, desde SQL Server 2008 en adelante, usted puede usar los operadores compuestos para establecer un valor original al resultado de la expresión.

Los siguientes operadores compuestos están disponibles:

+= Añade el valor al valor original y establece el nuevo valor al resultado.
-= Substrae el valor original y establece el valor original al resultado.
*= Multiplica por una cantidad y establece el valor original al resultado.
/= Divide por una cantidad y establece el valor original al resultado.
%= Divide por una cantidad y establece el valor original al módulo.
&= Realiza un AND bit a bit y establece el valor original al resultado.
^= Realiza un OR exclusive bit a bit y establece el valor original al resultado.
|= Realiza un OR bit a bit y establece el valor original al resultado.

Insertar múltiples filas con un comando INSERT

El Constructor de Valor de Tabla

Por años usted tenía que crear un comando para cada fila que deseaba insertar. A menos que estuviese usando un SELECT INTO, su comando típicamente tenía que verse así:

Esto ahora ha sido hecho algo más fácil, permitiéndole no tener que repetir la porción INSERT INTO del comando, pero sólo especifique los valores que le gustaría insertar usando el Constructor de Valor de Tabla. Así:

Usted también puede especificar una consulta como un valor, pero tiene que retornar un valor escalar como este:

El constructor de valor de tabla está limitado a 1000 filas.

El Replicador de Lotes

Usted también tiene la opción de insertar la misma fila múltiples veces usando la opción de replicador de lotes del separador de lotes.

El separador de lotes es GO por defecto. El propósito de este comando es separar el código en un script en lotes. Como este:

En este ejemplo, USE Adventureworks2012 es el primer lote y el comando INSERT es el segundo lote.

Así que, si usted deseaba añadir la misma fila a la tabla múltiples veces, usted puede especificar un número de veces que debería ser ejecutada, así:

En este caso, la misma fila será insertada 10 veces. Puede que no parezca muy útil, pero es muy práctico si usted tiene que generar cantidades grandes de datos para pruebas de desempeño, etc. Por supuesto, su lote no necesita ser tan simple como este ejemplo, usted puede modificarlo para insertar datos con diferentes tipos de datos y valores derivados para crear datos de ejemplo de alta calidad.

Vale la pena notar que el lote separado realmente NO es transact-SQL, es un comando interpretado por sqlcmd, osql o SQL Server Management Studio.

Cuando SQL Server Management Studio encuentra un GO, sabe que necesita enviar el lote precedente de código a la instancia SQL Server. Usando el replicador, simplemente le dice a la utilidad que envía el lote múltiples veces.

Template explorer

SQL Server está equipado con una gran cantidad de plantillas para comando comunes, lo que le permite obtener la sintaxis correcta para realizar una cierta tarea sin tener que buscarlo en Google. Esto está integrado en SQL Server Management Studio y puede ser visto en el explorador de plantillas.

Usted puede acceder al Explorador de Plantillas (Template Explorer) desde el menú View:

Esto abrirá la ventana Template Browser, la cual muestra todas las plantillas disponibles.

También le permite crear sus propias plantillas, lo cual es realmente práctico si usted tiene scripts que usa frecuentemente. Usted puede crear sus propias plantillas haciendo clic derecho en el nodo SQL Server Templates en Template Browser y seleccionando la opción New. Usted puede entonces crear una nueva carpeta o una nueva plantilla.

Conclusión

SQL Server tiene una miríada de herramientas y funciones que la mayor parte de la gente no conoce. Estas son sólo un par de cosas con las que me topé, pero hay seguramente muchas más. Vale definitivamente la pena a veces simplemente jugar un poco y ver si uno se topa con algo que no ha visto antes, especialmente para versiones nuevas, ya que SQL Server y el lenguaje Transact-SQL siempre están mejorando.

Referencias


Minette Steynberg
Desarrollo de base de datos SQL

Acerca de Minette Steynberg

Minette es una entusiasta de SQL Server y tiene más de 15 años de experiencia en SQL Server y tecnologías relacionadas. Ella tiene un grado BSC en Ciencias de Computación y también está certificada en Administración y Desarrollo de Bases de Datos SQL Server. Ella es una creyente firme en el aprendizaje durante toda la vida y es una expositora regular en grupos de usuarios de SQL Server, compartiendo su pasión y conocimiento con cualquier persona que escuche. Ver todas las entradas de Minette Steynberg

168 Views