Como cualquier idioma, ya sea el español, el inglés o C#, T-SQL tiene su propia gramática y ortografía. Antes de ponernos a crear tablas o lanzar consultas complejas, debemos entender las reglas básicas de escritura.
En este artículo vamos a asentar las bases. Veremos cómo nombrar cosas, cómo escribir valores, cómo dejar notas en el código y cómo estructurar nuestros scripts para que SQL Server los entienda.
Identificadores
En T-SQL, los nombres de los objetos (como tablas, columnas, vistas, bases de datos) se llaman Identificadores.
Identificadores regulares
Son los que cumplen las reglas estándar de formato.
- El primer carácter debe ser una letra (a-z, A-Z), un guion bajo
_, una arroba@o un numeral#. - Los siguientes caracteres pueden ser letras, números,
@,$,#o_. - No pueden contener espacios ni caracteres especiales.
- No pueden ser palabras reservadas de T-SQL (como
SELECT,TABLE,USER).
SELECT Nombre, Apellido FROM Empleados; -- Correcto
Identificadores delimitados
A veces necesitamos saltarnos las reglas. Imagina que heredas una base de datos antigua donde alguien llamó a una tabla Detalle de Ventas (con espacios) o Order (que es una palabra reservada).
Para que SQL Server no se confunda, debemos encerrar el identificador entre corchetes [] (estilo propio de Microsoft) o comillas dobles "" (estilo ANSI).
SELECT * FROM [Detalle de Ventas]; -- Necesario por los espacios
SELECT * FROM [Order]; -- Necesario porque Order es palabra reservada
En el mundillo de SQL Server, la convención predominante es usar corchetes []. Nosotros usaremos esta notación durante el curso.
Literales
Cuando escribimos valores fijos en el código, los llamamos literales. Dependiendo del tipo de dato, se escriben de una forma u otra:
Se encierran entre comillas simples '.
- Ejemplo:
'Hola Mundo'
¿Qué pasa si mi texto tiene una comilla simple? Para escribir algo como “O’Connor”, debemos duplicar la comilla simple para “escaparla”: 'O''Connor'.
Si vamos a guardar caracteres especiales o alfabetos no latinos, debemos preceder la cadena con una N mayúscula.
- Ejemplo:
N'Aquí guardamos emojis 🚀 o kanjis'
Se escriben tal cual, sin comillas. Usamos el punto . para los decimales.
- Ejemplo:
10,15.50,-200
Generalmente se escriben como cadenas de texto con un formato específico. El formato más seguro e internacional es el ISO YYYY-MM-DD o YYYYMMDD.
- Ejemplo:
'2023-12-31'
Comentarios
El código se lee más veces de las que se escribe. Por eso, comentar vuestros scripts es una señal de profesionalidad. T-SQL soporta dos estilos:
-- Esto es un comentario de una sola línea.
-- Todo lo que esté a la derecha de los guiones es ignorado.
/* Esto es un bloque de comentario
que puede ocupar
varias líneas.
*/
SELECT * FROM Productos; -- También podemos comentar al final de una instrucción
Batches y el comando GO
Este es un concepto que confunde mucho al principio. En SSMS veréis a menudo la palabra GO entre instrucciones.
GO no es un comando de T-SQL. Es una instrucción para la herramienta cliente (SSMS) que significa: “Envía todo lo que has leído hasta ahora al servidor, ejecútalo, y luego sigue leyendo”.
Los bloques de código separados por GO se llaman Lotes (Batches).
¿Por qué es importante?
Las variables definidas en un lote dejan de existir en el siguiente. El alcance (scope) de una variable es local al lote.
DECLARE @MiNumero INT = 10;
PRINT @MiNumero;
GO -- Aquí termina el lote. La variable @MiNumero "muere".
-- Esto dará error porque @MiNumero ya no existe
PRINT @MiNumero;
El punto y coma (;)
En muchos lenguajes (como C# o Java), el punto y coma es obligatorio para terminar una instrucción. En T-SQL, históricamente, ha sido opcional.
Podéis escribir:
SELECT * FROM Clientes
SELECT * FROM Pedidos
Y funcionará perfectamente.
Sin embargo, Microsoft ha anunciado que en futuras versiones será obligatorio. Además, hay ciertas instrucciones modernas (como las Common Table Expressions o la sentencia MERGE) que exigen que la instrucción anterior termine con punto y coma.
Acostumbraos a poner siempre el punto y coma ; al final de cada sentencia. Es una buena práctica que os evitará problemas futuros.
Mayúsculas y Minúsculas (Collation)
¿Es SELECT lo mismo que select? ¿Es 'Hola' igual a 'hOlA'?
T-SQL es insensible a mayúsculas (Case-Insensitive) para las palabras clave del lenguaje. Escribir SELECT, Select o select es exactamente lo mismo para el motor.
Por convención, solemos escribir las palabras clave en MAYÚSCULAS para facilitar la lectura.
Aquí depende de la Collation (intercalación) configurada en el servidor o la base de datos.
- CI (Case Insensitive):
'A' = 'a'. Es la configuración predeterminada en la mayoría de instalaciones de SQL Server. - CS (Case Sensitive):
'A' != 'a'. En este modo, debéis ser extremadamente precisos.
