Este documento proporciona una introducción a SQL Server, incluyendo una descripción de SQL, Transact SQL y sus principales características como procedimientos almacenados, funciones, triggers y cursores. Explica cómo crear y consultar bases de datos, y los diferentes tipos de objetos de base de datos que se pueden definir para automatizar tareas y aplicar lógica de negocio.
6. ¿QUÉ ES SQL? Es un lenguaje estándar de comunicación con bases de datos, un lenguaje normalizado que nos permite trabajar con cualquier tipo de lenguaje (ASP o PHP) en combinación con cualquier tipo de base de datos (MS Access, SQL Server, MySQl, etc.) pero eso no quiere decir que sea idéntico para cada base de datos. SQL es un lenguaje de consulta para los sistemas de bases de datos relaciónales, pero que no posee la potencia de los lenguajes de programación.
7. SQL SERVER Microsoft SQL Server es un sistema de gestión de bases de datos relacionales (RDBMS), diseñado para ejecutarse en plataformas que van desde computadoras portátiles hasta servidores multiprocesador grande. Un Sistema de Gestión de Bases de Datos Relacionales tiene como objetivo servir de interfaz de comunicación entre una base de datos y las aplicaciones que la utilizan.
15. CREACION DE UNA BASE DE DATOS SINTAXIS DE CREACION DE UNA BASE DE DATOS Para crear una base de datos en el SQL, se usa lo siguiente: CREATE DATABASE nombre_bd; SINTAXIS DE ELIMINACION DE UNA BASE DE DATOS DROP DATABASE nombre_bd;
31. Procedimiento Almacenado Es un programa dentro de la base de datos que ejecuta una acción o conjunto de acciones específicas. Tiene un nombre, conjunto de parámetros y un bloque de código. Ventajas Compilación: La primera vez que se invoca un SP, el motor lo compila y desde ahí, se sigue usando la versión compilada del mismo, hasta que se modifique o se reinicie el servicio de SQL. Automatización: Si tenemos un conjunto de instrucciones T-SQL, las cuales queremos ejecutar de manera ordenada, un SP es la mejor manera de hacerlo.
32. Ventajas Administración: Cuando realizamos aplicaciones con un gran número de líneas de código, y queremos hacer cambios, solo implica modificar un SP y no toda la aplicación. Seguridad: Una parte importante es que a los usuarios de nuestra aplicación, solo les proporcionamos los permisos para ejecutar los procedimientos almacenados y no el acceso a todos los objetos de la base. Programabilidad: Los SP admiten el uso de variables y estructuras de control como IF, Bucles, Case, etc. además del manejo de transacción y permite controlar excepciones. Trafico de Red: Pueden reducir el tráfico de la red, debido a que se trabaja sobre el motor (en el servidor), y si una operación incluye hacer un trabajo de lectura primero y en base a eso realizar algunas operaciones, esos datos que se obtienen no viajan por la red.
33. Tipos de procedimientos almacenados Procedimientos almacenados del Sistema Se almacenan en la Base de Datos Master, el procedimiento almacenado del sistema (identificado con prefijo sp) mantiene recuperando la información de las tablas del sistema. Los procedimientos almacenados del sistema pueden ejecutarse desde cualquier base de datos
34. Definidos por el Usuario Un procedimiento almacenado puede incluir parámetros de entrada, devolver resultados tabulares o escalares y mensajes para el cliente, invocar instrucciones de lenguaje de definición de datos (DDL) e instrucciones de lenguaje de manipulación de datos (DML), así como devolver parámetros de salida CLR: Es una referencia a un método CommonLanguageRuntime (CLR) de Microsoft .NET Framework que puede aceptar y devolver parámetros suministrados por el usuario. Se implementan como métodos públicos y estáticos en una clase de un ensamblado de .NET Framework. Transact-SQL: Es una colección guardada de instrucciones Transact-SQL que puede tomar y devolver los parámetros proporcionados por el usuario.
35. Procedimientos almacenados temporales Pueden ser locales, aquellos que sus nombres empiecen con el símbolo #, o global aquellos que sus nombres empiecen con el símbolo ##, los procedimientos almacenados temporales locales están disponibles dentro de una sola sesión del usuario; los procedimientos almacenados globales están disponibles dentro de todas las sesiones.
36. Procedimientos almacenados remotos Son procedimientos almacenados que se llaman de un servidor remoto o cliente que se conectan a un servidor diferente. Procedimientos Almacenados Extendidos(xp_) Los procedimientos almacenados extendidos le permiten crear sus propias rutinas externas en un lenguaje de programación como C. Los procedimientos almacenados extendidos aparecen a los usuarios como un procedimiento almacenado normal y se ejecuta de la misma manera.
37. Funciones en Transact SQL Es un grupo de instrucciones con un objetivo en particular. Las funciones pueden recibir datos desde afuera al ser llamadas a través de los parámetros y deben entregar un resultado.
38. SQL Server proporciona al usuario la posibilidad de definir sus propias funciones, conocida como UDF (userdefinedfunctions). Funciones escalares Las funciones escalares devuelven un único valor de cualquier tipo de los datos tal como int, money, varchar, real, etc. Funciones en línea Son las funciones que devuelven un conjunto de resultados correspondientes a la ejecución de una sentencia SELECT. Funciones en línea de múltiples sentencias Son similares a las funciones en línea excepto que el conjunto de resultados que devuelven puede estar compuesto por la ejecución de varios consultas SELECT. Este tipo de función se usa en situaciones donde se requiere una mayor lógica de proceso.
39. Triggers en Transact SQL Un trigger (o desencadenador) es una clase especial de procedimiento almacenado que se ejecuta automáticamente cuando se produce un evento en el servidor de bases de datos. Trigger DML, se ejecutan cuando un usuario intenta modificar datos mediante un evento de lenguaje de manipulación de datos (DML). Los eventos DML son instrucciones INSERT, UPDATE o DELETE de una tabla o vista. Trigger DDL, se ejecutan en respuesta a una variedad de eventos de lenguaje de definición de datos (DDL). Estos eventos corresponden principalmente a instrucciones CREATE, ALTER y DROP de Transact-SQL, y a determinados procedimientos almacenados del sistema que ejecutan operaciones de tipo DDL.
40. Sintaxis de un trigger CREATE TRIGGER nombre_triggerON { nombre_tabla_o_vista } { { FOR | AFTER | INSTEAD OF } { instruccion_modificacion1, instruccion_modificacion2, instruccion_modificacion3 } AS Instrucción_sql0 ,Instruccion_sq1 ,Instruccion_sql2 ,…Instrucción_sqlN}
41. Donde cada valor significa: nombre_tabla_o_vista. Es la tabla o vista donde se va ejecutar el desencadenador AFTER ó FOR. Es el valor predeterminado para los desencadenadores ejecutados en tablas que indica que el desencadenador se activa o ejecuta, luego de las Instrucciones T-SQL, siempre y cuando se hayan ejecutado correctamente, con todo lo que esto implica. AFTER es similar a FOR, únicamente se integra FOR en T-SQL por compatibilidad con versiones anteriores, pero es recomendable usar AFTER en lugar de FOR, aunque sea indistinto uno de otro. INSTEAD OF. Esta instrucción es lo contrario a la anterior, indica que lo primero que se ejecuta son las Instrucciones T-SQL del Desencadenador, se activan en lugar de la acción original.
42. instruccion_modificacion Se refiere a DELETE, INSERT y/o UPDATE; instrucciones de modificación que activarán el desencadenador cuando se aplican o intentan aplicar a la tabla o vista. Puede definirse una o todas en diferentes combinaciones, separadas por comas. Con sus respectivas excepciones. Instrucción_sql. Son las condiciones y acciones del desencadenador que se ejecutan cuando se inserta actualiza o elimina en la tabla en turno, según la configuración del desencadenador, ‘After’ o ‘Instead of’, según sea.
43. Cursores en Transact SQL Un cursor es una variable que nos permite recorrer con un conjunto de resultados obtenido a través de una sentencia SELECT fila a fila. Cuando trabajamos con cursores, la función @@FETCH_STATUS nos indica el estado de la última instrucción FETCH emitida, los valores posibles son:
44. Sintaxis de un Cursor en Transact SQL -- Declaración del cursor DECLARE<nombre_cursor>CURSOR FOR <sentencia_sql> -- apertura del cursor OPEN<nombre_cursor> -- Lectura de la primera fila del cursor FETCH<nombre_cursor>INTO<lista_variables> WHILE(@@FETCH_STATUS= 0) BEGIN -- Lectura de la siguiente fila de un cursor FETCH<nombre_cursor>INTO<lista_variables> ... END-- Fin del bucle WHILE -- Cierra el cursor CLOSE<nombre_cursor> -- Libera los recursos del cursor DEALLOCATE<nombre_cursor>