T-SQL (Transact-SQL) es una extensión del lenguaje SQL desarrollado por Microsoft para SQL Server. Añade características como variables, control de flujo, manejo de errores y más.
Conexión a la base de datos
Conectar a una base de datos en SQL Server
USE nombre_base_datos;
Conexión con Autenticación de Windows
sqlcmd -S nombre_servidor -d nombre_base_datos -E
Conexión con Autenticación de SQL Server
sqlcmd -S nombre_servidor -U nombre_usuario -P contraseña -d nombre_base_datos
Selección de datos
Seleccionar todos los registros
Obtiene todos los datos de una tabla.
SELECT * FROM nombre_tabla;
Seleccionar columnas específicas
Permite seleccionar solo las columnas que te interesan.
SELECT columna1, columna2 FROM nombre_tabla;
Renombrar una columna en la salida
Se usa AS
para renombrar columnas en la salida.
SELECT columna1 AS nuevo_nombre FROM nombre_tabla;
Limitar número filas
La cláusula TOP
se utiliza para limitar el número de filas devueltas.
SELECT TOP 10 * FROM tabla;
Filtros con WHERE
Filtrar registros con condiciones
El comando WHERE
filtra los resultados basados en una condición.
SELECT * FROM nombre_tabla WHERE columna = 'valor';
Operadores de comparación
=
Igual<>
o!=
Diferente>
Mayor que<
Menor que>=
Mayor o igual<=
Menor o igual
Ordenación y agrupamiento
Ordenar resultados
Se usa ORDER BY
para ordenar los datos.
SELECT * FROM nombre_tabla ORDER BY columna1 DESC;
Agrupar resultados con GROUP BY
Agrupa filas que tienen los mismos valores en columnas especificadas.
SELECT columna1, COUNT(*) FROM nombre_tabla GROUP BY columna1;
Filtrar grupos con HAVING
HAVING
filtra los grupos creados con GROUP BY
.
SELECT columna1, COUNT(*) FROM nombre_tabla GROUP BY columna1 HAVING COUNT(*) > 1;
Operadores Lógicos
AND
El operador AND
se utiliza para combinar múltiples condiciones y todas deben ser verdaderas.
SELECT * FROM tabla WHERE condicion1 AND condicion2;
OR
El operador OR
se utiliza para combinar múltiples condiciones y al menos una debe ser verdadera.
SELECT * FROM tabla WHERE condicion1 OR condicion2;
NOT
El operador NOT
se utiliza para negar una condición.
SELECT * FROM tabla WHERE NOT condicion;
Joins (Uniones)
Los Joins se utilizan para combinar filas de dos o más tablas basadas en una condición relacionada.
INNER JOIN
Devuelve filas cuando hay coincidencias en ambas tablas.
SELECT * FROM tabla1
INNER JOIN tabla2 ON tabla1.columna = tabla2.columna;
LEFT JOIN
Devuelve todas las filas de la tabla izquierda, y las coincidencias de la derecha, si existen.
SELECT * FROM tabla1
LEFT JOIN tabla2 ON tabla1.columna = tabla2.columna;
RIGHT JOIN
Devuelve todas las filas de la tabla derecha, y las coincidencias de la izquierda.
SELECT * FROM tabla1
RIGHT JOIN tabla2 ON tabla1.columna = tabla2.columna;
FULL OUTER JOIN
Devuelve todas las filas cuando hay coincidencias en una de las tablas o ambas.
SELECT * FROM tabla1
FULL OUTER JOIN tabla2 ON tabla1.columna = tabla2.columna;
Subconsultas
Subconsulta en SELECT
Una consulta dentro de otra consulta para obtener resultados basados en una consulta interna.
SELECT columna1 FROM nombre_tabla WHERE columna2 = (SELECT MAX(columna2) FROM otra_tabla);
Subconsulta en FROM
Permite usar los resultados de una consulta como una tabla temporal.
SELECT tabla.columna1
FROM (SELECT * FROM otra_tabla WHERE columna = 'valor') AS tabla;
Manipulación de Datos
Insertar datos en una tabla
Inserta un nuevo registro en la tabla.
INSERT INTO nombre_tabla (columna1, columna2) VALUES ('valor1', 'valor2');
Actualizar registros
Modifica los datos existentes en la tabla.
UPDATE nombre_tabla SET columna1 = 'nuevo_valor' WHERE columna2 = 'valor';
Eliminar registros
Borra filas de la tabla.
DELETE FROM nombre_tabla WHERE columna = 'valor';
Variables Control de flujo
Declaración de variables
Definir una variable
Se usan variables locales para almacenar valores temporales.
DECLARE @mi_variable INT;
SET @mi_variable = 100;
Usar variables en consultas
Las variables pueden ser utilizadas en las consultas de T-SQL.
SELECT * FROM nombre_tabla WHERE columna = @mi_variable;
Condicionales
IF…ELSE
Permite ejecutar diferentes bloques de código dependiendo de una condición.
IF (@mi_variable > 50)
PRINT 'Es mayor que 50';
ELSE
PRINT 'Es menor o igual a 50';
CASE
Evalúa una expresión y devuelve un valor dependiendo de las condiciones.
SELECT columna,
CASE
WHEN columna > 100 THEN 'Alto'
WHEN columna BETWEEN 50 AND 100 THEN 'Medio'
ELSE 'Bajo'
END AS clasificacion
FROM nombre_tabla;
Funciones en T-SQL
Funciones de agregación
Count
Cuenta el número de filas.
SELECT COUNT(*) FROM nombre_tabla;
Sum
Suma los valores de una columna.
SELECT SUM(columna_numérica) FROM nombre_tabla;
Avg
Calcula el promedio de los valores de una columna.
SELECT AVG(columna_numérica) FROM nombre_tabla;
Max / Min
Devuelve el valor máximo o mínimo de una columna.
SELECT MAX(columna_numérica) FROM nombre_tabla;
Funciones de cadena
Concat
Concatena dos o más cadenas de texto.
SELECT CONCAT(columna1, columna2) FROM nombre_tabla;
Len
Devuelve la longitud de una cadena.
SELECT LEN(columna) FROM nombre_tabla;
SubString
Extrae una porción de una cadena de texto.
SELECT SUBSTRING(columna, inicio, longitud) FROM nombre_tabla;
Funciones de fecha y hora
GetData
Devuelve la fecha y hora actual.
SELECT GETDATE();
DateAdd
Suma una cantidad de tiempo a una fecha.
SELECT DATEADD(day, 10, GETDATE());
DateDiff
Calcula la diferencia entre dos fechas.
SELECT DATEDIFF(day, fecha1, fecha2);
Format
Formatea una fecha o número según un formato específico.
SELECT FORMAT(GETDATE(), 'yyyy-MM-dd');
Manejo de transacciones
Iniciar una transacción
Inicia una transacción que agrupa varias operaciones de SQL.
BEGIN TRANSACTION;
Commit y Rollback
COMMIT
guarda los cambios.ROLLBACK
revierte los cambios si hay un error.
BEGIN TRANSACTION;
-- Ejecución de comandos SQL
COMMIT TRANSACTION;
-- O, si hay error
ROLLBACK TRANSACTION;
Try Catch
Se usa para manejar errores en T-SQL.
BEGIN TRY
-- Comandos SQL que pueden fallar
SELECT * FROM nombre_tabla;
END TRY
BEGIN CATCH
PRINT 'Ocurrió un error';
END CATCH;
Creación y Modificación de Tablas
Crear tabla
Se utiliza para crear una nueva tabla en la base de datos.
CREATE TABLE nombre_tabla (
columna1 tipo_dato1,
columna2 tipo_dato2,
...
);
Modificar tabla
Se utiliza para modificar una tabla existente.
ALTER TABLE nombre_tabla ADD columna tipo_dato;
Eliminar tabla
Se utiliza para eliminar una tabla existente.
DROP TABLE nombre_tabla;
Eliminar tabla solo si existe
IF OBJECT_ID('nombre_tabla', 'U') IS NOT NULL
DROP TABLE nombre_tabla;
Tablas Temporales
Las tablas temporales son estructuras que se utilizan para almacenar datos temporalmente dentro de una sesión de SQL Server.
CREATE TABLE #tablaTemporal (
columna1 INT,
columna2 VARCHAR(50)
);
Índices y optimización
Crear un índice
Los índices mejoran la velocidad de búsqueda en las tablas.
CREATE INDEX idx_nombre_columna
ON nombre_tabla (columna);
Eliminar un índice
Elimina un índice de una tabla.
DROP INDEX idx_nombre_columna ON nombre_tabla;
Vistas
Las vistas son consultas almacenadas que se pueden utilizar como tablas virtuales.
Crear una Vista
CREATE VIEW nombre_vista AS
SELECT columna1, columna2 FROM tabla WHERE condicion;
Utilizar una Vista
SELECT * FROM nombre_vista;
Procedimientos almacenados
Crear un procedimiento almacenado
Un procedimiento almacenado es un conjunto de comandos SQL que se pueden ejecutar como una unidad.
CREATE PROCEDURE nombre_procedimiento
AS
BEGIN
SELECT * FROM nombre_tabla;
END;
Ejecutar un procedimiento almacenado
Para ejecutar el procedimiento.
EXEC nombre_procedimiento;
Procedimientos con parámetros
Los procedimientos almacenados pueden aceptar parámetros.
CREATE PROCEDURE nombre_procedimiento
@parametro1 INT,
@parametro2 VARCHAR(50)
AS
BEGIN
SELECT * FROM nombre_tabla WHERE columna = @parametro1;
END;
Seguridad y Usuarios
Crear un Usuario
CREATE LOGIN nombre_usuario WITH PASSWORD = 'contraseña';
Asignar Permisos
GRANT permiso ON objeto TO nombre_usuario;
Revocar Permisos
REVOKE permiso ON objeto FROM nombre_usuario;