que-es-t-sql

¿Qué es T-SQL? Introducción a Transact-SQL

  • 4 min

¡Hola a todos! Bienvenidos a esta primera entrada del curso de SQL y T-SQL.

Si trabajáis en desarrollo, tarde o temprano os vais a topar con una base de datos. Y para interactuar con ellas, el estándar indiscutible es SQL.

Mientras que SQL es un estándar definido por organismos como ANSI e ISO, T-SQLamplía este estándar añadiendo características de programación procedimental.

SQL vs T-SQL: ¿Cuál es la diferencia?

Es común confundir ambos términos, pero es importante entender la distinción:

  • SQL (Standard SQL): Es un lenguaje declarativo diseñado para consultar y manipular datos. Nos dice qué queremos obtener, pero no necesariamente cómo debe hacerlo el motor internamente.
  • T-SQL (Transact-SQL): Es una implementación específica de Microsoft. Además de todas las funciones del SQL estándar, incluye estructuras de control de flujo, manejo de errores, variables y procedimientos almacenados.

sql-relacionse

Básicamente, T-SQL toma todo lo bueno del SQL estándar y le añade funcionalidades para permitirnos programar lógica compleja directamente en la base de datos.

Características principales de T-SQL

Lo que hace potente a T-SQL es que convierte a SQL en un lenguaje de programación completo. Esto nos permite realizar operaciones que van mucho más allá de un simple SELECT o INSERT.

T-SQL incorpora estructuras lógicas que encontramos en lenguajes como C# o Java. Podemos usar condicionales y bucles:

  • IF...ELSE: Para toma de decisiones.
  • WHILE: Para bucles y repeticiones.
  • BEGIN...END: Para definir bloques de código.
-- Ejemplo simple de lógica en T-SQL
DECLARE @Cantidad int = 10;

IF @Cantidad > 5
BEGIN
    PRINT 'Hay más de 5 elementos';
END
ELSE
BEGIN
    PRINT 'Hay pocos elementos';
END

Copied!

Podemos declarar variables, asignarles valores y utilizarlas a lo largo de nuestro script o procedimiento almacenado. Esto es fundamental para guardar resultados intermedios o configurar parámetros dinámicos.

DECLARE @NombreCliente NVARCHAR(50);
SET @NombreCliente = 'Luis Llamas';

SELECT * FROM Clientes WHERE Nombre = @NombreCliente;

Copied!

T-SQL nos permite encapsular código en objetos reutilizables dentro de la base de datos.

  • Stored Procedures: Bloques de código que pueden ejecutar lógica compleja, transacciones y modificaciones de datos.
  • User Defined Functions (UDF): Funciones que devuelven un valor o una tabla, ideales para cálculos repetitivos.

Una de las partes más críticas en bases de datos es asegurar la integridad de los datos. T-SQL ofrece herramientas robustas para esto:

  • TRY...CATCH: Para capturar y gestionar errores de ejecución de forma controlada.
  • TRANSACTION: Para asegurar que un conjunto de operaciones se realicen todas o ninguna (atomicidad).
BEGIN TRY
    BEGIN TRANSACTION;
        -- Intentamos actualizar un registro
        UPDATE Inventario SET Stock = Stock - 1 WHERE ProductoID = 10;
        
        -- Si todo va bien, confirmamos
    COMMIT TRANSACTION;
END TRY
BEGIN CATCH
    -- Si algo falla, deshacemos los cambios
    ROLLBACK TRANSACTION;
    PRINT 'Ocurrió un error: ' + ERROR_MESSAGE();
END CATCH

Copied!

El estándar ANSI y la portabilidad

Microsoft se esfuerza por mantener T-SQL compatible con el estándar ANSI SQL-92 y versiones posteriores. Sin embargo, T-SQL incluye muchas funciones propietarias (como TOP, ISNULL, o funciones de fecha específicas como GETDATE()).

Dicho de forma sencilla:

  • Todo comando SQL válido debería funcionar en T-SQL
  • Pero no todo comando T-SQL funcionará en otras bases de datos (como MySQL o PostgreSQL)

Cuando escribimos en T-SQL, a menudo tenemos que decidir entre:

  1. Escribir código puramente estándar (más portable, pero a veces más limitado).
  2. Aprovechar la potencia específica de T-SQL (mejor rendimiento y funcionalidades, pero menos portable).

En este curso, nos centraremos en exprimir T-SQL al máximo, ya que estamos trabajando sobre SQL Server.

curso-sql

¿Por qué aprender T-SQL?

Si vas a trabajar con SQL Server, T-SQL es imprescindible. Es el lenguaje principal que utilizamos para interactuar con Microsoft SQL Server y Azure SQL Database.

Pero, ¿y si no planeas usar Microsoft para siempre? ¿Sigue valiendo la pena este curso? La respuesta es un sí.

  • Base SQL: El 90% de la sintaxis que usarás es SQL Estándar. Lo que aprendas aquí te servirá inmediatamente en MySQL, SQLite o MariaDB.

  • Conceptos Transferibles: T-SQL es un “dialecto” procedimental. Otros motores tienen los suyos propios (PostgreSQL tiene PL/pgSQL y Oracle tiene PL/SQL). Pero, aunque cambie alguna palabra clave, los conceptos son idénticos.

Si dominas T-SQL, pasar mañana a PostgreSQL u otro, te costará muy poco, porque ya entenderás la lógica que hay detrás de las bases de datos avanzadas.