LENGUAJE TRANSACT SQL
1. Contenido
Definición
Transact-SQL también es conocido por sus abreviatura como T-SQL, como
definición es una extensión del SQL Microsoft junto son Sybase. Lo que
conocemos a SQL como el lenguaje de búsqueda estructurado lo que viene
hacer T-SQL es expandir los estándares de SQL no incluyendo programación
procedural, como algunas otras funciones para matemáticas, fechas, etc.
T-SQL es un lenguaje sumamente 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. Podemos hacer uso de T-SQL en lenguajes de programación como
puede ser Visual Basic. NET, C, Java. También lo podemos ejecutar en un
entorno SQL Server Management Studio. Se dice que T-SQL es un lenguaje muy
parecido al lenguaje hablado.
Tipos de Comandos (DDL, DML, etc.)
El DDL (Lenguaje de Descripción de Datos.)
Es la parte del SQL dedicada a la definición de la base de datos, consta de
sentencias para definir la estructura de la base de datos, permiten crear la base
de datos, crear, modificar o eliminar la estructura de las tablas, crear índices,
definir reglas de validación de datos, relaciones entre las tablas, etc. Permite
definir gran parte del nivel interno de la base de datos. Por este motivo estas
sentencias serán utilizadas normalmente por el administrador de la base de
datos.
CREATE, se usa para crear una base de datos, tabla, vistas, etc.
ALTER, se utiliza para modificar la estructura, por ejemplo añadir o
borrar columnas de una tabla.
DROP, con esta sentencia, podemos eliminar los objetos de la
estructura, por ejemplo un índice o una secuencia.
El DCL (Lenguaje de Control de Datos.)
Ejerce un control sobre los datos tal como la asignación de privilegios de acceso
a los datos (GRANT/REVOKE), La gestión de transacciones
(COMMIT/ROLLBACK).
Una transacción se puede definir como un conjunto de acciones que se tienen
que realizar todas o ninguna para preservar la integridad de la base de datos.
Por ejemplo supongamos que tenemos una base de datos para las reservas de
avión. Cuando un usuario pide reservar una plaza en un determinado vuelo, el
sistema tiene que comprobar que queden plazas libres, si quedan plazas
reservará la que quiera el usuario generando un nuevo billete y marcando la
plaza como ocupada. Aquí tenemos un proceso que consta de dos operaciones
de actualización de la base de datos (crear una nueva fila en la tabla de billetes
y actualizar la plaza reservada en el vuelo, poniéndola como ocupada) estas dos
operaciones se tienen que ejecutar o todas o ninguna, si después de crear el
billete no se actualiza la plaza porque se cae el sistema, por ejemplo, la base de
datos quedaría en un estado inconsistente ya que la plaza constaría como libre
cuando realmente habría un billete emitido para esta plaza. En este caso el
sistema tiene el mecanismo de transacciones para evitar este error. Las
operaciones se incluyen las dos en una misma transacción y así el sistema sabe
que las tiene que ejecutar las dos, si por lo que sea no se pueden ejecutar las
dos, se encarga de deshacer los cambios que se hubiesen producido para no
ejecutar ninguna.
Las instrucciones que gestionan las autorizaciones serán utilizadas normalmente
por el administrador mientras que las otras, referentes a proceso de
transacciones serán utilizadas también por los programadores.
GRANT, permite otorgar permisos.
REVOKE, elimina los permisos que previamente se han concedido.
El DML (Lenguaje de Manipulación de Datos.)
Se compone de las instrucciones para el manejo de los datos, para insertar
nuevos datos, modificar datos existentes, para eliminar datos y la más utilizada,
para recuperar datos de la base de datos. Veremos que una sola instrucción de
recuperación de datos es tan potente que permite recuperar datos de varias
tablas a la vez, realizar cálculos sobre estos datos y obtener resúmenes.
El DML interactúa con el nivel externo de la base de datos por lo que sus
instrucciones son muy parecidas, por no decir casi idénticas, de un sistema a
otro, el usuario sólo indica lo que quiere recuperar no cómo se tiene que
recuperar, no influye el cómo están almacenados los datos.
Es el lenguaje que utilizan los programadores y los usuarios de la base de datos.
SELECT, esta sentencia se utiliza para realizar consultas sobre los datos.
INSERT, con esta instrucción podemos insertar los valores en una base de
datos.
UPDATE, sirve para modificar los valores de uno o varios registros.
DELETE, se utiliza para eliminar las finas de una tabla.
Funciones - Identificadores
El nombre de un objeto de base de datos se conoce como su identificador.
Cualquier elemento de Microsoft SQL Server puede tener un identificador.
Servidores, bases de datos y objetos de bases de datos, como tablas, vistas,
columnas, índices, desencadenadores, procedimientos, restricciones, reglas,
etc. Pueden tener identificadores.
Se requiere que la mayor parte de los objetos tengan identificadores; pero para
ciertos objetos, como las restricciones, son opcionales.
El identificador de un objeto se crea cuando se define el objeto.
A continuación, el identificador se utiliza para hacer referencia al objeto. Por
ejemplo, la instrucción siguiente crea una tabla con el identificador TableXy dos
columnas con los identificadores KeyCol y Description:
CREATE TABLE TableX
(KeyCol INT PRIMARY KEY, Description nvarchar(80))
La intercalación de un identificador depende del nivel en que está definido. Se
asigna a los identificadores de objetos de instancia, como los inicios de sesión y
los nombres de base de datos, la intercalación predeterminada de la instancia.
A los identificadores de objetos de una base de datos, como nombres de tablas,
vistas y columnas, se asigna la intercalación predeterminada de la base de datos.
Por ejemplo, es posible crear dos tablas con nombres que solo se diferencian en
las mayúsculas en una base de datos con intercalación que distinga entre
mayúsculas y minúsculas, pero no se pueden crear en una base de datos con
intercalación que no distinga entre mayúsculas y minúsculas.
CLASES DE IDENTIFICADORES
Existen dos clases de identificadores:
Identificadores normales.- Siguen las reglas de formato de los identificadores.
Los identificadores normales no están delimitados cuando se usan en
instrucciones Transact-SQL.
SELECT *
FROM TableX
WHERE KeyCol = 124
Identificadores delimitados.- Se incluyen entre comillas dobles (") o corchetes ([
]). Los identificadores que siguen las reglas de formato de los identificadores
pueden no estar delimitados. Por ejemplo:
SELECT *
FROM [TableX] --Delimiter is optional.
WHERE [KeyCol] = 124 --Delimiter is optional.
Ambos identificadores, normales y delimitados, deben tener entre 1 y 128
caracteres. En el caso de las tablas temporales locales, el identificador puede
tener un máximo de 116 caracteres.
El nombre función es un calificado o no calificado que designa una función. El
gestor de bases de datos califica implícitamente un nombre de función no
calificado en una sentencia de SQL según el contexto.
Tipos de Datos – Palabras Reservadas
Microsoft SQL Server utiliza palabras clave reservadas para definir, manipular y
tener acceso a las bases de datos. Las palabras clave reservadas forman parte
de la gramática del lenguaje Transact-SQL que utiliza SQL Server para analizar
y comprender las instrucciones y lotes de Transact-SQL. Aunque resulta
sintácticamente posible utilizar palabras clave reservadas de SQL Server como
identificadores y nombres de objetos en secuencias de comandos de Transact-
SQL, sólo se puede hacer utilizando identificadores delimitados.
La siguiente tabla enumera las palabras clave reservadas de SQL Server.
ADD EXISTS PRECISION
ALL EXIT PRIMARY
ALTER EXTERNAL PRINT
AND FETCH PROC
ANY FILE PROCEDURE
AS FILLFACTOR PUBLIC
ASC FOR RAISERROR
AUTHORIZATION FOREIGN READ
BACKUP FREETEXT READTEXT
BEGIN FREETEXTTABLE RECONFIGURE
BETWEEN FROM REFERENCES
BREAK FULL REPLICATION
BROWSE FUNCTION RESTORE
BULK GOTO RESTRICT
BY GRANT RETURN
CASCADE GROUP REVERT
CASE HAVING REVOKE
CHECK HOLDLOCK RIGHT
CHECKPOINT IDENTITY ROLLBACK
CLOSE IDENTITY_INSERT ROWCOUNT
CLUSTERED IDENTITYCOL ROWGUIDCOL
COALESCE IF RULE
COLLATE IN SAVE
COLUMN INDEX SCHEMA
COMMIT INNER SECURITYAUDIT
COMPUTE INSERT SELECT
CONSTRAINT INTERSECT SESSION_USER
CONTAINS INTO SET
CONTAINSTABLE IS SETUSER
CONTINUE JOIN SHUTDOWN
CONVERT KEY SOME
CREATE KILL STATISTICS
CROSS LEFT SYSTEM_USER
CURRENT LIKE TABLE
CURRENT_DATE LINENO TABLESAMPLE
CURRENT_TIME LOAD TEXTSIZE
CURRENT_TIMESTAMP MERGE THEN
CURRENT_USER NATIONAL TO
CURSOR NOCHECK TOP
DATABASE NONCLUSTERED TRAN
DBCC NOT TRANSACTION
DEALLOCATE NULL TRIGGER
DECLARE NULLIF TRUNCATE
DEFAULT OF TSEQUAL
DELETE OFF UNION
DENY OFFSETS UNIQUE
DESC ON UNPIVOT
DISK OPEN UPDATE
DISTINCT OPENDATASOURCE UPDATETEXT
DISTRIBUTED OPENQUERY USE
DOUBLE OPENROWSET USER
DROP OPENXML VALUES
DUMP OPTION VARYING
ELSE OR VIEW
END ORDER WAITFOR
ERRLVL OUTER WHEN
ESCAPE OVER WHERE
EXCEPT PERCENT WHILE
EXEC PIVOT WITH
EXECUTE PLAN WRITETEXT
Operadores – Flujos de Control
Un operador es un símbolo que especifica una acción realizada por una o más
expresiones. En las siguientes tablas se incluyen las categorías de operadores
que utiliza SQL Server.
Operadores
Aritméticos
Lógicos
Bit a bit
Comparación
FLUJOS DE CONTROL
IF… ELSE, nos proporciona el control en la toma de decisión sobre la base de
una prueba lógica.
WHILE, nos repite una instrucción o un bloque de instrucciones mientras una
condición es verdadera.
BEGIN… END, nos define la extensión de un bloque de comandos T-SQL.
TRY… CATCH, nos define la estructura de manejo de excepciones.
BEGIN TRANSACTION, nos marcar un bloque de instrucciones como parte de
una transacción explicita.
Y para finalizar, COMMIT TRANSACTION o ROLLBACK TRANSACTION que
nos insta a aprobar o rechazar una ejecución dada de una transacción.
2. Resumen
T-SQL es un lenguaje sumamente 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. Podemos hacer uso de T-SQL en lenguajes de programación como
puede ser Visual Basic. NET, C, Java.
El DDL es la parte del SQL dedicada a la definición de la base de datos, consta
de sentencias para definir la estructura de la base de datos, permiten crear la
base de datos, crear, modificar o eliminar la estructura de las tablas, crear
índices, definir reglas de validación de datos, relaciones entre las tablas, etc.
El DCL ejerce un control sobre los datos tal como la asignación de privilegios de
acceso a los datos (GRANT/REVOKE), La gestión de transacciones
(COMMIT/ROLLBACK).
El DMIL se compone de las instrucciones para el manejo de los datos, para
insertar nuevos datos, modificar datos existentes, para eliminar datos y la más
utilizada, para recuperar datos de la base de datos.
3. Summary
T-SQL is an extremely powerful language that helps us define tasks while working
with databases. Because this language has some restrictions in the language
itself we almost always see it used in the creation of stored procedures, user
functions and also in triggers. We can make use of T-SQL in programming
languages such as Visual Basic. NET, C, Java.
The DDL is the part of the SQL dedicated to the definition of the database,
consists of statements to define the structure of the database, allow to create the
database, create, modify or eliminate the structure of the tables, create indexes ,
define data validation rules, relationships between tables, etc.
The DCL exercises control over data such as the allocation of data access
privileges (GRANT / REVOKE), transaction management (COMMIT /
ROLLBACK).
The DMIL consists of the instructions for the handling of the data, to insert new
data, modify existing data, to eliminate data and the most used, to recover data
from the database.
4. Recomendaciones
Es recomendable usar joins a un subquery.
En lo posible usar lo menos posible un ORDER BY dentro de la consulta y dejarlo
del lado del cliente o de la aplicación, ésta es una de las operaciones que más
consume recursos en una consulta.
5. Conclusiones
Especificar el alias de la tabla delante de cada campo definido en el select, esto
le ahorra tiempo al motor de tener que buscar a que tabla pertenece el campo
especificado.
No grabar los procedimientos almacenados con un nombre con prefijo “sp_”.
Cuando el nombre de un procedimiento almacenado comienza con “sp_”, SQL
Server lo busca en el siguiente orden:
Si una consulta tiene uno o más operadores OR, considera reescribir la consulta
en varias consultas que se unen usando el operador UNION ALL.
6. Apreciación del Equipo
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.
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.
7. Glosario de Términos
Triggers.- Un "trigger" (disparador o desencadenador) es un tipo de
procedimiento almacenado que se ejecuta cuando se intenta modificar los datos
de una tabla (o vista).
Se definen para una tabla (o vista) específica.
Se crean para conservar la integridad referencial y la coherencia entre los datos
entre distintas tablas.
ROLLBACK TRANSACTION.- Revierte una transacción explícita o implícita al
comienzo de la transacción o a un punto de rescate dentro de la transacción.
Puede usar ROLLBACK TRANSACTION para borrar todas las modificaciones
de datos realizadas desde el inicio de la transacción o hasta un punto de rescate.
También libera los recursos que posee la transacción.
Intercalación.- La intercalación define el conjunto de caracteres utilizados por
SQL Server para almacenar la información en la base de datos; además indica
la forma en que se utilizará la normalización de cadenas para las columnas
Unicode.
La intercalación se puede seleccionar entre varios conjuntos de caracteres
especificados por Windows o por SQL Server. La intercalación se debe
seleccionar al momento de la instalación; si no se escoge una en particular, SQL
Server empleará la intercalación utilizada por el sistema operativo; esta
intercalación se conoce como intercalación predeterminada.
Referencia de Transact-SQL.- Transact-SQL es fundamental para trabajar con
SQL Server. Todas las aplicaciones que se comunican con SQL Server lo hacen
enviando instrucciones Transact-SQL al servidor, independientemente de la
interfaz de usuario de la aplicación.
BACKUP.- Una copia de seguridad, respaldo, copia de respaldo, copia de
reserva (del inglés backup) en ciencias de la información e informática es una
copia de los datos originales fuera de la infraestructura que se realiza con el fin
de disponer de un medio para recuperarlos en caso de su pérdida.
8. Bibliografía o Linkografía
[Link]
[Link]
[Link]
[Link]