Академический Документы
Профессиональный Документы
Культура Документы
LABORATORIO N 1
Objetivos:
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)
diegoalberto_1987@hotmail.com
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
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:
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.
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
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.
diegoalberto_1987@hotmail.com
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
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
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.
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.
diegoalberto_1987@hotmail.com
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
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.
diegoalberto_1987@hotmail.com
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
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:
diegoalberto_1987@hotmail.com
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
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.
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.
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?
diegoalberto_1987@hotmail.com
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
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.
diegoalberto_1987@hotmail.com
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
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
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
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
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
diegoalberto_1987@hotmail.com
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
diegoalberto_1987@hotmail.com
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
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.
diegoalberto_1987@hotmail.com
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
29. Como usted puede observar al lado derecho se muestra la Tabla alumnos. 30. Ingresar 2 a ms a la tabla Registros ala Tabla.
32. Aparcera un cuadro de dialogo donde usted tiene que confirmar que si se desea eliminar el registro seleccionado.
diegoalberto_1987@hotmail.com
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
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.
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.
diegoalberto_1987@hotmail.com
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
diegoalberto_1987@hotmail.com
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
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.
diegoalberto_1987@hotmail.com
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
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.
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.
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)
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)
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)
Para empezar un gran proyecto hace falta valenta, Para terminar un Gran proyecto hace falta perseverancia.
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
diegoalberto_1987@hotmail.com
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
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.
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.
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.
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.
diegoalberto_1987@hotmail.com
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
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.
4. Insertar un valor en la columna nota, que no este dentro del rango establecido.
5.
diegoalberto_1987@hotmail.com
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
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.
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.
diegoalberto_1987@hotmail.com
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
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.
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.
diegoalberto_1987@hotmail.com
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
Valor 0 1 2 3
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.
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)
2. Crear las siguientes tablas dentro de la base de datos. 3. Escribir el cdigo utilizado para crear las tablas siguientes tablas.
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
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
diegoalberto_1987@hotmail.com
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
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.
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.
diegoalberto_1987@hotmail.com
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
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.
diegoalberto_1987@hotmail.com
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
Mantenimiento en Cascada
diegoalberto_1987@hotmail.com
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
diegoalberto_1987@hotmail.com
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
diegoalberto_1987@hotmail.com
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
: . .
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.
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.
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
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.
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
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.
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"/>
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
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
DECLARE CDATOS CURSOR FOR SELECT nombre , Apellido1, Apellido2 FROM CLIENTES
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.
diegoalberto_1987@hotmail.com
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
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)
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
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>
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
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>
diegoalberto_1987@hotmail.com
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
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.
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'
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
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
Desarrollo de un Sistema de Facturacin con Visual Studio 2005 y SQL Server 2005
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.
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
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
diegoalberto_1987@hotmail.com