Вы находитесь на странице: 1из 66

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

LABORATORIO N 1
Objetivos:

Introduccin a las bases de datos.

Estructura de las bases de datos. Base de Datos SQL. Base de Datos del sistema. Objetos de una base de datos. Estructura de una base de datos. Creacin de una Base de Datos y Tablas va Diseo. Creacin de una Base de Datos y Tablas Va Script. Tipo de Datos. Creacin de restricciones. Mantenimiento a una Tabla (Uso de las Sentencias Insert into, Update , Delete)

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

INTRODUCCION A LAS BASES DE DATOS


QU ES UNA BASE DE DATOS? En la vida cotidiana se interacciona continuamente con entidades tales como personas, documentos u otros. En una empresa, las entidades estn representadas por los operarios, los empleados, los clientes, los proveedores, las facturas. En un hospital nos encontraramos con los mdicos, pacientes, enfermeras, cuadros clnicos, etc. Puesto que en cada caso se debe trabajar con una gran cantidad de datos, surge la necesidad de almacenarlos de manera que nos resulten de fcil acceso en cada momento y, por consiguiente, tiles a nuestras actividades. Si por ejemplo cada da debemos gestionar varias decenas de clientes y facturas, utilizaremos un sistema para memorizar los datos como, por ejemplo, un archivo, ms bien antes que recurrir nicamente a la memoria de su computador Las fichas aparecen reagrupadas en archivos, cada uno de los cuales contiene en general las fichas de un slo tipo, las de los proveedores o las de los productos. Este sistema recibe el nombre de base de datos, que no es ninguna otra cosa ms que una coleccin de informaciones tales como el catlogo de los ficheros de una biblioteca, un listn telefnico o una enciclopedia. Los programas de gestin de base de datos (Database) estn programados para realizar operaciones que nos permiten acceder y, eventualmente, modificar los datos almacenados. Estas operaciones consisten en: Introduccin, cancelacin, modificacin y bsqueda de informacin a partir de los criterios seleccionados por el usuario de orden, clasificacin e impresin de los listados, por ejemplo, bajo el formato de etiquetas adhesivas para sobres. ESTRUCTURA DE LAS BASES DE DATOS Una vez se ha instalado Microsoft SQL Server 2005 y se ha diseado una distribucin de bases de datos y discos, se est preparado para crear una base de datos. SQL Server 2005 hace uso de los mtodos mejorados de almacenamiento de datos y administracin del espacio que se presentaron en SQL Server 2000. Las versiones anteriores del producto utilizaban dispositivos lgicos y segmentos de un tamao fijo para el almacenamiento de los datos; SQL Server 2005 usa archivos y grupos de archivos que pueden ser configurados para que crezcan o decrezcan automticamente.

Bases de Datos de SQL Server SQL Server soporta bases de datos del sistema y bases de datos del usuario. Las bases de datos del sistema, almacenan informacin que permite operar y administrar el sistema, mientras que las de usuario almacenan los datos requeridos por las operaciones del cliente. Las bases de datos del sistema son:

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Master La base de datos master se compone de las tablas de sistema que realizan el seguimiento de la instalacin del servidor y de todas las bases de datos que se creen posteriormente. Asimismo controla las asignaciones de archivos, los parmetros de configuracin que afectan al sistema, las cuentas de inicio de sesin. Esta base de datos es crtica para el sistema, as que es bueno tener siempre una copia de seguridad actualizada. Tempdb Es una base de datos temporal, fundamentalmente un espacio de trabajo, es diferente a las dems bases de datos, puesto que se regenera cada vez que arranca SQL Server. Se emplea para las tablas temporales creadas explcitamente por los usuarios, para las tablas de trabajo intermedias de SQL Server durante el procesamiento y la ordenacin de las consultas. Model Se utiliza como plantilla para todas las bases de datos creadas en un sistema. Cuando se emite una instruccin CREATE DATABASE, la primera parte de la base de datos se crea copiando el contenido de la base de datos model, el resto de la nueva base de datos se llena con pginas vacas. Msdb Es empleada por el servicio SQL Server Agent para guardar informacin con respecto a tareas de automatizacin como por ejemplo copias de seguridad y tareas de duplicacin, asimismo solucin a problemas. La informacin contenida en las tablas que contiene esta base de datos, es fcilmente accedida desde el Administrador Empresarial, as que se debe tener cuidado de modificar esta informacin directamente a menos que se conozca muy bien lo que se est haciendo. Distribution Almacena toda la informacin referente a la distribucin de datos basada en un proceso de replicacin.

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Las Tablas son objetos de la base de datos que contienen la informacin de los usuarios, estos datos estn organizados en filas y columnas, similar al de una hoja de clculo. Cada columna representa un dato aislado y en bruto que por s solo no brinda informacin, por lo tanto estas columnas se deben agrupar y formar una fila para obtener conocimiento acerca del objeto tratado en la tabla. Por ejemplo, puede definir una tabla que contenga los datos de los productos ofertados por una tienda, cada producto estara representado por una fila mientras que las columnas podran identificar los detalles como el cdigo del producto, la descripcin, el precio, las unidades en stock, etc. Una Vista es un objeto definido por una consulta. Similar a tabla, la vista muestra un conjunto de columnas y filas de datos con un nombre, sin embargo, en la vista no existen datos, estos son obtenidos desde las tablas subyacentes a la consulta. De esta forma si la informacin cambia en las tablas, estos cambios tambin sern observados desde la vista. Fundamental emplean para mostrar la informacin relevante para el usuario y ocultar la complejidad de las consultas. Los tipos de datos especifican que tipo de valores son permitidos en cada una de las columnas que conforman la estructura de la fila. Por ejemplo, si desea almacenar precios de productos en una columna debera especificar que el tipo de datos sea Money, si desea almacenar nombres debe escoger un tipo de dato que permita almacenar informacin de tipo carcter. SQL Server nos ofrece un conjunto de tipos de datos predefinidos, pero tambin existe la posibilidad de definir tipos de datos de usuario. Un Procedimiento Almacenado es una serie de instrucciones SQL pre compiladas las cuales organizadas lgicamente permiten llevar a cabo una operacin transaccional o de control. Un Procedimiento

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005 almacenado siempre se ejecuta en el lado del Servidor y no en la mquina Cliente desde la cual se hace el requerimiento. Para ejecutarlos deben ser invocados explcitamente por los usuarios. Un Desencadenador es un Procedimiento Almacenado especial el cual se invoca automticamente ante una operacin de Insert, Update o Delete sobre una tabla. Un Desencadenador puede consultar otras tablas y puede incluir complejas instrucciones SQL, se emplean para mantener la integridad referencial, preservando las relaciones definidas entre las tablas cuando se ingresa o borra registros de aquellas tablas. Los Valores Predeterminados especifican el valor que SQL Server insertar en una columna cuando el usuario no ingresa un dato especfico. Por ejemplo, si se desconoce el apellido materno de un empleado SQL Server podra incluir automticamente la cadena NN para identificar este campo. Las Reglas son objetos que especifican los valores aceptables que pueden ser ingresados dentro de una columna particular. Las Reglas son asociadas a una columna o a un tipo de dato definido por el usuario. Una columna o un Tipo de dato pueden tener solamente una Regla asociada con l. Las Restricciones son restricciones que se asignan a las columnas de una tabla y son controladas automticamente por SQL Server. Esto nos provee las siguientes ventajas: Se puede asociar mltiples constraints a una columna, y tambin se puede asociar un constraints a mltiples columnas. Se pueden crear los Restricciones al momento de crear la tabla CREATE TABLE. Los Restricciones conforman el standars ANSI para la creacin y alteracin de tablas, estos no son extensiones del Transact SQL. Se puede usar un constraints para forzar la integridad referencial, el cual es el proceso de mantener relaciones definidas entre tablas cuando se ingresa o elimina registros en aquellas tablas. Los ndices de SQL Server son similares a los ndices de un libro que nos permiten llegar rpidamente a las pginas deseadas sin necesidad de pasar hoja por hoja, de forma similar los ndices de una tabla nos permitirn buscar informacin rpidamente sin necesidad de recorrer registro por registro por toda la tabla. Un ndice contiene valores y punteros a las filas donde estos valores se encuentran.

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Creacin de Base de Datos


En trminos sencillos una base de datos de SQL Server es una coleccin de objetos que contiene y administra datos. Antes de crear una base de datos es importante entender como es que SQL Server almacena la informacin.

Pginas y extensiones
Antes de crear una base de datos con SQL Server 2000, debemos tomar en cuenta que la unidad bsica de almacenamiento en SQL Server es la pgina (data page), el tamao de cada padre es de 8 KB, lo cual representa un total de 128 pginas por cada megabyte. El comienzo de cada pgina es una cabecera de 96 bytes que se utiliza para almacenar informacin de cabecera tal como el tipo de pgina, la cantidad de espacio libre de la pgina y el Id. Del objeto propietario de la pgina. Existen ocho tipos de pginas en los archivos de datos de una base de datos SQL Server 2000.

Tipo de pgina Datos ndice Texto o imagen Mapa de asignacin global/ Mapa de asignacin global Secundario Espacio libre en la pgina

Contenido Filas con todos los datos excepto los de tipo text, ntexte image. Entradas de ndices Datos de tipo text, ntexte image. Informacin acerca de las extensiones asignadas. Informacin acerca del espacio libre disponible en las pginas. diegoalberto_1987@hotmail.com

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005 Mapa de asignacin ndice. Bulk Bulk Ma Changed Bul Map de Informacin acerca de las extensiones utilizadas por un tabla o ndice Informacin de los extends modificados por Operacin bulk desde el ltimo backup del log.

Los archivos de registro (LOG) no contienen pginas, contienen series de registros. Las pginas de datos contienen todos los datos de las filas de datos excepto los datos text, ntext e image, que estn almacenados en pginas separadas. Las filas de datos se colocan en las pginas una a continuacin de otra, empezando inmediatamente despus de la cabecera, al final de cada pgina se encuentra una tabla de posiciones de filas que contiene una entrada por cada fila de la pgina y cada entrada registra la posicin, desde el principio de la pgina, del primer byte de la fila. Las entradas de la tabla de posiciones de filas estn en orden inverso a la secuencia de las filas de la pgina.

En SQL Server, las filas no pueden continuar en otras pginas. Las extensiones son la unidad bsica de asignacin de espacio a las tablas e ndices. Consta de 8 pginas contiguas, es decir 64 KB. Lo cual representa 16 extensiones por MB. Para hacer que la asignacin de espacio sea eficiente, SQL Server 2000 no asigna extensiones enteras a tablas con poca cantidad de datos. SQL Server 2000 tiene dos tipos de extensiones: Las extensiones uniformes son propiedad de un nico objeto; slo el objeto propietario puede utilizar las ocho pginas de la extensin. Extensiones mixtas, pueden estar compartidas por hasta ocho objetos.

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005 Las tablas o ndices nuevos son asignados a pginas de extensiones mixtas. Cuando la tabla o el ndice crecen hasta el punto de ocupar ocho pginas, se pasan a extensiones uniformes. Archivos y grupos de archivos fsicos de la base de datos Un archivo de base de datos no es ms que un archivo del sistema operativo. Una base de datos se distribuye en por lo menos dos archivos, aunque es muy probable que sean varios los archivos de base de datos que se especifican al crear o al modificar una base de datos. Principalmente SQL Server divide su trabajo en un archivo para datos y otro para el registro de las transacciones (log). SQL Server 2000 permite los tres siguientes tipos de archivos: Archivos de datos primarios Toda base de datos tiene un archivo de datos primario que realiza el seguimiento de todos los dems archivos, adems de almacenar datos. Por convenio este archivo tiene la extensin MDF. Archivos de datos secundarios Una base de datos puede tener cero o varios archivos de datos secundarios. Por convenio la extensin recomendada para los archivos de datos secundarios es NDF. Archivos de registro (LOG) Todas las bases de datos por lo menos tendrn un archivo de registro que contiene la informacin necesaria para recuperar todas las transacciones que suceden sobre la misma. Por convenio la extensin de este archivo es LDF. Por lo tanto al crear una base de datos, debemos considerar las siguientes premisas y reglas para el almacenamiento de los datos: 1. Todas las Bases de Datos tienen un archivo de base de datos primario (.mdf) y uno para el Log de Transacciones (.ldf). Adems puede tener archivos de datos secundarios (.ndf). 2. Cuando se crea una Base de Datos, una copia de la Base de Datos Model, la cual incluye tablas del sistema, es copiada en la Nueva Base de Datos. 3. La Data es almacenada en bloques de 8-kilobytes (KB) de espacio de disco contiguo llamado pginas. 4. Las filas o registros no pueden atravesar pginas. Esto, es, que la mxima cantidad de datos en una fila de datos simple es de 8060 bytes. 5. Las tablas y los ndices son almacenados en Extents. Un Extents consta de ocho pginas contiguas, o sea 64 KB. 6. El Log de Transacciones lleva toda la informacin necesaria para la recuperacin de la Base de Datos en una eventual cada del sistema. Por default, el tamao del Log de Transacciones es del 25% del tamao de los archivos de datos. Use esta configuracin como punto de partida y ajuste de acuerdo a las necesidades de su aplicacin.

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Archivos de Registro (LOG de Transacciones)


El LOG de transacciones archiva todas las modificaciones de los datos tal cual son ejecutados. El proceso es como sigue: 1. Una modificacin de datos es enviada por la aplicacin cliente. 2. Cuando una modificacin es ejecutada, las pginas afectadas son ledas del disco a memoria (Buffer Cache), provista de las pginas que no estn todava en la Data Cache del query previo. 3. Cada comando de modificacin de datos es archivado en el LOG. El cambio siempre es archivado en el LOG y es escrito en el disco antes que el cambio sea hecho en la Base de Datos. Este tipo de LOG es llamado LOG de tipo write-ahead. 4. Una vez que las pginas de datos residen en el Buffer Cache, y las pginas de LOG son archivadas sobre el disco en el archivo del LOG, el proceso de CHECKPOINT, escribe todas las transacciones completas a la Base de Datos en el disco.

Si el sistema falla, automticamente el proceso de recuperacin usa el LOG de Transacciones para llevar hacia delante todas las transacciones comprometidas (COMMIT) y llevar hacia atrs alguna transaccin incompleta (ROLLBACK).

Los marcadores de transaccin en el LOG son usados durante la recuperacin automtica para determinar los puntos de inicio y el fin de una transaccin. Una transaccin es considerada completa cuando el marcador BEGIN TRANSACTION tiene un marcador asociado COMMIT TRANSACTION. Las pginas de datos son escritas al disco cuando ocurre el CHECKPOINT.

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Creacin de una Base de Datos Utilizando el lenguaje SQL


Otra de las formas de crear una base de datos es a travs del Analizador de Consultas, donde emplearemos la sentencia CREATE DATABASE, cuya sintaxis reducida es la siguiente: CREATE DATABASE NombreBaseDatos [ ON [PRIMARY NAME = nombreArchivoLgico, FILENAME = 'nombreArchivoSO', SIZE = tamao, MAXSIZE = { tamaoMximo | UNLIMITED } , FILEGROWTH = incrementoCrecimiento) [,n] ] [ LOG ON NAME = nombreArchivoLgico, FILENAME = 'nombreArchivoSO', SIZE = tamao, MAXSIZE = { tamaoMximo | UNLIMITED } , FILEGROWTH = incrementoCrecimiento) [,n] [COLLATE nombre_collation] [ FOR LOAD | FOR ATTACH ]

Argumentos
nombreBaseDatos Es el nombre de la nueva base de datos, deben ser nicos en un servidor y pueden tener hasta 128 caracteres, a menos que no se especifique ningn nombre lgico para el registro. Si no se especifica ningn nombre lgico de archivo de registro, SQL Server genera un nombre lgico al anexar un sufijo a nombreBaseDatos. ON Especifica que los archivos de disco utilizados para almacenar la parte de datos (archivos de datos) se han definido explcitamente. La palabra clave va seguida de una lista delimitada por comas de elementos que definen los archivos de datos del grupo de archivos principal. PRIMARY Especifica que la lista de archivos est asociada al grupo principal. Este grupo contiene todas las tablas del sistema de base de datos. Tambin contiene todos los objetos no asignados a los grupos de archivos de usuario. El primer archivo especificado pasa a ser el archivo principal, el cual contiene el inicio lgico de la base de datos y de las tablas del sistema. Una base de datos slo puede tener un archivo principal. Si no se especifica PRIMARY, el primer archivo enumerado en la instruccin CREATE DATABASE se convierte en el archivo principal. LOG ON Especifica que los archivos de registro de la base de datos (archivos de registro) se han definido explcitamente. La palabra clave va seguida de una lista delimitada por comas la cual define las caractersticas de los archivos de registro. Si no se especifica LOG ON, se crea automticamente un nico archivo de registro con un nombre generado por el sistema y un tamao que es el 25% de la suma de los tamaos de todos los archivos de datos de la base de datos. FOR LOAD Clusula que se mantiene por compatibilidad con versiones anteriores de SQL Server. Prof.: Cueva Valverde Diego Alberto - Instructor en T I diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005 La base de datos se crea con la opcin de base de datos dbo use only activada y el estado se establece en "cargando". En realida esto no es necesario en SQL Server 7.0 porque la instruccin RESTORE puede volver a crear la base de datos como parte de la operacin de restauracin. FOR ATTACH Crea la base de datos desde un conjunto existente de archivos del sistema operativo. Debe existir una entrada de archivos que determine cul es el archivo principal, las otras entradas son necesarias si existen archivos creados en una ruta de acceso distinta de cuando se cre la base de datos por primera vez o se adjunt por ltima vez. Utilice el procedimiento almacenado del sistema sp_attach_db en lugar de emplear CREATE DATABASE FOR ATTACH directamente, esto deber emplearlo si debe especificar ms de 16 archivos. COLLATE Especifica el conjunto de caracteres que se emplear para almacenar informacin en la base de datos, se puede emplear un conjunto de caracteres especificado por Windows o por SQL Server. De no especificarse se emplear el conjunto de caracteres seleccionado en el momento de la instalacin NAME Especifica el nombre lgico del archivo. No se requiere este parmetro cuando se especifica FOR ATTACH. Este nombre es el utilizado para referenciar al archivo en las sentencias del TransactSQL que se ejecuten despus. FILENAME Especifica el nombre de archivo del sistema (archivo fsico). Se debe especificar la ruta de acceso y nombre de archivo que el sistema operativo utiliza cuando crea la base de datos. La ruta de acceso debe especificar un directorio en el servidor sobre el que se instalo SQL Server. No se puede especificar un directorio en un sistema comprimido de archivos. SIZE Especifica el tamao para el archivo. De no hacerlo SQL Server utiliza el tamao del archivo principal de la base de datos model. Cuando este parmetro no es especificado para un archivo secundario o de registro SQL Server automticamente le asigna 1 MB. El valor mnimo a asignar es de 512 KB. Si no se especifica tamao, el valor predeterminado es 1 MB. El tamao especificado para el archivo principal debe tener al menos el tamao del archivo principal de la base de datos model. MAXSIZE Especifica el tamao mximo de crecimiento del archivo. Se pueden utilizar los sufijos KB y MB, el valor predeterminado es MB. Especifique un nmero entero; no incluya decimales. Si no se especifica, el archivo aumenta hasta que el disco est lleno. UNLIMITED Especifica que el archivo aumenta de tamao hasta que el disco est lleno. FILEGROWTH Especifica el incremento de crecimiento del archivo, este valor no puede exceder el valor MAXSIZE. Emplee un nmero entero. Un valor 0 indica que no hay crecimiento. El valor se puede especificar en MB, KB o %, el valor predeterminado es MB. Cuando se especifica %, el tamao de incremento de crecimiento es el porcentaje especificado del tamao del archivo en el momento Prof.: Cueva Valverde Diego Alberto - Instructor en T I diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005 en que tiene lugar el incremento. De no emplear FILEGROWTH, el valor predeterminado es 10% y el valor mnimo es 64 KB. El tamao especificado se redondea al mltiplo de 64 KB ms cercano.

Observaciones
Emplee CREATE DATABASE para crear una base de datos y los archivos que almacenan sta. SQL Server implementa CREATE DATABASE en dos pasos: SQL Server utiliza una copia de model para inicializar la base de datos y sus metadatos. SQL Server rellena el resto de la base de datos con pginas vacas, excepto las pginas que tengan datos internos que registren cmo se emplea el espacio en la base de datos. Cualquier objeto definido por el usuario en model se copiar a todas las bases de datos recin creadas. Cada base de datos nueva hereda los valores opcionales de la base de datos model (a menos que se especifique FOR ATTACH). En un servidor se puede especificar un mximo de 32,767 bases de datos. Cuando especfica una instruccin CREATE DATABASE nombreBaseDatos sin parmetros adicionales, la base de datos se crea con el mismo tamao que model. Cada base de datos tiene un propietario con capacidad para realizar actividades especiales. El propietario es el usuario que crea la base de datos, este propietario se puede cambiar mediante sp_changedbowner Para mostrar un informe de una base de datos o de todas las bases de datos de un servidor con SQL Server, ejecute sp_helpdb. Para obtener un informe acerca del espacio utilizado en una base de datos, emplee sp_spaceused. Para obtener un informe de los grupos de archivos de una base de datos, utilice sp_helpfilegroup, y utilice sp_helpfile para obtener el informe de los archivos de la base de datos. Quines pueden crear bases de datos? En forma predeterminada podrn hacerlos los usuarios que pertenecen al rol sysadmin y dbcreator. Los miembros de las funciones fijas de servidor sysadmin y SecurityAdmin pueden conceder permisos CREATE DATABASE a otros inicios de sesin. Los miembros de las funciones fijas de servidor sysadmin y dbcreator pueden agregar otros inicios de sesin a la funcin dbcreator. El permiso CREATE DATABASE debe concederse explcitamente; no se concede mediante la instruccin GRANT ALL. Estos permisos se limitan a unos cuantos inicios de sesin para mantener el control de la utilizacin de los discos del equipo que ejecuta SQL Server. Ejemplos de creacin de base de datos empleando el Analizador de Consultas Primero ingrese al Analizador de Consultas para ello primero debe especificar el tipo de autentificacin a realizar del sistema o estndar, vea la siguiente figura:

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Habilitar los servicios de SQL server


Qu procedimiento sigui para habilitar los servicios?

Ingresar a SQL Server 2005


1. Hacer clic en el botn Inicio > Ejecutar. 2. Dentro de ejecutar digitar lo siguiente sqlwb.exe.

3. Una vez que all indicado el programa aparecer un cuadro de dialogo don uno tiene que asignar el nombre de usuario y la contrasea O Autenticacin de Windows dependiendo de cmo all estado instalado SQL Server. 4. Hacer clic en Conectar.

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005 5. Una vez que usted halla ingresado al programa como podr observar al lado izquierdo del programa se muestra el Explorador de Objetos.

Qu contiene el explorador de Objetos?

6. Como usted puede observar se muestran los objetos que se encuentran dentro del Explorador de Objetos.

7. Desplegar la carpeta base de datos. 8. Luego desplegar la carpeta base de datos del sistema.

Describir cada una de la base de datos, que se encuentran dentro de la Carpeta base de datos del sistema?

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Creacin de una Base de datos Va Diseo


9. Pulsar el botn derecho dl mouse sobre la carpeta Bases de datos. 10. Seleccionar la opcin Nueva base de Datos.

11. 12. 13. 14.

Aparecer un cuadro de dialogo donde se tiene que asignar el nombre de la base de datos. Asignar el Nombre de Computronic. Como usted puede observar el tamao inicial de la base de datos es 1MB. Hacer clic en Aceptar.

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Tipos de Datos de SQL Server 2005


SQL Server brinda una serie de tipos de datos para almacenar la informacin, la correcta seleccin del tipo de dato es simplemente una cuestin de determinar qu valores desea almacenar, como por ejemplo carcter, enteros, binario, fechas, etc. Los siguientes objetos tienen tipos de datos: Columnas de tablas y vistas. Parmetros de procedimientos almacenados. Variables. Funciones de Transact-SQL que devuelve uno o ms valores de datos de un tipo de datos especfico. Procedimientos almacenados que devuelven un cdigo, que siempre es de tipo integer. Al asignar un tipo de datos a un objeto se definen cuatro atributos del objeto: La clase de datos que contiene el objeto, por ejemplo, carcter, entero o binario. La longitud del valor almacenado o su tamao. La precisin del nmero (slo tipos de datos numricos). La precisin es el nmero de dgitos que puede contener el nmero. Por ejemplo, un objeto smallint puede contener hasta 5 dgitos, con lo que tiene una precisin de 5. La escala del nmero (slo tipos de datos numricos). La escala es el mximo nmero de dgitos a la derecha del separador decimal. Por ejemplo, un objeto int no puede aceptar un separador decimal y tiene una escala de 0. Un objeto money puede tener hasta 4 dgitos a la derecha del separador decimal y tiene una escala de 4. Si un objeto se define como money, puede contener hasta 19 dgitos y 4 de ellos pueden estar a la derecha del decimal. El objeto usa 8 bytes para almacenar los datos. Por tanto, el tipo de datos money tiene una precisin de 19, una escala de 4 y una longitud de 8. Utilizar datos binarios Los tipos de datos binary y varbinary almacenan cadenas de bits. Mientras que los datos de carcter se interpretan segn la pgina de cdigos de SQL Server, los datos binary y varbinary son, simplemente, un flujo de bits. Los datos binary y varbinary pueden tener una longitud de hasta 8.000 bytes. Las constantes binarias tienen un 0x (un cero y una letra x en minsculas) a la izquierda, seguido de la representacin hexadecimal del patrn de bits. Por ejemplo, 0x2A especifica el valor hexadecimal 2A, que es equivalente al valor decimal 42 o un patrn de bits de un byte de 00101010.

Categora

Binario

Descripcin Tipo de Dato Almacenan cadenas de binary bits. La data consiste de nmeros hexadecimales. Por ejemplo el decimal 245 varbinary es F5 en hexadecimal. image Consisten de una combinacin de letras, smbolos y nmeros. Por ejemplo las combinaciones "John928" y "(0*&(%B99nh jkJ". Consisten en combinaciones vlidas de estos datos. No puede char varchar text Datetime

Descripcin La data debe tener una longitud fija (hasta 8 KB). Los datos pueden variar en el nmero de dgitos hexadecimales (hasta 8 KB). La data puede tener una longitud variable y exceder los 8Kb. Los datos deben tener una longitud fija (Hasta 8 KB). La data puede variar en el nmero de caracteres (Hasta 8 KB.) Los datos pueden ser caracteres ASCII que excedan los 8 KB. Fechas en el rango 01 Ene 1753 hasta el 31 Dic 9999 (Se requiere 8 bytes por valor).

Caracter

Fecha y Hora

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005 separar en tipos distintos el almacenamiento de slo fechas o slo horas. Consisten en informacin que almacena informacin significativa despus del punto decimal.

Fechas en el rango 01 Ene 1900 hasta smalldatetime 06 Jun 2079 (Se requiere requires 4 bytes por valor). Los datos pueden tener hasta 38 dgitos, todos los cuales podran estar a la derecha del punto decimal. Este tipo de dato guarda un valor exacto del nmero y no una aproximacin. Para SQL Server, el tipo de dato numeric es equivalente al tipo de datos decimal. Datos en el rango de 1.79E + 308 hasta 1.79E + 308. Datos en el rango de 3.40E + 38 hasta 3.40E + 38. Datos en el rango de 2^63 ( 9223372036854775808) hasta 2^631 (9223372036854775807). Se requieren de 8 bytes para Almacenar estos valores. Datos en el rango de - 2,147,483,648 hasta 2,147,483,647. Se requieren de 4 bytes para almacenar estos valores.

decimal

Decimal

numeric Nmeros aproximados (Punto flotante). float real Consiste en informacin numrica positiva o negativa como por ejemplo 5, 0 y 25.

Punto Flotante

Enteros

bigint

int

Categora

Descripcin

Tipo de Dato smallint

Descripcin Datos en el rango de 32,768 Hasta 32,767. Se requieren 2 bytes por cada valor de este tipo. Datos entre 0 y 255, se requiere de 1 byte. Datos monetarios entre 922,337,203,685,477.5808 y +922, 337, 203, 685,477.5807 (Se requieren 8 bytes por Valor). Datos monetarios entre 214,748.3648 y 214,748.3647 (Se requieren de 4 bytes por Valor). Datos que consisten de 1 o 0. Emplear este tipo de dato para representar TRUE o FALSE YES o NO.

tinyint Cantidades monetarias positivas o negativas. money Monetario smallmoney Consisten en informacin que no recae en ninguna de las categoras anteriormente

bit

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005 mencionadas. Este tipo de dato es empleado por variables o procedimientos cursor almacenados que emplean parmetros OUTPUT referenciados a un cursor. Este tipo de dato es empleado para indicar la actividad que timestamp Ocurre sobre una fila. La secuencia de este nmero se Incrementa en formato binario. Consiste en un nmero hexadecimal que especifica un globally unique identifier (GUID), es uniqueidentifier til cuando se desea asegurar la unicidad de una fila Entre muchas otras. Almacena varios tipos de datos, SQL_variant a excepcin de text, ntext, timestamp, image y sql_variant. Almacena un resultado de una consulta para su posterior procesamiento. Se puede table emplear para definir variables locales de tipo table o para retornar los valores devueltos por una funcin del usuario. Datos con longitud fija, hasta 4000 caracteres Unicode. nchar nvarchar Datos que pueden variar, hasta 4000 caracteres Unicode. Datos que exceden los 4000 caracteres Unicode.

Especiales

Unicode

Al emplear este tipo de datos se puede almacenar Sobre una columna valores que incluyan este conjunto de caracteres. Hay que recordar que los datos Unicode emplean dos bytes por cada carcter a representar.

ntext

Empleo de Comandos DDLL (Data Definition Language)


SQL Server 2000 emplea las tablas como objetos de almacenamiento de datos que los usuarios manipulan a travs de sus aplicaciones o va web. Las tablas son objetos compuestos por una estructura (conjunto de columnas) que almacenan informacin interrelacionada (filas) acerca de algn objeto en general. Las tablas se definen para los objetos crticos de una base de datos, por ejemplo CLIENTES y su estructura estara conformada por cada uno de los atributos que se requieran de los clientes para poder obtener informacin de ellos, como por ejemplo: nombres, direcciones, telfonos, celular, ruc, etc. Cada uno de estos atributos tiene un tipo de dato definido y adems la tabla debe permitir asegurar que cada cdigo de producto es nico en la misma, para asegurarse de no almacenar la informacin del mismo cliente dos veces. Las tablas suelen estar relacionadas entre s, para facilitar el hecho de consultas entre mltiples tablas. Podemos distinguir los siguientes tipos de tablas:

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Tablas del Sistema


La informacin usada por SQL Server y sus componentes son almacenadas en tablas especiales denominadas como tablas del sistema. Estas tablas no deben alterarse directamente por el usuario Si desea obtener informacin almacenada en las tablas del sistema debe usar: Informacin de la vista esquema (schema view). Procedimientos Almacenados de sistema. Instrucciones Transact-SQL y funciones. SQL-DMO. Catlogo de funciones API. Las tablas del sistema almacenan informacin, llamada Metadata, acerca del sistema y de los objetos de las bases de datos. Todas las tablas del sistema comienzan con el prefijo SYS.

Tablas del Usuario


Permanentes Son las tablas donde se almacena la informacin que los usuarios utilizan para sus operaciones. Esta informacin existir hasta que se elimine explcitamente. Temporales Estas son tablas similares a las permanentes que se graban en tempdb, y son eliminadas automticamente cuando ya no son usadas. Hay dos tipos de tablas temporales, locales y globales, difieren una de la otra en sus nombres, su visibilidad y su mbito de vida. Tablas Temporales Locales. El primer carcter del nombre de #, su visibilidad es solamente para la conexin actual del usuario y son eliminadas cuando el usuario se desconecta. Tablas Temporales Globales. Su nombre comienza con ##, su visibilidad es para cualquier usuario, y son eliminadas luego que todos los usuarios que la referencian se desconectan del SQL Server. Creacin de tablas Cuando se crea una tabla debe asignarle un nombre a la misma, un nombre a cada columna adems de un tipo de datos y de ser necesaria una longitud. Adicional a las caractersticas antes mencionadas, SQL Server 2000 nos brinda la posibilidad de implementar columnas calculadas, definindolas como frmulas. Los nombres de las columnas deben ser nicos en la tabla Consideraciones al crear tablas Billones de tablas por base de datos. 1024 columnas por tabla. 8060 es el tamao mximo de registro (sin considerar datos image, text y ntext). Al momento de definir una columna se puede especificar si la columna soporta o no valores NULL. Para crear tablas debe utilizar la sentencia CREATE TABLE, cuya sintaxis es la siguiente: CREATE TABLE <Nombre de Tabla> ( Nom_Columna1 Tipo_de_Dato [NULL l NOT NULL], Nom_Columna2 Tipo_de_Dato [NULL l NOT NULL], Nom_Columna3 As formula ...) GO

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Creacin de una Tabla Va Asistente


15. Desplegar las carpetas que ahora se encuentran dentro de la base de datos Computronic. 16. Pulsar el botn derecho sobre la carpeta con el nombre de Tablas y seleccionar la opcin Nueva Tabla.

17. Como usted puede observar al lado derecho se muestra un cuadro. 18. Dentro de este cuadro se puede asignar el nombre de la Columna y el tipo de Dato de la columna e indicar si los valores son nulos o no. 19. Digitar las siguientes columnas para esta nueva Tabla. 20. Indicar el tipo de Dato para cada columna y por ultimo asignar si es nulo o no. 21. La estructura de la tabla tiene que quedar tal como se muestra en la siguiente figura.

22. Hacer clic en el botn guardar. 23. Guardar con el nombre de Alumnos.

24. Como usted puede observar en el Explorador de Objetos. 25. Dentro de la carpeta base de datos y dentro de la base de datos Computronic. 26. Se encuentra la carpeta Tablas, dentro de ella se encuentra la tabla Alumnos.

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Ingresar Registros a la Tabla


27. Seleccionar la Tabla alumnos. 28. Pulsar el botn derecho y seleccionar la opcin abrir Tabla.

29. Como usted puede observar al lado derecho se muestra la Tabla alumnos. 30. Ingresar 2 a ms a la tabla Registros ala Tabla.

Eliminacin de Registros de una Tabla


31. Seleccionar la columna que desee eliminar, pulsar el botn derecho del mouse y seleccionar la opcin Eliminar

32. Aparcera un cuadro de dialogo donde usted tiene que confirmar que si se desea eliminar el registro seleccionado.

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Modificacin de la Estructura de una tabla.


33. Seleccionar la tabla Alumnos. 34. Pulsar el botn derecho del mouse y seleccionar la opcin Modificar.

35. 36. 37. 38.

Como usted podr observar se vuelve a mostrar la estructura de la tabla Alumnos. Seleccionar el Campo Id. Y en el panel propiedades de Columna. Habilitar la opcin Identidad, establecer que si desea Identidad.

39. Ahora guarde la modificacin. 40. Ingrese un nuevo registro en la tabla, pero esta vez ya no asigne el cdigo, como usted ver el cdigo se genera automticamente.

41. 42. 43. 44.

Seleccionar la tabla y pulsar el botn Derecho del mouse. Seleccionar la opcin propiedades. Aparecer un cuadro de dialogo. Dentro de ese cuadro de dialogo, se indica quien ha creado la tabla, la fecha de Creacin, servidor, etc. 45. Tal como lo puede apreciar en la siguiente figura.

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Eliminar una base de datos


46. 47. 48. 49. Seleccionar la base de datos con el nombre de Computronic. Pulsar el botn derecho y seleccionar la opcin eliminar. Aparecer un cuadro de dialogo donde habilitara la opcin Cerrar conexiones Existentes. Finalmente hacer clic en aceptar.

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Utilizacin del Analizador de Consultas


50. Hacer clic en Nueva Consulta.

Creacin de una base de Datos va cdigo SQL


Para crear un objeto dentro SQL server, o dentro de una base de datos se utiliza la sentencia Create, seguido del Objeto a Crear (Base de Datos, Tablas, Procedimientos Almacenados, Vistas, etc.). 51. Escribir el siguiente Script (cdigo SQL).

52. Seleccionar el Script digitado, y pulsar la tecla F5, para ejecutar la sentencia. 53. Explicar el Script utilizado, en la sentencia SQL anterior. FileName._______________________________________________________________________ Size.___________________________________________________________________________ MaxSize.________________________________________________________________________ Filegrowth.______________________________________________________________________ 54. Como usted puede observar la base de datos con el nombre de Computronic ha sido creada. 55. Si usted verifica la unidad C de la unidad M PC, se han creado 2 archivos correspondientes a la base de datos. 56. Uno es el *log y el otro es el archivo *mdf.

Cul es la diferencia entre el archivo *log y *Mdf?

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Abrir una base de datos va Script


Para abrir una base de datos se utiliza la sentencia Use.

Creacin de una Tabla Va Script


57. Digitar el siguiente Script, para crear una nueva tabla.

Modificar una Tabla Va Script


58. Se desea agregar una nueva columna a la tabla.

59. Se desea modificar el tipo de dato de la columna Nombre.

60. Se desea eliminar una columna de la tabla Alumnos.

Valores autogenerados para las columnas


En SQL Server 2005 se puede definir columnas que obtengan valores generados por el sistema, para ello podemos hacer uso de: Propiedad Identity Permite generar valores secuenciales del sistema, este tipo de valores pueden ser utilizados en columnas que sern empleadas como primary key. Para emplear esta propiedad debe especificar un valor de inicio y uno de incremento. Recuerde que este tipo de columnas no son editables.

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005 61. Primero tiene que eliminar la columna que usted desea que contenga el valor autogenerado.

62. Luego tiene que crear la nueva columna y esta vez agregar la propiedad Identity.

Qu es lo que hace la propiedad Identity a una columna?

Mantenimiento a una tabla Insertar, Eliminar y Actualizar


Si desea insertar un Nuevo Registro, Se utiliza la Sentencia Insert into. Sintaxis: Insert Into Nombre Tabla (Campos de la Tabla) Values (Valores a Ingresar) 63. Se desea agregar 5 registros a la tabla alumnos. 64. Digitar el siguiente Script.

Al momento de ingresar los registros, que tipo de dato van con comilla simple y qu tipo de dato no van con comilla simple?

Si desea Eliminar un Registro, Se utiliza la Sentencia Delete. Sintaxis: Delete Nombre Tabla Where Campo =Condicin 65. Se desea eliminar de la tabla alumno, el alumno de cdigo 2. 66. Digitar el siguiente Script.

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005 Si desea Actualizar un Registro, Se utiliza la Sentencia Update. Sintaxis: Update Nombre Tabla set campo1= valor1, campo2 = valor2 Where Campo =Condicin 67. Se desea Actualizar de la tabla alumno, el alumno de cdigo 3. 68. Digitar el siguiente Script.

Ejercicios
Generar el Script de una base de datos llamada Prueba2 con un archivo de datos de 10 Mb, un tamao mximo de 20 Mb y un crecimiento de 1Mb., el archivo de registro debe asumir los valores por default de una base de datos. (Guardar con el Nombre de Prueba01)

Generar una base de datos, que su ruta sea la unidad D de Mi PC. (Guardar con el Nombre de Prueba02)

Generar el siguiente Script de la tabla que se muestra a continuacin, tener en cuenta los tipos de datos.( Guardar con el Nombre de Proveedor)

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Generar el siguiente Script de la tabla que se muestra a continuacin, tener en cuenta los tipos de datos.( Guardar con el Nombre de Factura)

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005 Generar el siguiente Script de la tabla que se muestra a continuacin, tener en cuenta los tipos de datos.(Guardar con el Nombre de Producto)

Describir los siguientes Tipos de datos: Nvarchar.Money.SmallDateTime.Ntext.Image.-

Para empezar un gran proyecto hace falta valenta, Para terminar un Gran proyecto hace falta perseverancia.

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Restricciones (Constaints)
Las restricciones son un mtodo declarativo de definicin de la integridad de datos ya que en ellas se definen al momento de crear una tabla con la sentencia create Table, o al momento de modificar la definicin de la tabla (con la sentencia Alter Table). En otras palabras, una restriccin forma parte de la definicin de la tabla. Las restricciones son el mtodo preferido para dar fuerza a la integridad de los datos.

Tipos de Restricciones
Las restricciones son un mtodo estndar ANSI para forzar la integridad de los tipos de datos. Garantizan que los datos ingresados en las columnas sean valores validos y que se mantengan las relaciones entre las tablas La tabla siguiente descrbelos diferentes tipos de restricciones.

Tipo de Restriccin
PRIMARY KEY (Clave primaria) UNIQUE (Valor no duplicado) FOREIGN KEY (Clave Fornea) DEFALULT (Valor Predeterminado) CHECK (Regla de Validacin)

Descripcin
Garantiza que cada fila o registro en una tabla es nico(a). la columna o combinacin de columnas definida como clave primaria no permite valores duplicados Garantiza que cada valor en una columna es nico. Permite valores nicos Define la columna o combinacin de columnas de una tabla secundaria cuyos valores dependen de la clave primaria de la Tabla primaria. Establece el valor predeterminado para una columna cuando al insertar una fila no se especifica el valor para dicha columna Establece una regla que debe cumplir un valor para que sea un valor aceptable en una Columna

Para realizar estos ejercicios usted tiene que crear las siguientes Tablas y base de Dato

Crear la base de Datos Colegio

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Crear las siguientes Tablas


Tabla Alumnos

Tabla Notas

Tabla Cuso

Creacin de una Clave Primaria (PK) Sintaxis Alter Table Nombre_Tabla Add constraint Pk_Nombre_Tabla Primary Key (ColumnaX,ColumnaP,)
PK_nombre_Tabla es el nombre de la restriccin clave primaria. Se recomienda definir como nombre de
la clave primaria, el nombre de la tabla con el prefijo PK_. Si no se especifica el nombre de la restriccin, SQL Server le asigna un nombre.

Columnax, ColumnaP es la columna o combinacin de columnas que se define como Clave primaria. Las
columnas involucradas no deben permitir valores nulos, y adems, no deben tener valores duplicados. En el caso de una combinacin de columnas, la combinacin vista como una unidad no debe tener valores duplicados. Prof.: Cueva Valverde Diego Alberto - Instructor en T I diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005 1. Asignar llave primaria todas las tablas creadas anteriormente.

2. Establecer llave Primaria a las dems Tablas. 3. Digitar el Script utilizado para la Creacin de las llaves Primarias en las dems Tablas.

Creacin de una Llave Fornea (FK)


Sintaxis Alter Table nombre_Tabla Add Constraint Fk_Nombre_Tabla_Tabla_Referenciada Foreign Key (ColumnnaX, ColumnaP)
Fk_nombre_Tabla_Tabla_referenciada es el nombre de la restriccin clave fornea. Se recomienda
definir como nombre de la clave fornea, el nombre de la tabla seguido del nombre de la tabla referenciada, todo con el prefijo FK_. Si no se especifica el nombre de la restriccin, SQL Server le asigna un nombre.

ColumnaX, ColumnaP, es la columna O Combinacin de columnas que se define como clave fornea.
Tabla_Referencia, es el nombre de la tabla primaria con la que se relaciona con la tabla secundaria que tiene la clave fornea. De modo predeterminado la clave fornea hace referencia la clave primaria de la Tabla primaria.

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005 1. Asignar llave fornea todas las tablas creadas anteriormente.

2. Establecer llave fornea a las dems Tablas. 3. Digitar el Script utilizado para la Creacin de las Llave Fornea en las dems Tablas.

Creacin de restriccin Valor no Duplicado (Unique)


Sintaxis Alter Table Nombre_Tabla Add Constraint U_nombre_tabla_nombre_Columna UNIQUE (Columna X, Columna P,.)
U_nombre_tabla_nombre_columna es el nombre de la restriccin valor no duplicado o UNIQUE. Se
recomienda definir como nombre de la restriccin, el nombre de la tabla seguido del nombre de la columna afectada, todo con el prefijo U_. Si no se especifica el nombre de la restriccin, SQL Server le asigna un nombre.

ColumnaX, ColumnaP, es la columna O combinacin de columnas a la que se aplica la restriccin.

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005 1. Asignar la propiedad Unique al Campo Curso de la tabla Curso.

Creacin de Valor predeterminado (DEFAULT)


Sintaxis Alter Table nombre_Tabla Add Constraint DF_Nombre_Tabla_Nombre_Columna Default valor_predeterminado for ColumnaX
Df_nombre_tabla_nombre_Columna es el nombre de la restriccin valor predeterminado O Default.
Se recomienda definir como nombre de la restriccin, el nombre de la tabla seguido del nombre de la columna afectada, todo con el prefijo DF_. Si no es especifico el nombre de la restriccin, SQL server le asigna un nombre.

Valor_Predeterminado es el valor que se almacena en columna X cuando al insertar una fila no se


especifica el valor para esa columna. ColumnaX es la Columna a la que se aplica la restriccin. 1. Se desea asignar valores por defecto a la Columna FechaInscripcion de la Tabla Alumnos. 2. En dicha campo se guardara la Fecha actual del sistema, al momento de ingresar un nuevo registro.

3. Insertar algunos valores dentro de la Tabla Alumnos.

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Creacin de una Regla de Validaciones (CHECK)


SINTAXIS Alter Table nombre_Tabla Add constraint CK_nombre_Tabla_nombre_Columna Check (Condicin)
CK_nombre_tabla_nombre_Columna es el nombre de la restriccin regla de validacin O Check. Se
recomienda definir como nombre de la restriccin, el nombre de la Tabla Seguido del nombre de la columna afectada, todo con el prefijo CK_. Si no se especifica el nombre de la restriccin, SQL SERVER le asigna un nombre.

Condicin es la expresin que determina como debe ser el valor a ingresar en la columna afectada por la
restriccin. 1. Se desea validar los datos del campo nota de la Tabla Notas. 2. En dicho campo se validara la entrada de cada Nota ingresada, esta nota esta en promedio de 0 a 20.

3. Insertar algunos valores en la tabla.

4. Insertar un valor en la columna nota, que no este dentro del rango establecido.

5.

Como usted puede observar en el panel resumen aparece un error.

Qu es lo que quiere decir ese error?

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Conceptos bsicos de integridad referencial


Introduccin
La integridad referencial es un sistema de reglas que utilizan la mayora de las bases de datos relacionales para asegurarse que los registros de tablas relacionadas son vlidos y que no se borren o cambien datos relacionados de forma accidental produciendo errores de integridad. Primero repasemos un poco los tipos de relaciones. Tipos de relaciones. Entre dos tablas de cualquier base de datos relacional pueden haber dos tipos de relaciones, relaciones uno a uno y relaciones uno a muchos: Relacin Uno a Uno: Cuando un registro de una tabla slo puede estar relacionado con un nico registro de la otra tabla y viceversa. Por ejemplo: tenemos dos tablas una de profesores y otra de departamentos y queremos saber qu profesor es jefe de qu departamento, tenemos una relacin uno a uno entre las dos tablas ya que un departamento tiene un solo jefe y un profesor puede ser jefe de un solo departamento. Relacin Uno a Varios: Cuando un registro de una tabla (tabla secundaria) slo puede estar relacionado con un nico registro de la otra tabla (tabla principal) y un registro de la tabla principal puede tener ms de un registro relacionado en la tabla secundaria, en este caso se suele hacer referencia a la tabla principal como tabla 'padre' y a la tabla secundaria como tabla 'hijo', entonces la regla se convierte en 'un padre puede tener varios hijos pero un hijo solo tiene un padre (regla ms fcil de recordar). Por ejemplo: tenemos dos tablas una con los datos de diferentes poblaciones y otra con los habitantes, una poblacin puede tener ms de un habitante, pero un habitante pertenecer (estar empadronado) en una nica poblacin. En este caso la tabla principal ser la de poblaciones y la tabla secundaria ser la de habitantes. Una poblacin puede tener varios habitantes pero un habitante pertenece a una sola poblacin. Esta relacin se representa incluyendo en la tabla 'hijo' una columna que se corresponde con la clave principal de la tabla 'padre', esta columna es lo denominamos clave fornea (o clave ajena o clave externa). Una clave fornea es pues un campo de una tabla que contiene una referencia a un registro de otra tabla. Siguiendo nuestro ejemplo en la tabla habitantes tenemos una columna poblacin que contiene el cdigo de la poblacin en la que est empadronado el habitante, esta columna es clave ajena de las tablas habitantes, y en la tabla poblaciones tenemos una columna cdigo de poblacin clave principal de la tabla.

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005 Relacin Varios a Varios: Cuando un registro de una tabla puede estar relacionado con ms de un registro de la otra tabla y viceversa. En este caso las dos tablas no pueden estar relacionadas directamente, se tiene que aadir una tabla entre las dos que incluya los pares de valores relacionados entre s. Por ejemplo: tenemos dos tablas una con los datos de clientes y otra con los artculos que se venden en la empresa, un cliente podr realizar un pedido con varios artculos, y un artculo podr ser vendido a ms de un cliente. No se puede definir entre clientes y artculos, hace falta otra tabla (por ejemplo una tabla de pedidos) relacionada con clientes y con artculos. La tabla pedidos estar relacionada con cliente por una relacin uno a muchos y tambin estar relacionada con artculos por un relacin uno a muchos.

Integridad referencial
Cuando se define una columna como clave fornea, las filas de la tabla pueden contener en esa columna o bien el valor nulo (ningn valor), o bien un valor que existe en la otra tabla, un error sera asignar a un habitante una poblacin que no est en la tabla de poblaciones. Eso es lo que se denomina integridad referencial y consiste en que los datos que referencian otros (claves forneas) deben ser correctos. La integridad referencial hace que el sistema gestor de la base de datos se asegure de que no haya en las claves forneas valores que no estn en la tabla principal. La integridad referencial se activa en cuanto creamos una clave fornea y a partir de ese momento se comprueba cada vez que se modifiquen datos que puedan alterarla.

Cundo se pueden producir errores en los datos?


Cuando insertamos una nueva fila en la tabla secundaria y el valor de la clave fornea no existe en la tabla principal. Insertamos un nuevo habitante y en la columna poblacin escribimos un cdigo de poblacin que no est en la tabla de poblaciones (una poblacin que no existe). Cuando modificamos el valor de la clave principal de un registro que tiene 'hijos', modificamos el cdigo de Valencia, sustituimos el valor que tena (1) por un nuevo valor (10), si Valencia tena habitantes asignados, qu pasa con esos habitantes, no pueden seguir teniendo el cdigo de poblacin 1 porque la poblacin 1 ya no existe, en este caso hay dos alternativas, no dejar cambiar el cdigo de Valencia o bien cambiar el cdigo de poblacin de todos los habitantes de Valencia y asignarles el cdigo 10. Prof.: Cueva Valverde Diego Alberto - Instructor en T I diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005 Cuando modificamos el valor de la clave fornea, el nuevo valor debe existir en la tabla principal. Por ejemplo cambiamos la poblacin de un habitante, tena asignada la poblacin 1 (porque estaba empadronado en valencia) y ahora se le asigna la poblacin 2 porque cambia de lugar de residencia. La poblacin 2 debe existir en la tabla de poblaciones. Cuando queremos borrar una fila de la tabla principal y ese registro tiene 'hijos', por ejemplo queremos borrar la poblacin 1 (Valencia) si existen habitantes asignados a la poblacin 1, estos no se pueden quedar con el valor 1 en la columna poblacin porque tendran asignada una poblacin que no existe. En este caso tenemos dos alternativas, no dejar borrar la poblacin 1 de la tabla de poblaciones, o bien borrarla y poner a valor nulo el campo poblacin de todos sus 'hijos'. Asociada a la integridad referencial estn los conceptos de actualizar los registros en cascada y eliminar registros en cascada.

Actualizacin y borrado en cascada


El actualizar y/o eliminar registros en cascada, son opciones que se definen cuando definimos la clave fornea y que le indican al sistema gestor qu hacer en los casos comentados en el punto anterior.

Actualizar registros en cascada:


Esta opcin le indica al sistema gestor de la base de datos que cuando se cambie un valor del campo clave de la tabla principal, automticamente cambiar el valor de la clave fornea de los registros relacionados en la tabla secundaria. Por ejemplo, si cambiamos en la tabla de poblaciones (la tabla principal) el valor 1 por el valor 10 en el campo cdigo (la clave principal), automticamente se actualizan todos los habitantes (en la tabla secundaria) que tienen el valor 1 en el campo poblacin (en la clave ajena) dejando 10 en vez de 1. Si no se tiene definida esta opcin, no se puede cambiar los valores de la clave principal de la tabla principal. En este caso, si intentamos cambiar el valor 1 del cdigo de la tabla de poblaciones, no se produce el cambio y el sistema nos devuelve un error o un mensaje que los registros no se han podido modificar por infracciones de clave.

Eliminar registros en cascada


Esta opcin le indica al sistema gestor de la base de datos que cuando se elimina un registro de la tabla principal automticamente se borran tambin los registros relacionados en la tabla secundaria Por ejemplo: Si borramos la poblacin Onteniente en la tabla de poblaciones, automticamente todos los habitantes de Onteniente se borrarn de la tabla de habitantes

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Clausulas a utilizar en la Eliminacin y Actualizacin en Cascada


Las restricciones de integridad referencial en cascada permiten definir las acciones que SQL Server 2005 lleva a cabo cuando un usuario intenta eliminar o actualizar una clave a la que apuntan las claves externas existentes. Las clusulas REFERENCES de las instrucciones CREATE TABLE y ALTER TABLE admiten las clusulas ON DELETE y ON UPDATE. Las acciones en cascada tambin se pueden definir mediante el cuadro de dilogo Relaciones de clave externa. [ON DELETE {NO ACTION | CASCADE | SET NULL | SET DEFAULT} ] [ON UPDATE {NO ACTION | CASCADE | SET NULL | SET DEFAULT}]

NO ACTION es el valor predeterminado si no se especifica ON DELETE u ON UPDATE. ON DELETE NO ACTION Especifica que si se intenta eliminar una fila con una clave a la que hacen referencia las claves externas de las filas existentes en otras tablas, se produce un error y se revierte la instruccin DELETE. ON UPDATE NO ACTION Especifica que si se intenta actualizar un valor de clave en una fila a cuya clave hacen referencia las claves externas de filas existentes en otras tablas, se produce un error y se revierte la instruccin UPDATE. CASCADE, SET NULL y SET DEFAULT permiten la eliminacin o actualizacin de valores de clave de modo que se pueda realizar un seguimiento de las tablas definidas para tener relaciones de clave externa en la tabla en la que se realizan las modificaciones. Si las acciones referenciales en cascada se han definido tambin en las tablas de destino, las acciones en cascada especificadas se aplican para las filas eliminadas o actualizadas. No se puede especificar CASCADE para ninguna de las claves externas o principales que tengan una columna timestamp. ON DELETE CASCADE Especifica que si se intenta eliminar una fila con una clave a la que hacen referencia claves externas de filas existentes en otras tablas, todas las filas que contienen dichas claves externas tambin se eliminan. ON UPDATE CASCADE Especfica que si se intenta actualizar un valor de clave de una fila a cuyo valor de clave hacen referencia claves externas de filas existentes en otras tablas, tambin se actualizan todos los valores que conforman la clave externa al nuevo valor especificado para la clave.

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Nota: CASCADE no se puede especificar si una columna timestamp es parte de una clave externa o de la clave a la que se hace referencia.

ON DELETE SET NULL Especifica que si se intenta eliminar una fila con una clave a la que hacen referencia las claves externas de las filas existentes de otras tablas, todos los valores que conforman la clave externa de las filas a las que se hace referencia se establecen en NULL. Todas las columnas de clave externa de la tabla de destino deben aceptar valores NULL para que esta restriccin se ejecute. ON UPDATE SET NULL Especifica que si se intenta actualizar una fila con una clave a la que hacen referencia las claves externas de las filas existentes de otras tablas, todos los valores que conforman la clave externa de las filas a las que se hace referencia se establecen en NULL. Todas las columnas de clave externa de la tabla de destino deben aceptar valores NULL para que esta restriccin se ejecute. ON DELETE SET DEFAULT Especifica que si se intenta eliminar una fila con una clave a la que hacen referencia las claves externas de las filas existentes de otras tablas, todos los valores que conforman la clave externa de las filas a las que se hace referencia se establecen como predeterminados. Todas las columnas de clave externa de la tabla de destino deben tener una definicin predeterminada para que esta restriccin se ejecute. Si una columna acepta valores NULL y no se ha establecido ningn valor predeterminado explcito, NULL se convierte en el valor predeterminado implcito de la columna. Todos los valores distintos de NULL que se establecen debido a ON DELETE SET DEFAULT deben tener unos valores correspondientes en la tabla principal para mantener la validez de la restriccin de la clave externa. ON UPDATE SET DEFAULT Especifica que si se intenta actualizar una fila con una clave a la que hacen referencia las claves externas de las filas existentes de otras tablas, todos los valores que conforman la clave externa de la fila a los que se hace referencia se establecen en sus valores predeterminados. Todas las columnas externas de la tabla de destino deben tener una definicin predeterminada para que esta restriccin se ejecute. Si una columna se convierte en NULL, y no hay establecido ningn valor predeterminado explcito, NULL deviene el valor predeterminado implcito de la columna. Todos los valores no NULL que se establecen debido a ON UPDATE SET DEFAULT deben tener unos valores correspondientes en la tabla principal para mantener la validez de la restriccin de clave externa.

Informacin de catlogo de restricciones referenciales en cascada la consulta de la vista de catlogo sys.foreign_keys devuelve los siguientes valores que indican la restriccin referencial en cascada especificada para una clave externa.

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Valor 0 1 2 3

Descripcin NO ACTION CASCADE SET NULL SET DEFAULT

Las columnas UPDATE_RULE y DELETE_RULE devueltas por sp_fkeys y sp_foreignkeys devuelven 0 cuando se especifica CASCADE, SET NULL o SET DEFAULT y devuelven 1 cuando se especifica NO ACTION o es el valor predeterminado. Cuando se especifica una clave externa como el objeto de sp_help, el conjunto de resultados de salida contiene las siguientes columnas.

Nombre de columna delete_action

Tipo de datos nvarchar(9)

Descripcin Indica si la accin de eliminacin es CASCADE, SET NULL, SET DEFAULT, NO ACTION o N/A (no aplicable). Indica si la accin de actualizacin es CASCADE, SET NULL, SET DEFAULT, NO ACTION o N/A (no aplicable).

update_action

nvarchar(9)

Ejercicios de Auto Aprendizaje.


1. Crear la base de datos llamada Poseidn. La base de datos tiene que tener un tamao inicial de 5 MB, tamao mximo de 15 MB. Se tiene que Generar en la unidad C del disco duro.

Escribir el cdigo utilizado anteriormente?

2. Crear las siguientes tablas dentro de la base de datos. 3. Escribir el cdigo utilizado para crear las tablas siguientes tablas.

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Tabla Alumno

Tabla Distrito

Tabla Apoderado

Tabla Provincia

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Tabla Boleta_Notas

Tabla Seccin

Tabla Grado

Tabla Departamento

Tabla Ocupacin

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Establecer Valores por defecto (DEFAULT)


4. Agregar el siguiente valor por defecto en el campo F_ING de la tabla Alumno.

5. Agregar el siguiente valor por defecto en el campo F_INS de la tabla Apoderado. 6. Escribir el cdigo utilizado en esta sentencia SQL.

Establecer una regla de Validacin (CHECK)


7. Validar el campo promedio de la tabla Boleta_Notas. 8. Este campo tiene que estar comprendido de 0 a 20.

Creacin de restriccin Valor no Duplicado (Unique)


9. Se desea que el campo Nom_Dep de la Tabla Departamentos no contenga valores Duplicados.

10. Se desea que el campo Nom_Prov de la Tabla Provincia no contenga valores Duplicados. 11. Escribir el cdigo utilizado en esta sentencia SQL.

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Mantenimiento de una Tabla


12. Se desea insertar los siguientes registros dentro de la Tabla Departamento.

13. Se desea insertar los siguientes registros dentro de la Tabla Provincia.

14. Se desea insertar los siguientes registros dentro de la Tabla Distrito.

15. Se desea insertar los siguientes registros dentro de la Tabla Ocupacin.

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005 16. Se desea insertar los siguientes registros dentro de la Tabla Apoderado.

17. Se desea insertar los siguientes registros dentro de la Tabla Seccin.

18. Se desea insertar los siguientes registros dentro de la Tabla Grados.

19. Se desea insertar los siguientes registros dentro de la Tabla Alumnos.

20. Se desea insertar los siguientes registros dentro de la Tabla Boleta_Notas.

21. Realizar una consulta a las siguientes tablas.

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Mantenimiento en Cascada

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

: . .

Libros en pantalla de SQL Server 2005 (septiembre de 2007)

Restricciones de integridad referencial en cascada


Actualizado: 14 de abril de 2006

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
.

Tome como ejemplo la restriccin FK_ProductVendor_Vendor_VendorID de la tabla Purchasing.ProductVendor en AdventureWorks . Esta restriccin establece una relacin de clave externa desde la columna VendorID de la tabla ProductVendor hasta la columna de clave principal VendorID de la tabla Purchasing.Vendor. Si se especifica ON DELETE CASCADE para la restriccin, la eliminacin de la fila en Vendor, donde VendorID equivale a 100, tambin elimina las tres filas en ProductVendor, donde VendorID equivale a 100. Si se especifica ON UPDATE CASCADE para la restriccin, la actualizacin del valor VendorID de la tabla Vendor de 100 a 155 tambin actualiza los valores VendorID en las tres filas de ProductVendor cuyos valores VendorID actuales sean 100. ON DELETE CASCADE no se puede especificar en una tabla que tenga un desencadenador INSTEAD OF DELETE. Para las tablas que tienen desencadenadores INSTEAD OF UPDATE, no es posible especificar lo siguiente: ON DELETE SET NULL, ON DELETE SET DEFAULT, ON UPDATE CASCADE, ON UPDATE SET NULL y ON UDATE SET DEFAULT. Mltiples acciones en cascada Las instrucciones individuales DELETE o UPDATE pueden iniciar una serie de acciones referenciales en cascada. Por ejemplo, una base de datos contiene tres tablas: TableA, TableB y TableC. Se define una clave externa en TableB con ON DELETE CASCADE en relacin con la clave principal de TableA. Se define una clave externa en TableC con ON DELETE CASCADE en relacin con la clave principal de TableB. Si una instruccin DELETE elimina filas de TableA, la operacin tambin elimina cualquier fila de TableB que contenga claves externas coincidentes con las claves principales eliminadas de TableA y, a continuacin, elimina cualquier fila de TableC con claves externas que coincidan con las claves principales eliminadas de TableB. Las series de acciones referenciales en cascada desencadenadas por DELETE o UPDATE deben formar un rbol que no contenga referencias circulares. Ninguna tabla puede aparecer ms de una vez en la lista de todas las acciones referenciales en cascada que se obtienen de DELETE o UPDATE. Adems, el rbol de acciones referenciales en cascada no puede tener ms de una ruta de acceso a una tabla determinada. Las ramas del rbol se terminan cuando encuentran una tabla para la que se haya especificado NO ACTION o cuando ste sea su valor predeterminado. Desencadenadores y acciones referenciales en cascada Las acciones referenciales en cascada activan los desencadenadores AFTER UPDATE o AFTER DELETE de la siguiente manera: Primero se realizan todas las acciones referenciales en cascada generadas directamente por las instrucciones DELETE o UPDATE originales. Si se ha definido algn desencadenador AFTER en las tablas afectadas, estos desencadenadores se activan una vez realizadas todas las acciones en cascada. Estos desencadenadores se activan en el orden contrario a la accin en cascada. Si hay varios desencadenadores en una sola tabla, se activan en un orden aleatorio a no ser que el primer o ltimo desencadenador de la tabla sea un desencadenador dedicado. Este orden se especifica mediante sp_settriggerorder. Si varias cadenas en cascada se originan desde la tabla que era el objetivo directo de una accin UPDATE o DELETE, el orden en que estas cadenas activan sus respectivos desencadenadores no est especificado. Sin embargo, una cadena siempre activa todos sus desencadenadores antes que otra cadena inicie la activacin. Un desencadenador AFTER en la tabla que es el objetivo directo de una accin UPDATE o DELETE se activa independientemente de si afecta a alguna fila. En este caso, ninguna otra tabla se ve afectada por la cascada.

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
Si alguno de los desencadenadores anteriores realiza operaciones UPDATE o DELETE en otras tablas, estas acciones pueden iniciar cadenas en cascada secundarias. Estas cadenas secundarias se procesan a la vez para cada operacin UPDATE o DELETE una vez activados todos los desencadenadores de todas las cadenas principales. Este proceso puede repetirse recursivamente para las operaciones UPDATE o DELETE posteriores. Realizar CREATE, ALTER, DELETE u otras operaciones de lenguaje de definicin de datos (DDL) dentro de los desencadenadores puede causar la activacin de los desencadenadores DDL. Esto puede hacer que se lleven a cabo operaciones DELETE o UPDATE que inician cadenas y desencadenadores en cascada adicionales. Si se genera un error en una cadena de accin referencial en cascada determinada, se produce un error, no se activa ningn desencadenador AFTER en esa cadena y la operacin DELETE o UPDATE que ha creado la cadena se revierte. Una tabla con un desencadenador INSTEAD OF no puede tener tambin una clusula REFERENCES que especifique un accin en cascada. Sin embargo, un desencadenador AFTER de la tabla de destino de una accin en cascada puede ejecutar una instruccin INSERT, UPDATE o DELETE en otra tabla o vista que active un desencadenador INSTEAD OF definido para dicho objeto.

Veamos algunos ejemplos:


-- Esto es un comentario de linea simple /* Este es un comentario con varias lneas. Conjunto de Lineas. */ declare @nombre varchar(50)-- declare declara una variable -- @nombre es el identificador de la -- variable de tipo varchar set @nombre = 'www.devjoker.com' -- El signo = es un operador -- www.devjoker.com es un literal print @Nombre -- Imprime por pantalla el valor de @nombre. -- No diferencia maysculas ni minsculas

Scripts y lotes.
Un script de Transact SQL es un conjunto de sentencias de Transact SQL en formato de texto plano que se ejecutan en un servidor de SQL Server. Un script est compuesto por uno o varios lotes. Un lote delimita el alcance de las variables y sentencias del script. Dentro de un mismo script se diferencian los diferentes lotes a travs de las instruccin GO.
-- Este es el primer lote del script SELECT * FROM COMENTARIOS GO -- GO es el separador de lotes -- Este es el segundo lote del script SELECT getdate() -- getdate() es una funcin integrada que devuelve

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
-- la fecha

En ocasiones es necesario separar las sentencias en varios lotes, porque Transact SQL no permite la ejecucin de ciertos comandos en el mismo lote, si bien normalmente tambin se utilizan los lotes para realizar separaciones lgicas dentro del script.

Tipos de datos en Transact SQL


Cuando definimos una tabla, variable o constante debemos asignar un tipo de dato que indica los posibles valores. El tipo de datos define el formato de almacenamiento, espacio que de disco-memoria que va a ocupar un campo o variable, restricciones y rango de valores validos. Transact SQL proporciona una variedad predefinida de tipos de datos . Casi todos los tipos de datos manejados por Transact SQL son similares a los soportados por SQL.

Tipos de datos numricos.


SQL Server dispone de varios tipos de datos nmericos. Cuanto mayor sea el nmero que puedan almacenar mayor ser en consecuencia el espacio utilizado para almacenarlo. Como regla general se recomienda usar el tipo de dato mnimo posible. Todos los dato numricos admiten el valor NULL. Bit. Una columna o variable de tipo bit puede almacenar el rango de valores de 1 a 0. Tinyint. Una columna o variable de tipo tinyint puede almacenar el rango de valores de 0 a 255. SmallInt. Una columna o variable de tipo smallint puede almacenar el rango de valores -32768 a 32767. Int. Una columna o variable de tipo int puede almacenar el rango de valores -231 a 231-1 . BigInt. Una columna o variable de tipo bigint puede almacenar el rango de valores -263 a 263-1 . Decimal(p,s). Una columna de tipo decimal puede almacenar datos nmericos decimales sin redondear. Donde p es la precision (nmero total del dgitos) y s la escala (nmero de valores decimales) Float. Una columna de datos float puede almacenar el rango de valores -1,79x-10308 a 1,79x-10308, , si la definimos con el valor mxmo de precisin. La precisin puede variar entre 1 y 53. Real. Sinnimo de float(24). Puede almacenar el rango de valores -3,4x-1038 a 3,4x-1038, Money. Almacena valores nmericos monetarios de -263 a 263-1, con una precisin de hasta diexz milesimas de la unidad monetaria.

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

SmallMoney. Almacena valores nmericos monetarios de -214.748,3647 a 214.748,3647, con una precisin de hasta diez milesimas de la unidad monetaria. Todos los tipos de datos enteros pueden marcarse con la propiedad identity para hacerlos autonumricos. DECLARE @bit bit, @tinyint tinyint, @smallint smallint, @int int, @bigint bigint, @decimal decimal(10,3), -- 10 digitos, 7 enteros y -- 3 decimales @real real, @double float(53), @money money set @bit = 1 print @bit set @tinyint = 255 print @tinyint set @smallint = 32767 print @smallint set @int = 642325 print @int set @decimal = 56565.234 print @decimal set @money = 12.34 print @money -- Punto como separador decimal

Tipos de datos de caracter.


Char(n). Almacena n caracteres en formato ASCII, un byte por cada letra. Cuando almacenamos datos en el tipo char, siempre se utilizan los n caracteres indicados, incluso si la entrada de datos es inferior. Por ejemplo, si en un char(5), guardamos el valor 'A', se almacena 'A ', ocupando los cinco bytes. Varchar(n).Almacena n caracteres en formato ASCII, un byte por cada letra. Cuando almacenamos datos en el tipo varchar, unicamente se utilizan los caracteres necesarios,Por ejemplo, si en un varchar(255), guardamos el valor 'A', se almacena 'A', ocupando solo un byte bytes. Varchar(max). Igual que varchar, pero al declararse como max puede almacenar 231-1 bytes. Nchar(n).Almacena n caracteres en formato UNICODE, dos bytes por cada letra. Es recomendable utilizar este tipo de datos cuando los valores que vayamos a almacenar puedan pertenecer a diferente idomas.

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Nvarchar(n).Almacena n caracteres en formato UNICODE, dos bytes por cada letra. Es recomendable utilizar este tipo de datos cuando los valores que vayamos a almacenar puedan pertenecer a diferente idomas. Nvarchar(max).Igual que varchar, pero al declararse como max puede almacenar 231-1 bytes.

Tipos de datos de fecha.


Datetime. Almacena fechas con una precision de milisegundo. Debe usarse para fechas muy especificas. SmallDatetime. Almacena fechas con una precision de minuto, por lo que ocupa la mitad de espacio de que el tipo datetime, para tablas que puedan llegar a tener muchos datos es un factor a tener muy en cuenta. TimeStamp.Se utiliza para marcar un registro con la fecha de insercin - actualizacin. El tipo timestamp se actualiza automticamente cada vez que insertamos o modificamos los datos.

Tipos de datos binarios.


Binary. Se utiliza para almacenar datos binarios de longitud fija, con una longitud mxima de 8000 bytes. Varbinary. Se utiliza para almacenar datos binarios de longitud variable, con una longitud mxima de 8000 bytes..Es muy similar a binary, salvo que varbinary utiliza menos espacio en disco. Varbinary(max).Igual que varbinary, pero puede almacenar 231-1 bytes

Tipo de datos XML.


XML.Una de las grandes mejoras que incorpora SQL Server 2005 es el soporte nativo para XML. Como podemos deducir, este tipo de datos se utiliza para almacenar XML.

DECLARE @myxml XML set @myxml = (SELECT @@SERVERNAME NOMBRE FOR XML RAW, TYPE) print cast(@myxml as varchar(max)) Obtendremos la siguiente salida: <row nombre="SVR01"/>

Otros tipos de datos.


UniqueIdentifier. Se utiliza para identificadores nicos. Para generar identificadores nicos debemos utilizar la funcin NEWID().
Prof.: Cueva Valverde Diego Alberto - Instructor en T I diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

DECLARE @myuniqueid UNIQUEIDENTIFIER set @myuniqueid = NEWID() print cast(@myuniqueid as varchar(36)) Obtendremos la siguiente salida: 46141D79-102C-4C29-A620-792EA0208637 Sql_Variant.Permite almacenar valores de diferentes tipos de datos. No puede almacena varchar(max), xml, timestamp y tipos de datos definidos por el usuario.

El siguiente ejemplo muestra como asignar variables utilizando una sentencia SELECT.

SELECT

@nombre=nombre , @apellido1=Apellido1, @apellido2=Apellido2

FROM CLIENTES WHERE ID = 1

PRINT @nombre PRINT @apellido1 PRINT @apellido2 Un punto a tener en cuenta cuando asignamos variables de este modo, es que si la consulta SELECT devuelve ms de un registro, las variables quedarn asignadas con los valores de la ltima fila devuelta.
Prof.: Cueva Valverde Diego Alberto - Instructor en T I diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Por litmo veamos como asignar variables a travs de un cursor.

DECLARE @nombre VARCHAR(100), @apellido1 VARCHAR(100), @apellido2 VARCHAR(100)

DECLARE CDATOS CURSOR FOR SELECT nombre , Apellido1, Apellido2 FROM CLIENTES

OPEN CDATOS FETCH CDATOS INTO @nombre, @apellido1, @apellido2

WHILE (@@FETCH_STATUS = 0) BEGIN PRINT @nombre PRINT @apellido1 PRINT @apellido2 FETCH CDATOS INTO @nombre, @apellido1, @apellido2 END

CLOSE CDATOS DEALLOCATE CDATOS Veremos los cursores con ms detalle ms adelante en este tutorial.

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Estructuras de control en Transact SQL


Estructura condicional IF
La estuctura condicional IF permite evaluar una expresion booleana (resultado SI - NO), y ejecutar las operaciones contenidas en el bloque formado por BEGIN END.

IF (<expresion>) BEGIN ... END ELSE IF (<expresion>) BEGIN ... END ELSE BEGIN ... END Ejemplo de la estructura condicional IF.

DECLARE @Web varchar(100), @diminutivo varchar(3) SET @diminutivo = 'DJK' IF @diminutivo = 'DJK' BEGIN PRINT 'www.devjoker.com' END PRINT 'Otra Web (peor!)' END La estructura IF admite el uso de subconsultas:

ELSE BEGIN

DECLARE @coPais int, @descripcion varchar(255) set @coPais = 5 set @descripcion = 'Espaa' IF EXISTS(SELECT * FROM PAISES WHERE CO_PAIS = @coPais)

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

BEGIN UPDATE PAISES SET DESCRIPCION = @descripcion WHERE CO_PAIS = @coPais END ELSE BEGIN INSERT INTO PAISES (CO_PAIS, DESCRIPCION) VALUES (@coPais, @descripcion) END

Estructura condicional CASE


La estructura condicional CASE permite evaluar una expresion y devolver un valor u otro. La sintaxis general de case es:

CASE <expresion> WHEN <valor_expresion> THEN <valor_devuelto> WHEN <valor_expresion> THEN <valor_devuelto> ELSE <valor_devuelto> -- Valor por defecto END Ejemplo de CASE.

DECLARE @Web varchar(100), @diminutivo varchar(3) SET @diminutivo = 'DJK' SET @Web = (CASE @diminutivo WHEN 'DJK' THEN 'www.devjoker.com' WHEN 'ALM' THEN 'www.aleamedia.com' ELSE 'www.devjoker.com' END) PRINT @Web Otra sintaxis de CASE nos permite evaluar diferentes expresiones:

CASE WHEN <expresion> = <valor_expresion> THEN <valor_devuelto> WHEN <expresion> = <valor_expresion> THEN <valor_devuelto>

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

ELSE <valor_devuelto> -- Valor por defecto END El mismo ejemplo aplicando esta sintaxis:

DECLARE @Web varchar(100), @diminutivo varchar(3) SET @diminutivo = 'DJK' SET @Web = (CASE WHEN @diminutivo = 'DJK' THEN 'www.devjoker.com' WHEN @diminutivo = 'ALM' THEN 'www.aleamedia.com' ELSE 'www.devjoker.com' END) PRINT @Web

Otro aspecto muy interesante de CASE es que permite el uso de subconsultas.

DECLARE @Web varchar(100), @diminutivo varchar(3) SET @diminutivo = 'DJK' SET @Web = (CASE WHEN @diminutivo = 'DJK' THEN (SELECT web FROM WEBS WHERE id=1) WHEN @diminutivo = 'ALM' THEN (SELECT web FROM WEBS WHERE id=2) ELSE 'www.devjoker.com' END) PRINT @Web

Bucle WHILE
El bucle WHILE se repite mientras expresion se evalue como verdadero. Es el nico tipo de bucle del que dispone Transact SQL.

WHILE <expresion>

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

BEGIN ... END Un ejemplo del bucle WHILE.

DECLARE @contador int SET @contador = 0 WHILE (@contador < 100) BEGIN SET @contador = @contador + 1 PRINT 'Iteracion del bucle ' + cast(@contador AS varchar) END Podemos pasar a la siguiente iteracin del bucle utilizando CONTINUE.

DECLARE @contador int SET @contador = 0 WHILE (@contador < 100) BEGIN SET @contador = @contador + 1 IF (@contador % 2 = 0) CONTINUE PRINT 'Iteracion del bucle ' + cast(@contador AS varchar) END El bucle se dejar de repetir con la instruccin BREAK.

DECLARE @contador int SET @contador = 0 WHILE (1 = 1) BEGIN SET @contador = @contador + 1 IF (@contador % 50 = 0) BREAK PRINT 'Iteracion del bucle ' + cast(@contador AS varchar) END Tambin podemos utilizar el bucle WHILE conuntamente con subconsultas.

DECLARE @coRecibo int

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

WHILE

EXISTS (SELECT * FROM RECIBOS WHERE PENDIENTE = 'S')-- Ojo, la subconsulta se ejecuta -- una vez por cada iteracion -- del bucle!

BEGIN SET @coRecibo = (SELECT TOP 1 CO_RECIBO FROM RECIBOS WHERE PENDIENTE = 'S') UPDATE RECIBOS SET PENDIENTE = 'N' WHERE CO_RECIBO = @coRecibo END

Estructura GOTO
La sentencia goto nos permite desviar el flujo de ejecucin hacia una etiqueta. Fu muy utilizada en versiones anteriores de SQL Server conjuntamente con la variable de sistema @@ERROR para el control de errores. Actualmente, se desaconseja el uso GOTO, recomendandose el uso de TRY - CATCH para la gestion de errores.

DECLARE @divisor int, @dividendo int, @resultado int SET @dividendo = 100 SET @divisor = 0 SET @resultado = @dividendo/@divisor IF @@ERROR > 0 GOTO error PRINT 'No hay error' RETURN error: PRINT 'Se ha producido una division por cero'

Control de errores en Transact SQL


Uso de TRY CATCH A partIr de la versin 2005, SQL Server proporciona el control de errores a travs de las instruccines TRY y CATCH. Estas nuevas instrucciones suponen un gran paso adelante en el control de errores en SQL Server, un tanto precario en las versiones anteriores.
Prof.: Cueva Valverde Diego Alberto - Instructor en T I diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

La sintaxis de TRY CATCH es la siguiente:

BEGIN TRY ... END TRY BEGIN CATCH ... END CATCH El siguiente ejemplo ilustra el uso de TRY - CATCH.

BEGIN TRY DECLARE @divisor int , @dividendo int, @resultado int SET @dividendo = 100 SET @divisor = 0 -- Esta linea provoca un error de division por 0 SET @resultado = @dividendo/@divisor PRINT 'No hay error' END TRY BEGIN CATCH PRINT 'Se ha producido un error' END CATCH

Funciones especiales de Error


Las funciones especiales de error,estn disponibles nicamente en el bloque CATCH para la obtencin de informacin detallada del error. Son:
ERROR_NUMBER(), devuelve el nmero de error. ERROR_SEVERITY(), devuelve la severidad del error. ERROR_STATE(), devuelve el estado del error. ERROR_PROCEDURE(), devuelve el nombre del procedimiento almacenado que ha provocado el error. ERROR_LINE(), devuelve el nmero de lnea en el que se ha producido el error. ERROR_MESSAGE(), devuelve el mensaje de error. Prof.: Cueva Valverde Diego Alberto - Instructor en T I diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

Son extremadamente tiles para realizar una auditora de errores.

BEGIN TRY DECLARE @divisor int , @dividendo int, @resultado int SET @dividendo = 100 SET @divisor = 0 -- Esta linea provoca un error de division por 0 SET @resultado = @dividendo/@divisor PRINT 'No hay error' END TRY BEGIN CATCH PRINT ERROR_NUMBER() PRINT ERROR_SEVERITY() PRINT ERROR_STATE() PRINT ERROR_PROCEDURE() PRINT ERROR_LINE() PRINT ERROR_MESSAGE() END CATCH Lgicamente, podemos utilizar estas funciones para almacenar esta informacin en una tabla de la base de datos y registrar todos los errores que se produzcan.

La variable de sistema @@ERROR


En versiones anteriores a SQL Server 2005, no estaban disponibles las instrucciones TRY CATCH. En estas versiones se controlaban los errores utilizando la variable global de sistema @@ERROR, que almacena el nmero de error producido por la ltima sentencia Transact SQL ejecutada.

DECLARE @divisor int , @dividendo int , @resultado int SET @dividendo = 100 SET @divisor = 0 -- Esta linea provoca un error de division por 0 SET @resultado = @dividendo/@divisor IF @@ERROR = 0
Prof.: Cueva Valverde Diego Alberto - Instructor en T I diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

BEGIN PRINT 'No hay error' END ELSE BEGIN PRINT 'Hay error' END El uso de @@ERROR para controlar errores puede provocar multitud de problemas. Uno de los ms habituales es sin duda, incluir una nueva sentencia Transact SQL entre la lnea que provoco el error y la que lo controla. Esa nueva instruccin restaura el valor de @@ERROR y no controlaremos el error. El siguiente ejemplo ilustra esta situacin:

DECLARE @divisor int , @dividendo int , @resultado int SET @dividendo = 100 SET @divisor = 0 -- Esta linea provoca un error de division por 0 SET @resultado = @dividendo/@divisor PRINT 'Controlando el error ...' -- Esta linea estable @@ERROR a cero IF @@ERROR = 0 BEGIN -- Se ejecuta esta parte! PRINT 'No hay error' END ELSE BEGIN PRINT 'Hay error' END

Generar un error con RAISERROR


En ocasiones es necesario provocar voluntariamente un error, por ejemplo nos puede interesas que se genere un error cuando los datos incumplen una regla de negocio. Podemos provocar un error en tiempo de ejecucin a travs de la funcin RAISERROR.

DECLARE @tipo int, @clasificacion int SET @tipo = 1 SET @clasificacion = 3 IF (@tipo = 1 AND @clasificacion = 3)
Prof.: Cueva Valverde Diego Alberto - Instructor en T I diegoalberto_1987@hotmail.com

Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005

BEGIN RAISERROR ('El tipo no puede valer uno y la clasificacion 3', 16, -- Severidad 1 -- Estado ) END La funcin RAISERROR recibe tres parmetros, el mensaje del error (o cdigo de error predefinido), la severidad y el estado. La severidad indica el grado de criticidad del error. Admite valores de 0 al 25, pero solo podemos asignar valores del 0 al 18. Los errores el 20 al 25 son considerados fatales por el sistema, y cerraran la conexion que ejecuta el comando RAISERROR. Para asignar valores del 19 al 25 necesitares ser miembros de la funcin de SQL Server sysadmin. El estado es un valor para permitir que el programador identifique el mismo error desde diferentes partes del cdigo. Admite valores entre 1 y 127, permite tratar .

http://www.devjoker.com/contenidos/Tutorial-de-TransactSQL/235/Consultar-datos-en-Transact-SQL.aspx

Prof.: Cueva Valverde Diego Alberto - Instructor en T I

diegoalberto_1987@hotmail.com

Вам также может понравиться