2. Definición
Transact-SQL (T-SQL) es una extensión al SQL de Microsoft y
Sybase. SQL, que frecuentemente se dice ser un Lenguaje de
Búsquedas Estructurado (por sus siglas en inglés), es un
lenguaje de cómputo estandarizado, desarrollado originalmente
por IBM para realizar búsquedas, alterar y definir bases de
datos relacionales utilizando sentencias declarativas. T-SQL
expande el estándar de SQL para incluir programación
procedural, variables locales, varias funciones de soporte para
procesamiento de strings, procesamiento de fechas,
matemáticas, etc, y cambios a las sentencias DELETE y
UPDATE. Estas características adicionales hacen de T-SQL un
lenguaje que cumple con las características de un autómata de
Turing.
3. El Transact-SQL permite:
Definir bloques de instrucciones SQL que se tratan como
unidades de ejecución.
Realizar ejecuciones condicionales.
Realizar ejecuciones iterativas o repetitivas.
Garantizar el tratamiento modular con la declaración de
variables locales y el uso de procedimientos almacenados.
Manipular tupla a tupla el resultado de una consulta.
4. Características generales del lenguaje Transact-
SQL:
El lenguaje SQL se creó con la finalidad de ser un lenguaje muy
potente y a la vez muy fácil de utilizar, se ha conseguido en gran
medida ya que con una sola frase (instrucción) podemos
recuperar datos complejos (por ejemplo datos que se encuentran
en varias tablas, combinándolos, calculando resúmenes), y
utilizando un lenguaje muy cercano al lenguaje hablado
(¡suponiendo que hablamos inglés, claro!).
5. Sin embargo no permite:
Crear interfaces de usuario.
Crear aplicaciones ejecutables, sino elementos que en
algún momento llegarán al servidor de datos y serán
ejecutados.
Debido a estas restricciones se emplea generalmente para
crear procedimientos almacenados, triggers y funciones de
usuario. Puede ser utilizado como cualquier SQL como
lenguaje embebido en aplicaciones desarrolladas en otros
lenguajes de programación como Visual Basic, C, Java,
etcétera.
6. Comando Descripción
CREATE
Utilizado para crear nuevas tablas, stored procedures e
índices
DROP
Empleado para eliminar tablas, stored procedures e
índices
ALTER
Utilizado para modificar las tablas agregando campos o
cambiando la definición de los campos
Comandos DLL:
Comandos DDL (create, alter, y drop), DML (insert,
update, delete y select), DCL (deny y grant), TCL
(commit y rollback) CFL (begin, if, while, etc.)
7. Comandos DML:
Comando Descripción
SELECT
Utilizado para consultar registros de la base de datos
que satisfagan un criterio determinado.
INSERT
Utilizado para cargar lotes de datos en la base de datos
en una única operación.
DELETE
Utilizado para modificar los valores de los campos y
registros especificados.
UPDATE
Utilizado para eliminar registros de una tabla de una
base de datos.
8. Comandos DCL:
Comando Descripción
GRANT Permite dar permisos a uno o varios usuarios o roles
para realizar tareas determinadas.
REVOKE Permite eliminar permisos que previamente se han
concedido con GRANT.
9. Comandos TCL:
Comando Descripción
COMMIT Guarda el trabajo realizado
ROLLBACK Restaura la base de datos a la original,
hasta el último COMMIT
Comandos CFL:
Comando Descripción
BEGIN- END Puede ejecutar un conjunto de
instrucciones TRANSACT SQL
IF…ELSE Evalúa una condición y determina el de
flujo de código
TRY…CATCH Permite el control de errores
10. Ejemplos:
A. Usar SELECT para recuperar filas y columnas
En el siguiente ejemplo se muestran tres fragmentos de código. En el
primer ejemplo de código, se devuelven todas las filas (no se especifica
la cláusula WHERE) y todas las columnas (con *) de la tabla Product de
la base de datos
USE AdventureWorks2012;
GO
SELECT *
FROM Production.Product
ORDER BY Name ASC;
-- Alternate way.
USE AdventureWorks2012;
GO
SELECT p.*
FROM Production.Product AS p
ORDER BY Name ASC;
GO
11. B. Usar SELECT con encabezados de columna y cálculos
En los siguientes ejemplos se devuelven todas las filas de la tabla
Producto. En el primer ejemplo se devuelven las ventas totales y
los descuentos de cada producto. En el segundo ejemplo se
calculan los beneficios totales de cada producto.
USE AdventureWorks2012;
GO
SELECT p.Name AS ProductName,
NonDiscountSales = (OrderQty * UnitPrice),
Discounts = ((OrderQty * UnitPrice) * UnitPriceDiscount)
FROM Production.Product AS p
INNER JOIN Sales.SalesOrderDetail AS sod
ON p.ProductID = sod.ProductID
ORDER BY ProductName DESC;
GO
12. C. Usar DISTINCT con SELECT
En el siguiente ejemplo se utiliza DISTINCT para evitar la
recuperación de títulos duplicados.
USE AdventureWorks2012;
GO
SELECT DISTINCT JobTitle
FROM HumanResources.Employee
ORDER BY JobTitle;
GO
13. RESUMEN
Transact-SQL es fundamental para trabajar con SQL
Server, es un lenguaje potente que nos ayuda a
definir tareas mientras trabajamos con bases de
datos. Debido a que este lenguaje tiene algunas
restricciones en el propio lenguaje casi siempre lo
vemos utilizado en la creación de los procedimientos
almacenados, funciones de usuario y también en los
triggers.
14. RECOMENDACIONES
EN SELECT:
- Promover el uso de EXISTS y NOT EXISTS, en lugar de IN y NOT IN.
- Si usa el operador UNION y existe la seguridad de que ambos select NO tienen
registros duplicados, entonces es mejor usar UNION ALL, para evitar que
implícitamente se haga uso del operador DISTINCT el cual puede requerir que se
almacenen todos los datos de salida en una tabla temporal para que luego se reordenen
y se filtren los datos duplicados, lo cual aumenta considerablemente el costo de la
consulta.
PROCEDIMIENTOS ALMACENADOS:
- No usar GOTO… en remplazo usar Try Catch
- Se recomienda que un procedimiento no sobrepase las 400 líneas de código (sin
contemplar los comentarios). En caso que tengas un procedimiento demasiado grande
es más adecuado particionarlo. Tener en cuenta que las tablas temporales y
transacciones se mantienen en procedimientos dependientes.
15. WHERE:
-Si se usa LIKE en la cláusula WHERE, se debe evitar el uso del
operador “%” al principio de la cadena a buscar dado que originaría que
se tienen que leer todos los datos de la tabla para poder responder dicha
consulta, adicionalmente es recomendable que existan (como mínimo) 3
caracteres antes del operador “%”.
-Las columnas filtro TIENEN QUE SER del mismo tipo de la columna
que existe en la tabla (para evitar conversiones al momento de
ejecución).
16. CONCLUSIONES
- Que es un lenguaje muy utilizado para definir,
controlar y acceder a los datos almacenados de una
base de datos.
- Es un lenguaje universal que se emplea en
cualquier sistema gestor de base de datos.
- Es un lenguaje muy potente que nos ayuda a definir
tareas mientras trabajamos con bases de datos.