Anda di halaman 1dari 63

UNIVERSIDAD TCNICA DE AMBATO

FACULTAD CIENCIAS HUMANAS Y DE LA EDUCACIN CARRERA DE DOCENCIA EN INFORMTICA

Mdulo de Contenidos Gestor de Base de Datos II


OCTAVO SEMESTRE

Lic. Einstein Fabin Camacho Saltos Mg.

AMBATO ECUADOR marzo agosto 2012

FILOSOFA DEL MDULO

La metodologa a aplicarse en el mdulo es el ciclo de Kolb contemplando todas sus fases ,se pretende que los estudiantes alcancen un aprendizaje significativo para lo cual se realizar una retroalimentacin se explicar mediante ejemplos ,se crear un aprendizaje situado en lo cognitivo, los estudiantes trabajarn con ejercicios prcticos en el laboratorio, se realizarn exposiciones, pruebas, representacin grfica de base de datos . A continuacin se detalla como se trabajar con el ciclo del aprendizaje de KOLB. 1.- Experiencia concreta Para esta fase se realizar la explicacin respectiva luego se plantear preguntas para que los estudiantes traten de responder 2.-Observacin reflexiva En esta etapa se plantear ejercicios prcticos y que los estudiantes reflexionen en cada uno de ellos luego el profesor los resolver en clases 3.- Conceptualizacin abstracta Se propone ejercicios para que resuelvan los estudiantes y practiquen. 4.- Experimentacin activa Los estudiantes deben realizar un pequeo proyecto aplicando los conocimientos adquiridos.

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

INDICE DE CONTENIDOS
Contenido Pg.
FILOSOFA DEL MDULO ........................................................................................................... 2 INTRODUCCIN........................................................................................................................... 4 IDENTIFICAR LA ESTRUCTURA DE UNA BASE DE DATOS CON OBJETOS QUE LA COMPONEN ................................................................................................................................. 5 1.3 Estructura lgica ................................................................................................................. 6 1.4 Planificacin diseo. ........................................................................................................ 7 1.5 Normalizacin ................................................................................................................... 16 1.6 Herramientas para la normalizacin. ................................................................................ 18 Realizar diferentes tareas de diseo y planificacin sobre la estructura de tablas. ................... 18 2.1 Tabla ................................................................................................................................. 18 2.2 Tipos de datos................................................................................................................... 19 2.3 Creacin de tablas ............................................................................................................ 22 2.4 Creacin de Restricciones ................................................................................................ 25 2.5 Diagramas de bases de datos. ......................................................................................... 28 Aplicar las diferentes sentencias y modos en lenguaje SQL para tratamiento de la informacin almacenada en las diferentes tablas de la base de datos .......................................................... 31 3.1 Lenguaje de definicin de datos. ...................................................................................... 31 3.2 Lenguaje de control de datos. ........................................................................................... 33 3.3 Lenguaje de manipulacin de datos. ................................................................................ 33 3.4 Caractersticas de la programacin .................................................................................. 34 3.5 Funciones .......................................................................................................................... 37 Trabajar con los diferentes tipos de ndices, conociendo las ventajas y desventajas de su uso en funcin del objetivo buscado .................................................................................................. 57 4.1 ndices ............................................................................................................................... 57 4.2 Mantenimiento de ndices. ................................................................................................ 57 4.3 ndices agrupados y no agrupados. ................................................................................. 58 4.4 Creacin de ndices. ......................................................................................................... 59 4.5 Vistas ................................................................................................................................ 59 4.6 Creacin de vistas ............................................................................................................ 59 Realizar tareas de administracin de bases de datos mediante el uso de triggers. .................. 60 5.1Triggers .............................................................................................................................. 60 5.2 Creacin de triggers .......................................................................................................... 60 5.3 Procedimientos almacenados. .......................................................................................... 61 5.4 Trabajar con procedimientos almacenados ...................................................................... 61 BIBLIOGRAFA ....................................................................................................................... 62 ANEXOS ................................................................................................................................. 63

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

INTRODUCCIN

Gracias al aporte del Vicerrectorado Acadmico de la Universidad Tcnica de Ambato, en los esquemas presentados en la pgina web de la Institucin, se ha determinado los parmetros del presente mdulo de contenidos. El mdulo empieza realizando una pequea introduccin explicando conceptos y a continuacin, los objetos que componen una base de datos. Luego explica la creacin de tablas y sus relaciones entre ellos para ir avanzando a las diferentes sentencias y aplicaciones del lenguaje TRANSACT SQL para la consulta de base de dato luego se trabajara con ndices y finalmente con triggers para la administracin de la base de datos, la versin de SQL server en que se harn las aplicaciones es SQL SERVER 2008 EXPRESS R2 que es una versin gratuita de MICROSOFT que permite realizar aplicaciones de escritorio, aplicaciones web y pequeas aplicaciones de servidor. Se trabajara con conceptos tericos y prcticos que permitirn el progreso del estudiante hasta alcanzar el dominio requerido se pretende realizar un pequeo sistema aplicable a una institucin educativa con el propsito de apoyar al sistema educativo y que el estudiante tenga una acercamiento a lo que ser su vida profesional. El propsito de este mdulo es desarrollar la capacidad de razonamiento en los estudiantes para que puedan desarrollar sistemas utilizando la menor cantidad de recursos de sistemas evitando crear aplicaciones pesadas sin no todo lo contrario crear aplicaciones livianas y rpidas que optimice recursos

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

DESARROLLO DE CONTENIDOS CAPTULO I IDENTIFICAR LA ESTRUCTURA DE UNA BASE DE DATOS CON OBJETOS QUE LA COMPONEN
1.1 Definicin 1.1.1 Definicin de base de datos Una base de datos es una entidad en la cual se pueden almacenar gran cantidad de datos de manera estructurada, para luego poderlos recuperarlas posteriormente.

1.1.2 Entidad En bases de datos, una entidad es la representacin de un objeto o concepto del mundo real que se describe en una base de datos. Por ejemplo, nombres de entidades pueden ser: Alumno, Empleado, Artculo, etc. 1.1.2.1 Entidades fuertes: Una entidad fuerte es aquella que puede ser identificada unvocamente sin participar en la relacin . Ejemplo cliente, vehculo 1.1.2.1 Entidades dbiles: Es aquella que no puede participar sin existir en la relacin Ejemplo. Factura , viaje, a la entidad dbil se le representa con doble rectngulo. 1.2 Estructura fsica Una base de datos se almacena en varios ficheros o archivos en disco. Como mnimo existen dos archivos donde podremos guardar la base de datos. Archivo de datos. Archivo de registro de transacciones. El archivo de datos, o aquellos que aadimos como extras, son los archivos que tendrn almacenada la informacin. Por otro lado, tenemos el archivo de registro de transacciones. Este fichero es tan importante como el anterior. El nombre de una base de datos parte de una principal definida por el administrador y a partir de ese nombre principal, sql server aade

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

terminaciones y extensiones a ese nombre principal, adems como administrador puedo elegir el lugar donde se almacenar la base de datos. Ejemplo si soy administrador de una base de datos y quiero crear una base de datos llama uta los archivos que se crearan son los siguientes. Archivo de datos: miEmpresa_Data.MDF Archivo de registro de transacciones: miEmpresa_Log.LDF En caso de tener archivos extras, nosotros como administradores tambin podremos darles su nombre principal, y la extensin que suele utilizarse es .NDF Como administradores tambin puedo seleccionar el lugar de almacenamiento en una determinada carpeta o directorio, incluso diferentes unidades fsicas. No debes quedarte con la idea de que una base de datos, se compone sencillamente de dos archivos, es algo mucho ms completo que todo eso lo que representa una base de datos como entidad. 1.2.1 Tamao de la base de datos. Al crear una base de datos con SQL server no es necesario separar una gran cantidad de memoria ya que los archivos de datos y registro crecen automticamente, el administrador de la base de datos le da un tamao inicial una cantidad muy pequea en Megabytes, una vez que se utilice la base de datos y alcance el tamao mximo se incrementa. 1.3 Estructura lgica Es el esqueleto o armazn conceptual est constituido por abstracciones de la realidad para enfocarse en el mbito conceptual sin entrar en detalles fsicos. Entre los elementos que conforman la estructura lgica de una base de datos podemos destacar.
1.3.1 Tablas

Las tablas son las unidades que almacenan los datos. Como norma general se suele imponer que cada tabla, almacena informacin comn sobre una entidad en particular (recuerda los libros). Esta norma se conoce como normalizacin. La mayor parte de la actividad producida en una base de datos se produce sobre las tablas, siendo las principales tareas las siguientes: Aadir informacin. Eliminar informacin. Modificar y actualizar informacin. Recoger informacin y mostrarla. 1.3.2 Campos y registros Las tablas estn compuestas de registros y campos. Si imaginamos el diseo de una tabla, como si de una cuadrcula se tratase, sabemos que est compuesta por varias filas y columnas. Las filas corresponden a los registros, mientras que las columnas seran los campos. Y cada una de las celdas que se forman de enlazar un registro (fila) con un campo (columna) formara una celda, la cual almacena un valor. Por lo tanto, un registro esta formado por varios campos, y cada campo almacena un determinado valor.

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

1.3.3 ndices Un ndice es un conjunto de valores clave, el ndice guarda el elemento que desea indexar y la posicin en la base de datos. Los valores claves de los ndices pueden almacenar el contenido de una o varias columnas de una tabla. 1.3.4 Vistas Es un conjunto de registros determinados de una o varias tablas, se trabaja sobre ella como si fuera una tabla pero no lo es, una vista no almacena datos si no que los extrae, y permite trabajar con datos de varias tablas como si fuera una sola. 1.3.5 SQL Significa lenguaje de consulta estructurado, permite el acceso a bases de datos que explota la flexibilidad y potencia de los sistemas relacionales permitiendo gran variedad de operaciones. 1.4 Planificacin diseo. 1.4.1.- Identificar el objetivo de la base de datos. Consiste en un dilogo intenso para averiguar explcitamente que es lo que quiere el cliente. 1.4.2. Revisin datos existentes. Una gran herramienta para iniciar una aplicacin es ver documetacin sobre los datos existentes . Hojas de clculo, albaranes, facturas, documentacin en general. Una forma que ayuda mucho en la primera parte del desarrollo es mirar las necesidades del cliente, iniciando por el final. Por ejemplo, si analizamos un informe de ventas que nos proporcione el cliente podemos ver mucha informacin, incluso la forma de relacionar las tablas. Sabremos tambin si estos datos hay que agruparlos, por ejemplo, por vendedor o por poblacin. Esto nos ayudar a saber qu campos y tablas necesitaremos para conseguir el objetivo final que se muestra en el informe del cliente. Cuanta ms informacin se pueda recabar, ms fcil ser dar los primeros pasos y acercarse desde el principio al diseo ms correcto posible. Para evitar un trabajo suplementario y correcciones innecesarias, hazlo bien la primera vez. 1.4.3. Modelado de la base de datos 1.4.3.1 Paso al SGBD Llave principal: Es un campo o a una combinacin de campos que identifica de forma nica a cada fila de una tabla

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

Llave fornea: Identifica una columna o grupo de columnas que se refiere a una columna o grupo de columnas en otra tabla Relaciones uno a uno En una relacin uno a uno, una fila de la tabla A no puede tener ms de una fila coincidente en la tabla B y viceversa. Se crea una relacin uno a uno si las dos columnas relacionadas son claves principales Relaciones uno a varios Una relacin uno a varios es el tipo ms habitual de relacin. En este tipo de relacin, una fila de la tabla A puede corresponderse con muchas filas de la tabla B, pero una fila de la tabla B slo puede corresponderse con otra de la tabla A. Por ejemplo, en las tablas (editoriales) y (ttulos) se da una relacin uno a varios: una editorial publica muchos ttulos, pero a cada ttulo le corresponde slo una editorial. En una relacin uno a varios solamente una de las columnas relacionadas es la clave principal o tiene una restriccin unique. Relaciones Varios a Varios En una relacin varios a varios, una fila de la tabla A puede tener muchas filas coincidentes en la tabla B y viceversa. Este tipo de relaciones se crea definiendo una tercera tabla, denominada tabla de unin, cuya clave principal est constituida por las claves externas de las tablas A y B. Por ejemplo, entre las tablas (autores) y (ttulos) existira una relacin varios a varios definida por una relacin uno a varios entre cada una de ellas y la tabla (ttuloautor). La clave principal de la tabla es la combinacin de la columna au_id (la clave principal de la tabla autores) y la columna title_id (la clave principal de la tabla ttulos). 1.4.3.2 Modelo entidad relacin

Entidades

Relaciones

Conectores

1.4.3.3 Ejercicios Supongamos que queremos disear una base de datos para una biblioteca y hemos conocido que sta funciona de la siguiente forma: En la biblioteca se encuentra como es natural, una serie de libros que los empleados solicitan a las editoriales. Cuando un libro se recibe, se le da de alta, construyndole una ficha para bsqueda por autor y otra ficha para bsqueda por tema. En ambas fichas aparecen el ttulo del libro, el nombre del autor y su nacionalidad, la editorial a la que pertenece la publicacin, el tema sobre el que trata, el ISBN y la estantera de la biblioteca en la que se encuentra. Un empleado puede solicitar un libro escribiendo una carta de

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

peticin a la editorial correspondiente . La direccin a la que se a de dirigir la carta se encuentra en el archivo de editoriales . Para acceder a los libros de la biblioteca es necesario la posesin de un carnet que acredita a los distintos usuarios . Este carnet se confecciona a cada persona la primera vez que intenta retirar un libro . Cada usuario puede tener retirado un libro en un momento determinado. En la biblioteca les gustara disponer de un listado que se lanzara al final de cada da y en el que aparecera, para cada libro que se encuentra retirado, el ttulo, el ISBN, el autor y el nmero de carnet, nombre y la cdula del usuario que lo mantiene retirado. Cuando un usuario intente retirar un libro ha de presentar su carnet para que se tome nota de la retirada. Si el libro que desea ha sido retirado por otro usuario se llama a ste por telfono indicndole que hay otro usuario que desea el libro para que lo devuelva en caso de que no lo est utilizando. Mensualmente se confecciona un inventario actualizado donde se indica para cada libro , el nombre, el autor y el lugar de la biblioteca donde se encuentra.

CODAUTO RR

NOMB RE

NACIONALID AD

AUTOR
n TITU LO

Nombre

Direccin
escrit o m m

ISBN

1 editad o

TEM A
Situado en

1 ESTANTERIA

EDITORIAL

LIBRO

1 nestanteria escrito luga r nmer orororo

USUARIO

nombre cedul carnet telefono MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II a

Problema 2: Artculos y encargos Una base de datos para una pequea empresa debe contener informacin acerca de clientes, artculos y pedidos. Hasta el momento se registran los siguientes datos en documentos varios: Para cada cliente: Nmero de cliente (nico), Direcciones de envo (varias por cliente), Saldo, Lmite de crdito (depende del cliente, pero en ningn caso debe superar los 3.000.000 pts), Descuento. Para cada artculo: Nmero de artculo (nico), Fbricas que lo distribuyen, Existencias de ese artculo en cada fbrica, Descripcin del artculo. Para cada pedido: Cada pedido tiene una cabecera y el cuerpo del pedido. La cabecera est formada por el nmero de cliente, direccin de envo y fecha del pedido. El cuerpo del pedido son varias lneas, en cada lnea se especifican el nmero del artculo pedido y la cantidad. Adems, se ha determinado que se debe almacenar la informacin de las fbricas. Sin embargo, dado el uso de distribuidores, se usar: Nmero de la fbrica (nico) y Telfono de contacto. Y se desean ver cuntos artculos (en total) provee la fbrica. Tambin, por informacin estratgica, se podra incluir informacin de fbricas alternativas respecto de las que ya fabrican artculos para esta empresa Nota: Una direccin se entender como N, Calle, Comuna y Ciudad. Una fecha incluye hora. Se pide hacer el diagrama ER para la base de datos que represente esta informacin.

Problema 2 (*): Sistema de ventas

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

10

Le contratan para hacer una BD que permita apoyar la gestin de un sistema de ventas. La empresa necesita llevar un control de proveedores, clientes, productos y ventas. Un proveedor tiene un RUT, nombre, direccin, telfono y pgina web. Un cliente tambin tiene RUT, nombre, direccin, pero puede tener varios telfonos de contacto. La direccin se entiende por calle, nmero, comuna y ciudad. Un producto tiene un id nico, nombre, precio actual, stock y nombre del proveedor. Adems se organizan en categoras, y cada producto va slo en una categora. Una categora tiene id, nombre y descripcin. Por razones de contabilidad, se debe registrar la informacin de cada venta con un id, fecha, cliente, descuento y monto final. Adems se debe guardar el precio al momento de la venta, la cantidad vendida y el monto total por el producto.

Problema 3: Carreteras Disear un esquema E/R que recoja la organizacin de una base de datos para contener la informacin sobre todas las carreteras del pas, sabiendo que se deben cumplir las siguientes especificaciones: - Las carreteras estn divididas en varias categoras (locales, comerciales, regionales, nacionales, autovas, etc). MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II 11

- Las carreteras se dividen en tramos. Un tramo siempre pertenece a una nica carretera y no puede cambiar de carretera. - Un tramo puede pasar por varias comunas, interesando conocer el Km de la carretera y la comuna donde empieza el tramo y en donde termina. - Para los tramos que suponen principio o final de carretera, interesa saber si es que la carretera concluye fsicamente o es que confluye en otra carretera. En este caso, interesa conocer con qu carretera confluye y en qu kilmetro, tramo y comuna. Problema 4: Sistema de vuelos Obtener el diagrama E/R para un sistema de control de vuelos adaptado a las siguientes reglas de gestin (indicar las entidades, interrelaciones, etc., que se deducen de cada una de las reglas): a) De cada aeropuerto se conoce su cdigo, nombre, ciudad y pas. b) En cada aeropuerto pueden tomar tierra diversos modelos de aviones (el modelo de un avin determina su capacidad, es decir, el nmero de plazas. c) En cada aeropuerto existe una coleccin de programas de vuelo. En cada programa de vuelo se indica el nmero de vuelo, lnea area y das de la semana en que existe dicho vuelo. d) Cada programa de vuelo despega de un aeropuerto y aterriza en otro. e) Los nmeros de vuelo son nicos para todo el mundo. f) En cada aeropuerto hay mltiples aterrizajes y despegues. Todos los aeropuertos contemplados estn en activo, es decir, tienen algn aterrizaje y algn despegue. g) Cada vuelo realizado pertenece a un cierto programa de vuelo. Para cada vuelo se quiere conocer su fecha, plazas vacas y el modelo de avin utilizado. h) Algunos programas de vuelo incorporan escalas tcnicas intermedias entre los aeropuertos de salida y de llegada. Se entiende por escala tcnica a un aterrizaje y despegue consecutivos sin altas bajas de pasajeros. i) De cada vuelo se quieren conocer las escalas tcnicas ordenadas asignndole a cada una un nmero de orden. Por ejemplo, el programa de vuelo 555 de Iberia con vuelos los lunes y jueves despega de BarajasMadrid-Espaa y aterriza en Caudell-Sydney-Australia teniendo las siguientes escalas tcnicas: 1- Los Pradios-Sao Paulo-Brasil, 2-El Emperador-Santiago-Chile y 3-Saint Kitts-Auckland-Nueva Zelanda. Que cambios se producirn en el caso anterior si en las escalas pudiesen bajar o subir pasajeros? Explicar cmo se podra representar esta nueva situacin. Problema 5 (*): Olimpadas Las sedes olmpicas se dividen en complejos deportivos. Los complejos deportivos se subdividen en aquellos en los que se desarrolla un nico deporte y en los polideportivos. Los complejos polideportivos tienen reas designadas para cada deporte con un indicador de localizacin (ejemplo: centro, esquinaNE, etc.). Un complejo tiene una localizacin, un jefe de organizacin individual y un rea total ocupada.

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

12

Los dos tipos de complejos (deporte nico y polideportivo) tendrn diferentes tipos de informacin. Para cada tipo de sede, se conservar el nmero de complejos junto con su presupuesto aproximado. Cada complejo celebra una serie de eventos (ejemplo: la pista del estadio puede celebrar muchas carreras distintas.). Para cada evento est prevista una fecha, duracin, nmero de participantes, nmero de comisarios. Una lista de todos los comisarios se conservar junto con la lista de los eventos en los que est involucrado cada comisario ya sea cumpliendo la tarea de juez u observador. Tanto para cada evento como para el mantenimiento se necesitar cierto equipamiento (ejemplo: arcos, prtigas, barras paralelas, etc). Problema 6: Educando S.A. En la Empresa "Educando S.A." se lleva control de sus Bienes y Servicios. El inters primario es poder hacer que los Bienes se manejen de forma rpida y con el menor grado de error. Para esto quien maneja la seccin de "Bienes y Suministros" plantea las siguientes condiciones del negocio para la construccin de una base de datos: INVENTARIO. o Recibe las solicitudes de compras de las diferentes reas de la empresa. o Cada solicitud tiene un responsable. o Cada solicitud es autorizada por el jefe del rea y posteriormente por el Director Financiero. o Quien realiza una solicitud puede ser responsable de uno o varios centros de costos, con la salvedad de que l como empleado solo est adscrito a uno. o De la solicitud se debe diligenciar la siguiente informacin: Nmero de la solicitud (consecutivo), Fecha, Responsable (nombre y cdula), Centro de Costos, Rubro presupuestal del cual se descargar la compra. En cada solicitud se pueden discriminar uno o muchos tems con la siguiente informacin: tem, nombre del bien, cantidad solicitada, unidad de medida del bien, valor unitario y valor total. Cada solicitud debe ser totalizada. o Cada bien es identificado por un cdigo universal que es nico y es de carcter devolutivo (suministro) o un bien inmueble. o Una vez diligenciada la solicitud es remitida al rea de compras para realizar su correspondiente cotizacin. o Las cotizaciones son realizadas con uno o varios proveedores de los bienes solicitados. o Una vez la cotizacin definitiva est lista, se crea una orden contractual que maneja la siguiente informacin: Nmero de la orden contractual, nit y nombre del proveedor al cual se le va a realizar la compra, fecha de la orden, monto total de la orden, fecha de entrega. Cada orden puede tener asociado uno o varios tems de la solicitud o solicitudes que van a ser despachadas. Cada tem tiene la siguiente informacin: nombre del bien, cantidad solicitada, cantidad despachada, unidad de medida del bien, valor unitario y valor total. MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II 13

o La orden de compra es aprobada por el Director Financiero para que sea enviada al proveedor elegido. o Su funcin principal es recepcionar los bienes que llegan de los proveedores y distribuirlos a las correspondientes reas que realizaron las solicitudes de compras. o Cuando llega un proveedor mercanca, este hace una entrega fsica de los bienes, los cuales son comparados con la factura que este entrega y con la orden de compra correspondiente. Si esta accin es correcta se registra una entrada de almacn por cada factura relacionada, con la siguiente informacin: Nmero de Entrada, Fecha, Nmero de factura, Proveedor, Total Bienes, Valor Total (los totales deben coincidir con los de la factura). Adjunto a esta se discriminan los tems recibidos con la siguiente informacin: nombre del bien, cantidad entregada. o Cuando el almacn decide despachar los bienes a las diferentes reas solicitantes, registra cada una de las entregas en Salidas de Almacn con la siguiente informacin: Nmero de Salida, Empleado responsable del bien a entregar, fecha de salida, fecha de entrega. Por cada entrega se detalla cada uno de los tems con la siguiente informacin: nombre del bien, cantidad entregada. o Una entrada de almacn puede generar muchas salidas de almacn, por ejemplo: Pueden ingresar 500 pacas de papel higinico, pero como se debe repartir entre varias reas, cada una requiere de una salida de almacn. forma: o Es la encargada de administrar y controlar la ubicacin de los bienes dentro de la empresa, por esto antes de que el bien salga del almacn debe ser codificado a travs de un cdigo nico que lo haga identificable dentro de la empresa. o La ubicacin del bien se identifica por la siguiente informacin: responsable del bien, fecha de entrega, direccin del bien (ubicacin). Disear modelo ER para la base de datos.
Problema 7: Torneo de Tenis Grand Slam

El sistema debe memorizar todos los encuentros que se han desarrollado desde que existe el torneo, as como las siguientes caractersticas de estos. Descripcin: El Grand Slam se compone de cuatro torneos anuales que se celebran en Gran Bretaa, Estados Unidos, Francia y Australia. En cada pas se pueden MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II 14

desarrollar en distintos lugares (p. ej., en EE. UU. Puede desarrollarse en Forest Hill o en Flashing Meadows). Cada partido tiene asociado un premio de consolacin para el perdedor que depender de la fase en que se encuentre el torneo (p. ej., el perdedor de octavos de final puede ganar 5.000 dlares). El ganador de a final recibir el premio correspondiente al torneo. Cada torneo tiene cinco modalidades: Individual masculino, individual femenino, dobles masculino, dobles femenino y dobles mixtos. Tambin hay que tener en cuenta la nacionalidad de un jugador, de forma que este puede ser aptrida o tener varias nacionalidades.
Resultados a considerar:

El sistema debe dar respuesta a las siguientes preguntas: 1. Dado un ao y un torneo, composicin y resultado de los partidos. 2. Lista de rbitros que participaron en el torneo. 3. Ganancias percibidas en premios por un jugador a lo largo del torneo. 4. Lista de entrenadores que han entrenado a un jugador a lo largo del torneo y fechas en las que lo hizo. Ejemplos de acceso a la base de datos. 1. Connors gano Gerulaitis en Roland Garros en 1979 en cuartos de final en individuales masculinos por 6-3 4-6/7-5 6-0. 2. El seor Wilkinson arbitro ese partido. 3. Alemania ha ganado dos veces las individuales masculinas de Wimbledon. Borg ha ganado 2.000.000 de dlares a lo largo de su participacin en el Grand Slam. 4. El ganado de Roland Garros de 1987 gan 20.000 dlares. 5. Noah ha jugado cuatro veces en dobles mixtos con Mandlikova. Problema 8: Se desea crear un sitio web con informacin referente a las pelculas en cartel en las salas de un dudoso cine cercano a la plaza de armas. De cada pelcula, se almacena una ficha con su ttulo de distribucin, su ttulo original, su gnero, el idioma origina, si tiene subttulos en espaol o no, los paises de origen, el ao de la produccin, la url del sitio web de la pelcula, la duracin (en horas y minutos), la calificacin (Apta todo pblico,+9 aos, +15 aos,+18 aos), fecha de estreno en Santiago, un resumen y un identificador de la pelcula. De cada pelcula interesa conocer la lista de directores y el reparto, es decir para cada actor que trabaja, el nombre de todos los personajes que interpreta. Adems interesa disponer de informacin sobre los directores y actores que trabajan en cada pelcula. De ambos, se conoce su nombre (que lo identifica) y su nacionalidad. Adems se desea conocer la cantidad de pelculas en las que dirigieron o actuaron. Tenga en cuenta que hay personas que cumplen los dos roles. Los cines pueden tener ms de una sala y cada semana cada uno de los cines enva la cartelera para dicha semana, indicando de detalle de las funciones. Para cada funcin se conoce el da de la semana y la hora de comienzo, y obviamente la sala y la pelcula que exhibe. De cada sala se sabe el nombre, un nmero que la identifica dentro del cine y la cantidad de butacas que posee. De cada cine se conoce el nombre que lo identifica, su direccin y telfono para consultas.

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

15

Algunos cines cuentan con promociones. Estas promociones dependen de la funcin. (Ej. De lunes a jueves antes de las 18 50% de descuento en la sala tal del cine tal para la pelcula cual...La funcin del lunes a las 14 para la pelcula tal en la sala cual, no se cobra a los escolares con tnica... ) De cada promocin se conoce una descripcin y el descuento que aplica. Adems del resumen de la pelcula que se incluye en la ficha interesa mostrar la opinin de las personas que vieron la pelcula. De cada opinin se conoce el nombre de la persona que la realiza, su edad, le fecha en que registr su opinin, la calificacin que le dio a la pelcula (Obra Maestra, Muy Buena, Buena, Regular, Mala) y el comentario propiamente dicho. A cada opinin se le asigna un nmero que la identifica respecto de la pelcula sobre la cual opina. 1.5 Normalizacin 1.5.1 Primera forma normal Una tabla est en Primera Forma Normal si:

Todos los atributos son atmicos. Un atributo es atmico si los elementos del dominio son indivisibles, mnimos. La tabla contiene una llave primaria nica. La llave primaria no contiene atributos nulos. No debe existir variacin en el nmero de columnas. Los Campos no llave deben identificarse por la llave (Dependencia Funcional) Debe Existir una independencia del orden tanto de las filas como de las columnas, es decir, si los datos cambian de orden no deben cambiar sus significados

Una tabla no puede tener mltiples valores en cada columna. Los datos son atmicos. (Si a cada valor de X le pertenece un valor de Y y viceversa) Esta forma normal elimina los valores repetidos dentro de una BD 1.5.2 Segunda Forma Normal (2FN) Dependencia Funcional. Una relacin est en 2FN si est en 1FN y si los atributos que no forman parte de ninguna clave dependen de forma completa de la clave principal. Es decir que no existen dependencias parciales. (Todos los atributos que no son clave principal deben depender nicamente de la clave principal). En otras palabras podramos decir que la segunda forma normal est basada en el concepto de dependencia completamente funcional. Una dependencia funcional es completamente funcional si al eliminar los atributos A de X significa que la dependencia no es mantenida, esto es que Una dependencia funcional es una dependencia parcial si hay algunos atributos que pueden ser eliminados de X y la dependencia todava se mantiene, esto es . Por ejemplo {DNI, ID_PROYECTO} HORAS_TRABAJO (con el DNI de un empleado y el ID de un proyecto sabemos cuntas horas de trabajo por semana trabaja un empleado en dicho proyecto) es completamente dependiente dado que ni DNI HORAS_TRABAJO ni ID_PROYECTO MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II 16

HORAS_TRABAJO mantienen la dependencia. Sin embargo {DNI, ID_PROYECTO} NOMBRE_EMPLEADO es parcialmente dependiente dado que DNI NOMBRE_EMPLEADO mantiene la dependencia. 1.5.3 Tercera Forma Normal (3FN) La tabla se encuentra en 3FN si es 2FN y si no existe ninguna dependencia funcional transitiva entre los atributos que no son clave. Un ejemplo de este concepto sera que, una dependencia funcional X->Y en un esquema de relacin R es una dependencia transitiva si hay un conjunto de atributos Z que no es un subconjunto de alguna clave de R, donde se mantiene X->Z y Z->Y. Por ejemplo, la dependencia SSN->DMGRSSN es una dependencia transitiva en EMP_DEPT de la siguiente figura. Decimos que la dependencia de DMGRSSN el atributo clave SSN es transitiva va DNUMBER porque las dependencias SSNDNUMBER y DNUMBERDMGRSSN son mantenidas, y DNUMBER no es un subconjunto de la clave de EMP_DEPT. Intuitivamente, podemos ver que la dependencia de DMGRSSN sobre DNUMBER es indeseable en EMP_DEPT dado que DNUMBER no es una clave de EMP_DEPT. Formalmente, un esquema de relacion est en 3 Forma Normal ElmasriNavathe,[2] si para toda dependencia funcional , se cumple al menos una de las siguientes condiciones: es superllave o clave. es atributo primo de ; esto es, si es miembro de alguna clave en .

Adems el esquema debe cumplir necesariamente Ejemplo


Id estudiante 01 02 03 Ci 1803327418 10152465 Nombres Fransico Fabian Carlos Banabeti Apellidos Camacho Saltos Ruales Camacho Curso 4 5 Materia En ES Descripicn Ings Espaol

1 forma normal
Id estudiante 01 02 03 Ci 1803327418 10152465 Pnombre Fransisco Carlos snombre Fabin Benabeti Apellido paterno Camacho Ruales Apellido materno Saltos Camacho Curso 4 5 Materia En ES Descripicn Ings Espaol

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

17

2 forma normal
Id estudiante 01 02 03 Ci 1803327418 10152465 Pnombre Fransisco Carlos snombre Fabin Benabeti Apellido paterno Camacho Ruales Apellido materno Saltos Camacho Curso 4 5 Materia En ES Descripicn Ings Espaol

Id Curso 01 02 3 era forma normal Id Materia 01 02 Id Materia 01 02 Iddescripcion

Curso Primero Segundo Materia En MT Materia En MT Descripcin Ingls Matemtica Descripcin Ingls Matemtica

Dada la siguiente tabla normalizarla IDcliente Cdula Nombres

Direccin Proveedor Producto

1.6 Herramientas para la normalizacin. A continuacin se mencionan algunas herramientas para normalizar una base de datos mediante un proceso automatizado.

CAPTULO II Realizar diferentes tareas de diseo y planificacin sobre la estructura de tablas.


2.1 Tabla MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II 18

Es un conjunto de datos ordenados en filas y columnas 2.2 Tipos de datos sql_variant: Puede usarse en columnas, parmetros, variables y valores devueltos de funciones definidas por el usuario.sql_variant permite que estos objetos de base de datos admitan valores de otros tipos de datos. xml: Capaz de almacenar documentos XML fragmentos XML, que es posible utilizar tanto en variables como en campos de tablas, y que a diferencia de otros tipos de datos, ofrece mtodos

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

19

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

20

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

21

2.3 Creacin de tablas Antes de aprender sobre la creacin de tablas es necesario conocer los pasos para crear una base de datos en sql server 2008. Para crear una base de datos en SQL Server 2008 debemos seguir los siguientes pasos: 1.- Ingresar a SQLServer

2.- En la ventana que nos aparece realizamos clic derecho en donde dice database

3.- Nos aparece el siguiente men hacemos clic donde dice New Database

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

22

4.- Nos aparece la siguiente ventana

En donde dice Database Name le damos un nombre a la base de datos.

5.- Luego hacemos clic en

Nos aparece la siguiente ventana

Aqu tenemos dos opciones In percent nos permite que si sobrepasa el tamao de la base de datos crezca en porcentaje. MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II 23

In Megabytes nos permite hacer que la base de datos crezca de 1 Megabyte en 1 megabyte si sobrepasa el tamao y listo. Ahora para crear una tabla seguimos los siguientes pasos. 1.- Hacemos clic en donde dice database buscamos el nombre de nuestra base de datos en la seccin tables realizamos clic derecho con el botn secundario del mouse

Nos aparece el siguiente men

Hacemos clic en New Table

Y en donde dice Column Name vamos poniendo los campos de las bases de datos con su respectivo tipo.

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

24

Al final hacemos clic en donde est el cono de un diskette nos aparece una ventana pidiendo el nombre de la tabla le asignamos un nombre y realizamos clic en el botn ok. 2.4 Creacin de Restricciones Una restriccin es una condicin que obliga el cumplimiento de ciertas condiciones en la base de datos. Algunas no son determinadas por los usuarios, sino que son inherentemente definidas por el simple hecho de que la base de datos sea relacional. Algunas otras restricciones las puede definir el usuario, por ejemplo, usar un campo con valores enteros entre 1 y 10. Las restricciones proveen un mtodo de implementar reglas en la base de datos. Las restricciones restringen los datos que pueden ser almacenados en las tablas. Usualmente se definen usando expresiones que dan como resultado un valor booleano, indicando si los datos satisfacen la restriccin o no. Las restricciones no son parte formal del modelo relacional, pero son incluidas porque juegan el rol de organizar mejor los datos. Las restricciones son muy discutidas junto con los conceptos relacionales. Pueden crearse los siguientes tipos de restricciones: Las restricciones unique y primary key exigen que no haya dos filas en una tabla con los mismos valores en las columnas especificadas. Adems, la restriccin primary key requiere que no haya valores nulos en ninguna fila de la columna. 2.4.1 Crear una restriccin PRIMARY KEY Para crear una restriccin Primary Key realizamos clic en el campo donde queremos crear la restriccin y luego realizamos clic en el cono 2.4.2 Crear una restriccin UNIQUE .

Para crear una restriccin UNIQUE realizamos clic en el campo donde queremos crear dicha restriccin y luego escogemos el men Table Designe y luego en Indexes/Keys.

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

25

Nos aparece la siguiente ventana en donde dice Type escogemos Unique Key

Realizamos clic en close y guardamos la tabla. La integridad de referencia ( references ) exige que los datos insertados en columnas especficas ya tengan datos coincidentes en la tabla y columnas especificadas. Las restricciones check limitan los valores de datos insertados en las columnas. 2.4.3 Agregar una restriccin CHECK Realizamos clic derecho dentro del explorador de objetos en la seccin tables buscamos el nombre de la tabla y buscamos constraints realizamos clic derecho con el botn secundario del mouse y escogemos New Constraint

Nos apareced la siguiente ventana:

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

26

Realizamos clic en este botn para poder editar la expresin que queremos que tenga restricciones. En la ventana que nos aparece ponemos la expresin deseada y realizamos clic en el botn Ok.

Para poder editar la tabla y verificar los cambios realizados buscamos en el explorador de objetos el nombre de la tabla realizamos clic derecho y escogemos la opcin Edit Top 200 Rows

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

27

Y procedemos a ingresar datos para probar. Tambin se puede imponer la integridad de datos restringiendo el uso de valores nulos en una columna (las palabras clave null o not null ) y proporcionando valores predeterminados para columnas (la clusula default ).

2.5 Diagramas de bases de datos. Los diagramas de bases de datos se utiliza para visualizar las tablas grficamente y para poder establecer las relaciones. Para crear un diagrama hacemos clic en el explorador de objetos hacemos clic en el nombre de la base de datos y escogemos Database Diagrams hacemos clic derecho escogemos new Database Diagrams

Nos aparece el siguiente mensaje , realizamos un clic dentro del botn Yes

Volvemos hacer clic derechos y volvemos a escoger New Data Base Diagram. Aparece la siguiente ventana en pantalla

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

28

Seleccionamos todas y escogemos Add. Nos aparece la siguiente ventana

En el caso de tener una relacin muchos a muchos debemos romper la relacin con una tercera tabla para esto desde el mismo Database Diagram hacemos clic derecho en un lugar en blanco y escogemos new table llenos las columnas con los campos y tipos de datos respectivos. Debemos tomar en cuenta que en las tablas a donde va la relacin tiene que tener su respectiva llave fornea y para poder establecer la relacin MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II 29

arrastramos desde el campo principal hacia la llave fornea es decir de la tabla padre a la hija. Quedando las relaciones as

Finalmente cerramos la base de datos nos aparece la siguiente ventana pidiendo guardar el Database Diagram le demos un nombre y realizamos clic en el botn OK

2.5.2 Ejercicios Los diagramas del ejercicio 1 y 2 del captulo anterior pasar al modelo relacional en SQLSERVER 2008. Los ejercicios 5 y 6 , los ejercicios de la prueba pasarlos a sql server. Transformar el siguiente modelo entidad relacin al modelo relacional.

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

30

CAPTULO III Aplicar las diferentes sentencias y modos en lenguaje SQL para tratamiento de la informacin almacenada en las diferentes tablas de la base de datos
3.1 Lenguaje de definicin de datos. Las sentencias DDL son CREATE, ALTER y DROP. Siempre se usan estas sentencias junto con el tipo de objeto y el nombre del objeto. CREATE Crea una base de datos o un objeto Sintaxis Create database nombre on grupo_base de datos filegroup Ejemplo USE master; go IF DB_ID (N'calificaciones') IS NULL BEGIN create database calificaciones on primary ( name = calificaciones , filename = 'C:\calificaciones\calificaciones.mdf', MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II 31

size = 3 Mb, maxsize = unlimited ) log on ( name = calificacione_log, filename = 'c:\Calificaciones\calificaciones.ldf', size = 1 Mb, maxsize = unlimited ) END Else Begin print 'La base ya existe' End Go Uso de create para crear una tabla Sintaxis CREATE TABLE table_name ( { < column_definition > | < table_constraint > } [ ,...n ] ) Ejemplos Use calificaciones; go Create table alumno ( codalumno char(3) NOT NULL PRIMARY KEY, cedula varchar(11) NOT NULL UNIQUE, nombre varchar(30) NULL, apellido varchar (30) NULL ) Go Use ALTER Modifica la estructura de una base de datos o de un objeto Sintaxis Alter Objeto Modify propiedad use master; go ALTER DATABASE notas SET SINGLE_USER WITH ROLLBACK IMMEDIATE GO ALTER DATABASE notas MODIFY NAME = calificaciones GO ALTER DATABASE calificaciones SET MULTI_USER GO MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II 32

use calificaciones; Alter table alumno add direccion varchar(30); go use calificaciones go alter table alumno alter column nombre varchar(40); go DROP Elimina una base de datos o un objeto Los permisos necesarios para ejecutar estas sentencias Pertenecer al roles sysadmin o dbcreator y db_owner, o a db_ddladmin.
Roles de Servidor Sysadmin Dbcreator Rol de base de datos db_owner db_ddladmin Descripcin Puede realizar cualquier actividad en SQL Server. Puede crear, modificar y borrar una base de datos. Descripcin Tiene todos los permisos en la base de datos Puede usar todas las sentencias DDL, pero no usar GRANT, REVOKE o DENY

son:

Es recomendable no utilizar diferentes cuentas para ejecutar sentencias DDL, ya que el performance de SQL Server se ve degradado, por eso es mucho mejor si todos los objetos tienen el mismo owner, si en cambio se tienen objetos con diferentes owners como por ejemplo el de una vista y una tabla, SQL Server debe de validar los permisos para ambos antes de que el usuario pueda acceder a la vista. 3.2 Lenguaje de control de datos. Despus de utilizar las sentencias DDL para crear objetos, la siguiente tarea es asegurarlos. Las sentencias DCL asignan permisos a usuarios en especfico o a roles de bases de datos. GRANT Asigna permisos a usuarios o roles para poder acceder a una base de datos o ejecutar sentencias SQL DENY Evita que un usuario o role ingrese a una base de datos o alguno de sus objetos o de ejecutar una o varias sentencias SQL. REVOKE 3.3 Lenguaje de manipulacin de datos. Ahora que hemos creado objetos mediante sentecias DDL y asignado permisos sobre estos objetos con sentencias DCL, ahora vamos a ver como trabajar con estos objetos SELECT Despliega informacin de una o varias tablas MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II 33

UPDATE Modificar uno o ms registros de una tabla DELETE Eliminar uno o ms registros de una tabla Por default solo los miembros de sysadmin o dbcreator, db_owner, db_datawriter o db_datareader pueden ejecutar sentencias DML, pero como se vio con las sentencias DCL, estos permisos puede ser otorgados a usuarios en especfico. INSERT INTO Me permite ingresar datos en una tabla. UNION Para unir tablas. 3.4 Caractersticas de la programacin 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 ELSE BEGIN PRINT 'Otra Web (peor!)' END

La estructura IF admite el uso de subconsultas: DECLARE @coPais int, @descripcion varchar(255) set @coPais = 5

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

34

set @descripcion = 'Espaa' IF EXISTS(SELECT * FROM PAISES WHERE CO_PAIS = @coPais) 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> 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)

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

35

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> 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.

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

36

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 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'

3.5 Funciones

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

37

3.5.1 Sum La funcin "sum()" retorna la suma de los valores que contiene el campo especificado. Si queremos saber la cantidad total de libros que tenemos disponibles para la venta, debemos sumar todos los valores del campo "cantidad" Sintaxis Sum (valores a sumar) Ejemplo select sum(cantidad) from libros; 3.5.2 Count Regresa la cuneta de todos los valores del SELECT. Tambin se puede usar la opcin DISTINCT para solamente contar los valores distintos. Count (Valores a contar) Ejemplo: RAISERROR('Contar los valores con COUNT',10,1) WITH NOWAIT SELECT COUNT(PRICE) as Cuenta FROM T1 RAISERROR('Contar los valores Distinto con COUNT',10,1) WITH NOWAIT SELECT COUNT(DISTINCT PRICE) as Cuenta_Distinta FROM T1 3.5.3 COUNTBIG Igual que COUNT, pero regresa un BIGINT. Sintaxis CountBig( Valores a contar) Ejemplo: RAISERROR('Contar los valores con COUNT_BIG. Regrasa un BIGINT',10,1) WITH NOWAIT SELECT COUNT_BIG(PRICE) as Cuenta_BIGINT FROM T1 3.5.4 AVG Regresa el promedio de todos los valores del SELECT. Tambin se puede usar la opcin DISTINCT para calcular el promedio de los valores distintos. Sintaxis AVG(Valores) Ejemplo: MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II 38

RAISERROR('El promedio',10,1) WITH NOWAIT SELECT AVG(PRICE) as Promedio FROM T1 RAISERROR('El promedio por categoria',10,1) WITH NOWAIT SELECT CATEGORY , AVG(DISTINCT PRICE) as Promedio_por_Categoria FROM T1 GROUP BY CATEGORY 3.5.4 Min Regresa el valor mnimo de todos los valores del SELECT. Sintaxis Min (Valores) Ejemplo:
RAISERROR('El valor minimo en la tabla',10,1) WITH NOWAIT SELECT MIN(PRICE) as Minimo FROM T1

3.5.5 MAX Regresa el Valor mximo de todos los valores del SELECT. Ejemplo: RAISERROR('El valor Maximo en la tabla',10,1) WITH NOWAIT SELECT MAX(PRICE) as Maximo FROM T1

3.5.6 STDEV Regresa la desviacin estndar de una muestra de todos los valores del SELECT. Sintaxis Stdev(valores) Ejemplo: RAISERROR('Calcular la desviacin estandar de los valores en la tabla',10,1) WITH NOWAIT SELECT STDEV(PRICE) as DesviacinEstandar FROM T1 3.5.7 STDEVP Regresa la desviacin estndar de todos los valores del SELECT. MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II 39

Sintaxis Stdevp(valores) Ejemplo: RAISERROR('Calcular la desviacin estandar P de los valores en la tabla',10,1) WITH NOWAIT SELECT STDEVP(PRICE) as DesviacinEstandarP FROM T1 3.5.7 VAR Regresa la variacin de una muestra de todos los valores del SELECT Sintaxis Var(valores) Ejemplo: RAISERROR('Calcular la Variacin de los valores en la tabla',10,1) WITH NOWAIT SELECT VAR(PRICE) as Variacin FROM T1 3.5.8 VARP Regresa la variacin de todos los valores del SELECT. Sintaxis Varp (Valores) Ejemplo: RAISERROR('Calcular la Variacin P de los valores en la tabla',10,1) WITH NOWAIT SELECT VARP(PRICE) as VariacinP FROM T1 3.5.9 GROUPING Usado con el GROUP BY y ROLLUP, se puede ver el nivel de los resultados Ejemplo: RAISERROR('Usar GROUPING para agrupar categoras ',10,1) WITH NOWAIT RAISERROR('El ROLLUP nos da el Total de todos los valores',10,1) WITH NOWAIT SELECT SUM(PRICE) as PRECIO , GROUPING(Category) as Categora FROM T1 GROUP BY CATEGORY WITH ROLLUP 3.5.10 CHECKSUM AGG Regresa la suma de verificacin de todos los valores del SELECT. Ejemplo: RAISERROR('El todos los valores en la tabla',10,1) WITH NOWAIT MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II 40

SELECT CHECKSUM_AGG(cast(PRICE as int)) as CHECKSUMAGG FROM T1 3.5.11 FUNCIONES DE CADENA ASCII (Transact-SQL) Devuelve el valor de cdigo ASCII del carcter situado ms a la izquierda de una expresin de caracteres. Sintaxis ASCII ( character_expression ) Ejemplo SET TEXTSIZE 0 SET NOCOUNT ON -- Create the variables for the current character string position -- and for the character string. DECLARE @position int, @string char(15) -- Initialize the variables. SET @position = 1 SET @string = 'Du monde entier' WHILE @position <= DATALENGTH(@string) BEGIN SELECT ASCII(SUBSTRING(@string, @position, 1)), CHAR(ASCII(SUBSTRING(@string, @position, 1))) SET @position = @position + 1 END SET NOCOUNT OFF GO

LEFT (Transact-SQL) Devuelve la parte izquierda de una cadena de caracteres con el nmero de caracteres especificado. Sintaxis LEFT ( character_expression , integer_expression ) Ejemplos USE AdventureWorks2012; GO SELECT LEFT(Name, 5) FROM Production.Product ORDER BY ProductID; GO LEN (Transact-SQL) Devuelve el nmero de caracteres de la expresin de cadena especificada, excluidos los espacios en blanco finales. MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II 41

Sintaxis LEN ( string_expression ) Ejemplo GO SELECT LEN(FirstName) AS Length, FirstName, LastName FROM Sales.vIndividualCustomer WHERE CountryRegionName = 'Australia'; GO LOWER (Transact-SQL) Devuelve una expresin de caracteres despus de convertir en minsculas los datos de caracteres en maysculas. Sintaxix LOWER ( character_expression ) UPPER (Transact-SQL) Devuelve una expresin de caracteres con datos de caracteres en minsculas convertidos a maysculas. Sintaxis UPPER ( character_expression ) Ejemplos de UPPER y LOWER USE AdventureWorks2012; GO SELECT UPPER(RTRIM(LastName)) + ', ' + FirstName AS Name FROM Person.Person ORDER BY LastName; GO LTRIM (Transact-SQL) Devuelve una expresin de caracteres tras quitar todos los espacios iniciales en blanco. Sintaxis LTRIM ( character_expression ) Ejemplos DECLARE @string_to_trim varchar(60); SET @string_to_trim = ' Five spaces are at the beginning of this string.'; SELECT 'Here is the string without the leading spaces: ' + LTRIM(@string_to_trim); GO RTRIM (Transact-SQL)

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

42

Devuelve una cadena de caracteres despus de truncar todos los espacios en blanco finales. Sintaxis RTRIM ( character_expression ) Ejemplos

DECLARE @string_to_trim varchar(60); SET @string_to_trim = 'Four spaces are after the period in this sentence. SELECT @string_to_trim + ' Next string.'; SELECT RTRIM(@string_to_trim) + ' Next string.'; GO SUBSTRING (Transact-SQL) Devuelve parte de una expresin de caracteres, binaria, de texto SUBSTRING ( expression ,start , length ) Ejemplos USE AdventureWorks2012; GO SELECT LastName, SUBSTRING(FirstName, 1, 1) AS Initial FROM Person.Person WHERE LastName like 'Barl%' ORDER BY LastName; 3.5.12 FUNCIONES DE FECHA Y HORA Funciones de fecha y hora del sistema

';

Funcin

Sintaxis

Valor devuelto

Tipo de datos devuelto datetime2(7)

Determinismo

SYSDATETIME

SYSDATETIME ()

Devuelve un valor datetime2(7) que contiene la fecha y hora del equipo en el que se est ejecutando la instancia de SQL Server.El ajuste de zona horaria no est incluido.

No determinista

SYSDATETIMEOFFSET

SYSDATETIMEOFFSET ( )

Devuelve un valor datetimeoffset(7) que contiene la fecha y

datetimeoffset(7)

No determinista

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

43

hora del equipo en el que la instancia de SQL Server se est ejecutando.El ajuste de zona horaria est incluido. SYSUTCDATETIME SYSUTCDATETIME ( ) Devuelve un valor datetime2(7) que contiene la fecha y hora del equipo en el que la instancia de SQL Server se est ejecutando.La fecha y hora se devuelven como hora universal coordinada (UTC). datetime2(7) No determinista

Funciones de fecha y hora del sistema de precisin baja


Funcin Sintaxis Valor devuelto Tipo de datos devuelto datetime Determinismo

CURRENT_TIMESTAMP CURRENT_TIMESTAMP Devuelve un valor datetime2(7) que contiene la fecha y hora del equipo en el que la instancia de SQL Server se est ejecutando.El ajuste de zona horaria no est incluido.

No determinista

GETDATE

GETDATE ( )

Devuelve un valor datetime2(7) que contiene la fecha y hora del equipo en el que la instancia de SQL Server se est ejecutando.El ajuste de zona horaria no est incluido.

datetime

No determinista

GETUTCDATE

GETUTCDATE ( )

Devuelve un valor datetime2(7) que contiene la fecha y hora del equipo en el que la instancia de SQL Server se est ejecutando.La fecha y hora se devuelven como una hora universal coordinada (UTC).

datetime

No determinista

Funciones que obtienen partes de fecha y hora


Funcin Sintaxis Valor devuelto Tipo de datos Determinismo devuelto
nvarchar No

DATENAME DATENAME ( datepart , date )

Devuelve una cadena de caracteres que

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

44

representa el datepart especificado de la fecha especificada. DATEPART DATEPART ( datepart , date ) Devuelve un entero que representa el datepart especificado del date especificado. DAY DAY ( date ) Devuelve un entero que representa la parte del da de date especificado. MONTH MONTH ( date ) Devuelve un entero que representa la parte del mes de un date especificado. YEAR YEAR ( date ) Devuelve un entero que representa la parte del ao de un date especificado. int int int int

determinista

No determinista

Determinista

Determinista

Determinstico

Funciones que obtienen valores de fecha y hora de sus partes


Funcin Sintaxis Valor devuelto Tipo de datos devuelto date Determinismo

DATEFROMPARTS

DATEFROMPARTS ( year, month, day )

Devuelve un valor de tipo date para el ao, mes y da especificados.

Determinstico

DATETIME2FROMPARTS

DATETIME2FROMPARTS ( year, month, day, hour, minute, seconds, fractions, precision )

Devuelve un valor datetime2 para la fecha y la hora especificadas, y con la precisin indicada.

datetime2(precision)

Determinstico

DATETIMEFROMPARTS

DATETIMEFROMPARTS ( year, month, day, hour, minute, seconds, milliseconds )

Devuelve un valor datetime para la fecha y la hora especificadas.

datetime

Determinstico

DATETIMEOFFSETFROM PARTS

DATETIMEOFFSETFROMPARTS ( year, month, day, hour, minute, seconds, fractions, hour_offset, minute_offset, precision )

Devuelve un valor datetimeoffset para la fecha y la hora especificadas, y con los desplazamientos y la precisin indicados.

datetime(precision)

Determinstico

SMALLDATETIMEFROM PARTS

SMALLDATETIMEFROMPARTS ( year, month, day, hour, minute )

Devuelve un valor smalldatetime para la fecha y la

smalldatetime

Determinstico

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

45

hora especificadas. TIMEFROMPARTS TIMEFROMPARTS ( hour, minute, seconds, fractions, precision ) Devuelve un valor time para la hora especificada y con la precisin indicada. time(precision) Determinstico

Funciones que obtienen diferencias de fecha y hora Funcin Sintaxis Valor devuelto Tipo de datos devuelto
int

Determinismo

DATEDIFF DATEDIFF ( datepart , startdate , enddate )

Devuelve el nmero de lmites datepart de fecha y hora entre dos fechas especificadas.

Determinista

Funciones que modifican valores de fecha y hora


Funcin Sintaxis Valor devuelto Tipo de datos devuelto El tipo de datos del argumento date. Determinismo

DATEADD

DATEADD (datepart , number , date )

Devuelve un nuevo valor datetime agregando un intervalo al datepart especificado del date indicado.

Determinstico

EOMONTH

EOMONTH ( start_date [, month_to_add ] )

Devuelve el ltimo da del mes que contiene la fecha especificada, con un desplazamiento opcional.

El tipo de valor devuelto es start_date o datetime2(7).

Determinstico

SWITCHOFFSET

SWITCHOFFSET (DATETIMEOFFSET , time_zone)

SWITCH OFFSET cambia el ajuste de zona horaria de un valor DATETIMEOFFSET y conserva el valor UTC.

datetimeoffset con la precisin fraccionaria de DATETIMEOFFSET

Determinista

TODATETIMEOFFSET

TODATETIMEOFFSET (expression , time_zone)

TODATETIMEOFFSET transforma un valor datetime2 en un valor datetimeoffset.El valor datetime2 se interpreta en la hora local para el valor time_zone especificado.

datetimeoffset con la precisin fraccionaria del argumento datetime

Determinista

3.5.13 Funciones de conversion de unidades CAST y CONVERT (Transact-SQL) MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II 46

Convierte una expresin de un tipo de datos en otro en SQL Server 2012. Sintaxis CAST ( expression AS data_type [ ( length ) ] ) Sintaxis
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

Estilos de fecha y hora Cuando expression es un tipo de datos de fecha u hora, style puede ser uno de los valores que se muestran en la tabla siguiente.Otros valores se procesan como 0.SQL Server admite el formato de fecha en estilo rabe mediante el algoritmo kuwait.

Sin el siglo (aa) (1) 1 2 3 4 5 6 7 8 10 11 12 14 -

Con el siglo (aaaa) 0 100 (1,2) 101 102 103 104 105 106(1) 107(1) 108 9 109 (1,2) 110 111 112 13 113 (1,2) 114 20 120 (2)

Estndar Predeterminado EE. UU. ANSI Britnico/Francs Alemn Italiano Valor predeterminado + milisegundos EE. UU. JAPN ISO Europeo predeterminado + milisegundos ODBC cannico

Entrada/salida (3) mes dd aaaa hh:miAM (o PM) mm/dd/aaaa aa.mm.dd dd/mm/aaaa dd.mm.aa dd-mm-aa dd mes aa Mes dd, aa hh:mi:ss mes dd aaaa hh:mi:ss:mmma.m. (o p. m.) mm-dd-aa aa/mm/dd Aammdd aaaammdd dd mes aaaa hh:mi:ss:mmm(24h) hh:mi:ss:mmm(24h) aaaa-mm-dd hh:mi:ss(24h)

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

47

21 121 (2) 126 (4) 127(6, 7) 130 (1,2) 131 (2)

ODBC cannico (con milisegundos) ISO8601 ISO8601 con zona horaria Z. Hijri (5) Hijri (5)

aaaa-mm-dd hh:mi:ss.mmm(24h) aaaa-mm-ddThh:mi:ss.mmm (sin espacios) aaaa-mm-ddThh:mi:ss.mmmZ (sin espacios) dd mes aaaa hh:mi:ss:mmma.m. dd/mm/aa hh:mi:ss:mmma.m.

Estos valores de estilo devuelven resultados no deterministas.Incluye todos los estilos (aa) (sin el siglo) y un subconjunto de estilos (aaaa) (con el siglo). Los valores predeterminados (style0 o 100, 9 o 109, 13 o 113, 20 o 120 y 21 o 121) siempre devuelven el siglo (aaaa). Entrada cuando se convierte en datetime; salida cuando se convierte en datos de caracteres. Diseado para usarse con XML.Para convertir datos datetime o smalldatetime en datos de caracteres, el formato de salida es el descrito en la tabla anterior. Solo se admite en la conversin de datos de caracteres a datetime o smalldatetime.Cuando se convierten datos de caracteres que representan componentes de solo fecha o solo hora al tipo de datos datetime o smalldatetime, el componente de hora no especificado se establece en 00:00:00.000 y el componente de fecha no especificado se establece en 190001-01. El indicador opcional de zona horaria, Z, se usa para facilitar la asignacin de valores XML de tipo datetime que contienen informacin de zona horaria a valores de tipo datetime de SQL Server que no tienen zona horaria.Z es el indicador para la zona horaria UTC-0.Las otras zonas horarias se indican con un desplazamiento de HH:MM en sentido + o -.Por ejemplo: 2006-1212T23:45:12-08:00. Cuando se convierten datos de caracteres de tipo smalldatetime, los estilos que incluyen segundos o milisegundos muestran ceros en dichas posiciones.Puede truncar las partes de la fecha no deseadas cuando convierta valores datetime o smalldatetime si utiliza una longitud apropiada en el tipo de datos char o varchar. Cuando se convierte en datetimeoffset a partir de datos de caracteres con un estilo que incluye una hora, se anexa un ajuste de zona horaria al resultado. Estilos float y real Cuando expression es float o real, style puede ser uno de los valores que se muestran en la tabla siguiente.Otros valores se procesan como 0.

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

48

Valor 0 (valor predeterminado) 1 2 126, 128, 129

Resultado Un mximo de 6 dgitos.Utilcelo en notacin cientfica cuando proceda. Siempre 8 dgitos.Utilcelo siempre en notacin cientfica. Siempre 16 dgitos.Utilcelo siempre en notacin cientfica. Se incluye por razones heredadas y podra quedar desusado en una versin futura.

Estilos money y smallmoney Cuando expression es money o smallmoney,style, puede ser uno de los valores que se muestran en la tabla siguiente.Otros valores se procesan como 0.

Valor
0 (valor predeterminado) 1

Resultado
Sin separadores de millar cada tres dgitos a la izquierda del separador decimal y dos dgitos a la derecha del separador decimal; por ejemplo, 4235,98. Separadores de millar cada tres dgitos a la izquierda del separador decimal y dos dgitos a la derecha del separador decimal; por ejemplo, 3.510,92.

Sin separadores de millar cada tres dgitos a la izquierda del separador decimal y cuatro dgitos a la derecha del separador decimal; por ejemplo, 4235,9819.

126

Equivalente al estilo 2 al convertir a char(n) o varchar(n)

Estilos xml Cuando expression es xml, style, puede ser uno de los valores que se muestran en la tabla siguiente.Otros valores se procesan como 0.
Valor 0 (valor predeterminado) 1 Resultado Utiliza el comportamiento de anlisis predeterminado que descarta los espacios en blanco insignificantes y no permite un subconjunto DTD interno. Conserva los espacios en blanco insignificantes.Esta configuracin establece el control xml:space predeterminado de modo que se comporte igual que si se hubiera especificado xml:space="preserve".

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

49

Habilita el procesamiento limitado de subconjuntos DTD internos. Si est habilitado, el servidor puede utilizar la siguiente informacin proporcionada en un subconjunto DTD interno para realizar operaciones de anlisis que no se validan.

Se aplican los valores predeterminados de los atributos. Las referencias a entidades internas se resuelven y se amplan. Se comprobar la correccin sintctica del modelo de contenido DTD.

El analizador pasar por alto los subconjuntos DTD externos.Tampoco evala la declaracin XML para ver si el atributo standalone est establecido en yes o no, pero analiza la instancia XML como si se tratase de un documento independiente. 3 Conserva los espacios en blanco insignificantes y habilita el procesamiento limitado de los subconjuntos DTD internos.

Estilos binarios Cuando expression es binary(n), varbinary(n), char(n) o varchar(n), style puede ser uno de los valores que se muestran en la tabla siguiente.Los valores de estilos que no se enumeran en la tabla devuelven un error.

Valor 0

Salida Traduce caracteres ASCII a bytes binarios o bytes binarios a caracteres ASCII.Cada Si data_type es un tipo binario, los caracteres 0x se agregan a la izquierda del resultado.

(predeterminado) carcter o byte se convierte con una proporcin 1:1.

1, 2

Si data_type es un tipo binario, la expresin debe ser de caracteres.expression se debe componer de un nmero par de dgitos hexadecimales (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, a, b, c, d, e, f).Si style se establece en 1, los caracteres 0x deben ser los dos primeros caracteres de la expresin.Si la expresin contiene un nmero impar de caracteres o si alguno de los caracteres no es vlido, se produce un error. Si la longitud de la expresin convertida es mayor que la longitud de data_type, el resultado se truncar a la derecha. Los data_types de longitud fija que sean mayores que el resultado convertido tendrn ceros agregados a la derecha del resultado. Si data_type es un tipo de caracteres, la expresin debe ser binaria.Cada carcter binario se convierte en dos caracteres hexadecimales.Si la longitud de la expresin convertida es mayor que la longitud de data_type, se truncar a la derecha.

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

50

Si data_type es un tipo de caracteres de tamao fijo y la longitud del resultado convertido es menor que la longitud de data_type, los espacios se agregan a la derecha de la expresin convertida para mantener un nmero par de dgitos hexadecimales. Los caracteres 0x se agregarn a la izquierda del resultado convertido para style 1.

Conversiones implcitas Las conversiones implcitas son aquellas conversiones que tienen lugar sin especificar las funciones CAST o CONVERT.Las conversiones explcitas son aquellas conversiones que requieren la especificacin de las funciones CAST o CONVERT.En la siguiente ilustracin se muestran todas las conversiones de tipos de datos explcitas e implcitas permitidas para los tipos de datos proporcionados por el sistema de SQL Server.Incluyen xml, bigint y sql_variant.No existe una conversin implcita en la asignacin del tipo de datos sql_variant, pero s hay una conversin implcita en sql_variant. Al convertir entre datetimeoffset y los tipos de caracteres char, varchar, nchar y nvarchar la parte del ajuste de zona horaria convertida siempre debe tener dgitos dobles para HH y MM, por ejemplo -08:00. Tipos de datos de valor grande Los tipos de datos de valor grande tienen el mismo comportamiento de conversin implcito y explcito que sus equivalentes ms pequeos, especialmente los tipos de datos varchar, nvarchar y varbinary.No obstante, se deben tener en cuenta las siguientes directrices: La conversin de datos image en varbinary(max) y viceversa es una conversin implcita, al igual que las conversiones entre text y varchar(max) y entre ntext y nvarchar(max). La conversin de tipos de datos de valor grande, como varchar(max), en un tipo de datos equivalente ms pequeo, como varchar, es una conversin implcita, aunque se producir truncamiento si el valor grande es demasiado grande para la longitud especificada del tipo de datos ms pequeo. La conversin de varchar, nvarchar o varbinary en sus tipos de datos correspondientes de valor grande se realiza de forma implcita. La conversin del tipo de datos sql_variant en los tipos de datos de valor grande es una conversin explcita. Los tipos de datos de valor grande no se pueden convertir en el tipo de datos sql_variant. xml Data Type Cuando se convierte de forma explcita o implcita el tipo de datos xml en un tipo de datos de cadena o binario, el contenido del tipo de datos xml se serializa en funcin de un conjunto de reglas.Para obtener informacin sobre estas reglas, vea Definir la serializacin de datos XML.Para obtener informacin sobre la conversin de otros tipos de datos al tipo de datos xml, vea Crear instancias de datos XML. MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II 51

Tipos de datos text e image No se admite la conversin automtica de los tipos de datos text e image.Puede convertir explcitamente datos text en datos de caracteres y datos image en binary o varbinary, pero la longitud mxima es de 8000 bytes.Si intenta una conversin incorrecta, como la de una expresin de caracteres que incluye letras en un tipo int, SQL Server devuelve un mensaje de error. Intercalacin de salida Cuando la salida de CAST o CONVERT es una cadena de caracteres y la entrada es otra, la salida tiene la misma intercalacin y etiqueta de intercalacin que la entrada.Si la entrada no es una cadena de caracteres, la salida tiene la intercalacin predeterminada de la base de datos y una etiqueta de intercalacin coaccionable-predeterminada.Para obtener ms informacin. Para asignar otra intercalacin a la salida, aplique la clusula COLLATE a la expresin de resultado de las funciones CAST o CONVERT.Por ejemplo: SELECT CAST('abc' AS varchar(5)) COLLATE French_CS_AS Truncar y redondear resultados Al convertir expresiones de caracteres o binarias (char, nchar, nvarchar, varchar, binary o varbinary) en una expresin de un tipo de datos diferente, los datos se pueden truncar, se pueden presentar parcialmente o se puede devolver un error porque el resultado es demasiado corto para ser mostrado.Las conversiones en char, varchar, nchar, nvarchar, binary y varbinary se truncan, excepto aquellas que se muestran en la siguiente tabla.
De tipo de datos int, smallint o tinyint En tipo de datos char varchar nchar nvarchar money, smallmoney, numeric, decimal, float o real char varchar nchar nvarchar Resultado * * E E E E E E

* = Resultado demasiado corto para ser mostrado.E = Error devuelto porque el resultado es demasiado corto para ser mostrado.

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

52

SQL Server garantiza que solo las conversiones circulares, las conversiones que convierten un tipo de datos en otro y despus vuelven a convertirlo en el tipo de datos original, devolvern los mismos valores en versiones diferentes.En el siguiente ejemplo se muestra una conversin circular: DECLARE @myval decimal (5, 2); SET @myval = 193.57; SELECT CAST(CAST(@myval AS varbinary(20)) AS decimal(10,5)); -- Or, using CONVERT SELECT CONVERT(decimal(10,5), CONVERT(varbinary(20), @myval)); En el siguiente ejemplo se muestra una expresin resultante demasiado corta para ser mostrada. USE AdventureWorks2012; GO SELECT p.FirstName, p.LastName, SUBSTRING(p.Title, 1, 25) AS Title, CAST (e.SickLeaveHours AS char(1)) AS [Sick Leave] FROM HumanResources.Employee e JOIN Person.Person p ON e.BusinessEn tityID = p.BusinessEntityID WHERE NOT e.BusinessEntityID >5; Al convertir tipos de datos que difieren en los decimales, algunas veces el valor resultante se trunca y otras se redondea.En la siguiente tabla se muestra el comportamiento.
De numeric numeric numeric money money float float En numeric int money int numeric int numeric Comportamiento Redondeo Truncar Redondear Redondear Redondeo Truncamiento Redondeo La conversin de los valores float que utilizan la notacin cientfica a decimal o numeric se restringe nicamente a los valores con una precisin de 17 dgitos.Cualquier valor con una precisin mayor de 17 se redondea a cero. float datetime Redondeo Redondeo

datetime int

Por ejemplo, el resultado de la siguiente conversin es 10: MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II 53

SELECT CAST(10.6496 AS int); Al convertir tipos de datos cuando el tipo de datos de destino tiene menos decimales que el tipo de datos de origen, el valor se redondea.Por ejemplo, el resultado de la siguiente conversin es $10.3497: SELECT CAST(10.3496847 AS money); SQL Server devuelve un mensaje de error cuando se convierten datos char, nchar, varchar o nvarchar no numricos en los tipos de datos int, float, numeric o decimal.SQL Server tambin devuelve un error cuando se convierte una cadena vaca (" ") en los tipos de datos numeric o decimal. Determinadas conversiones de fecha y hora son no deterministas en SQL Server 2005 y versiones posteriores -- Use CAST USE AdventureWorks2012; GO SELECT SUBSTRING(Name, 1, 30) AS ProductName, ListPrice FROM Production.Product WHERE CAST(ListPrice AS int) LIKE '3%'; GO -- Use CONVERT. USE AdventureWorks2012; GO SELECT SUBSTRING(Name, 1, 30) AS ProductName, ListPrice FROM Production.Product WHERE CONVERT(int, ListPrice) LIKE '3%'; GO USE AdventureWorks2012; GO SELECT CAST(ROUND(SalesYTD/CommissionPCT, 0) AS int) AS Computed FROM Sales.SalesPerson WHERE CommissionPCT != 0; GO En el siguiente ejemplo se concatenan expresiones no binarias que no son de caracteres mediante CAST. USE AdventureWorks2012; GO SELECT 'The list price is ' + CAST(ListPrice AS varchar(12)) AS ListPrice FROM Production.Product WHERE ListPrice BETWEEN 350.00 AND 400.00; GO En el siguiente ejemplo se utiliza CAST en la lista de seleccin para convertir la columna Name en una columna de tipo char(10). MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II 54

USE AdventureWorks2012; GO SELECT DISTINCT CAST(p.Name AS char(10)) AS Name, s.UnitPrice FROM Sales.SalesOrderDetail AS s JOIN Production.Product AS p ON s.ProductID = p.ProductID WHERE Name LIKE 'Long-Sleeve Logo Jersey, M'; GO En el siguiente ejemplo se convierte la columna SalesYTD de tipo money en una de tipo int y, a continuacin, en una de tipo char(20) para que se pueda utilizar con la clusula LIKE. USE AdventureWorks2012; GO SELECT p.FirstName, p.LastName, s.SalesYTD, s.BusinessEntityID FROM Person.Person AS p JOIN Sales.SalesPerson AS s ON p.BusinessEntityID = s.BusinessEntityID WHERE CAST(CAST(s.SalesYTD AS int) AS char(20)) LIKE '2%'; GO En el ejemplo siguiente se muestra la fecha y la hora actuales, se utiliza CAST para cambiarlas a un tipo de datos de carcter y, a continuacin, se utiliza CONVERT para mostrar la fecha y la hora en el formato ISO 8901. SELECT GETDATE() AS UnconvertedDateTime, CAST(GETDATE() AS nvarchar(30)) AS UsingCast, CONVERT(nvarchar(30), GETDATE(), 126) AS UsingConvertTo_ISO8601 ; GO El siguiente ejemplo es lo opuesto, aproximadamente, del ejemplo anterior.En el ejemplo se muestra la fecha y la hora como datos de carcter, se utiliza CAST para cambiar los datos de carcter al tipo de datos datetime y, a continuacin, se utiliza CONVERT para cambiar los datos de carcter al tipo de datos datetime. SELECT '2006-04-25T15:50:59.997' AS UnconvertedText, CAST('2006-04-25T15:50:59.997' AS datetime) AS UsingCast, CONVERT(datetime, '2006-04-25T15:50:59.997', 126) AS UsingConvertFrom _ISO8601 ; GO Ejercicios 1.- Utilizando Sql crearse una base de datos llamad producto, dentro de esa base crearse 3 tablas y relacionarlas como se muestra en la figura utilizando Transact SQL MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II 55

m Proveedores Vende

n Productos m Son vendidos

n Clientes

2.- Utilizando sentencias SQL ingresar tres datos en cada una de las tablas. 3.- Mostrar todos los datos de la tabla proveedores 4.- Mostrar todos los datos de la tabla productos cuyo precio sea mayor a 300. 5.- Mostrar todos los productos de nombre arroz, trigo, avena. 6.- Mostrar los productos agrupados por nombre cuyo promedio del precio sea mayor a 24. 7.- Unir la tabla proveedores y clientes. 8.- Mostrar la tabla proveedores y clientes cuyos nombres sean iguales. 9.- Insertar un campo en la tabla proveedores. 10.- Borrar una fila de la tabla clientes. 11.- Actualizar una fila de la tabla clientes. 12.- Borrar la tabla proveedores.

CAPTULO IV

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

56

Trabajar con los diferentes tipos de ndices, conociendo las ventajas y desventajas de su uso en funcin del objetivo buscado

4.1 ndices El ndice de una base de datos es una estructura de datos que mejora la velocidad de las operaciones, permitiendo un rpido acceso a los registros de una tabla en una base de datos. Al aumentar drsticamente la velocidad de acceso, se suelen usar sobre aquellos campos sobre los cuales se hacen frecuentes bsquedas.

4.2 Mantenimiento de ndices. Una vez creados los ndices, debe mantenerlos para asegurar que su rendimiento sea ptimo. Con el tiempo, los datos se fragmentan. La fragmentacin de los datos debe administrarse en funcin del entorno de la organizacin. SQL Server proporciona el Asistente para optimizacin de ndices, que hace un seguimiento automtico del uso de los ndices, y ayuda a mantener y crear ndices con un rendimiento ptimo. Tambin puede utilizar diversas opciones y herramientas como ayuda para volver a generar los ndices y comprobar su optimizacin. Cmo se produce la fragmentacin La fragmentacin se produce al modificar los datos. Por ejemplo, cuando se agregan o se eliminan filas de una tabla, o cuando cambian los valores de las columnas indizadas, SQL Server ajusta las pginas de ndice para adaptarlas a los cambios y mantener el almacenamiento de los datos indizados. Este ajuste de las pginas de ndice se conoce como divisin de pginas. El proceso de divisin aumenta el tamao de la tabla y el tiempo necesario para procesar las consultas.
Mtodos para administrar la fragmentacin En SQL Server hay dos mtodos para administrar la fragmentacin. El primero consiste en quitar y volver a crear un ndice agrupado, y especificar un valor con la opcin FILLFACTOR. El segundo consiste en volver a generar un ndice y especificar un valor de FILLFACTOR.

Los valores de FILLFACTOR estn comprendidos entre el 1 y el 100 por cien.

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

57

El valor de FILLFACTOR predeterminado es 0. Este valor llena las pginas de ndice del nivel de hoja al 100 por cien y deja sitio para el tamao mximo de una entrada de ndice en las pginas de ndice no situadas en el nivel de hoja. No puede especificar explcitamente un valor de FILLFACTOR = 0. El valor de FILLFACTOR predeterminado puede modificarse en el servidor mediante el procedimiento almacenado de sistema sp_configure. La tabla del sistema sysindexes almacena el valor de FILLFACTOR aplicado por ltima vez y otra informacin del ndice. El valor de FILLFACTOR se especifica en porcentajes. El porcentaje determina cunto deben llenarse las pginas del nivel de hoja. Por ejemplo, un valor de FILLFACTOR de 65 llena un 65 por ciento de cada pgina del nivel de hoja y deja libre un 35 por ciento del espacio de pgina para nuevas filas. El tamao de la fila influye en el nmero de filas que caben en la pgina para el porcentaje de FILLFACTOR especificado. Utilice la opcin FILLFACTOR en las tablas en las que se insertan muchas filas o cuando los valores de clave de un ndice agrupado se modifican con frecuencia.

4.3 ndices agrupados y no agrupados. ndices agrupados Un INDICE AGRUPADO es similar a una gua telefnica, los registros con el mismo valor de campo se agrupan juntos. Un ndice agrupado determina la secuencia de almacenamiento de los registros en una tabla. Se utilizan para campos por los que se realizan busquedas con frecuencia o se accede siguiendo un orden. Una tabla slo puede tener UN ndice agrupado. El tamao medio de un ndice agrupado es aproximadamente el 5% del tamao de la tabla. Para crear un ndice agrupado utilizar la siguiente sintaxis. Create clustered index [nombre] on [tabla] ([campos]) ndices no agrupados Un INDICE NO AGRUPADO es como el ndice de un libro, los datos se almacenan en un lugar diferente al del ndice, los punteros indican el lugar de almacenamiento de los elementos indizados en la tabla. Un ndice no agrupado se emplea cuando se realizan distintos tipos de busquedas frecuentemente, con campos en los que los datos son nicos. Una tabla puede tener hasta 249 ndices no agrupados. Si no se especifica un tipo de ndice, de modo predeterminado ser no agrupado. Los campos de tipo text, ntext e image no se pueden indizar. MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II 58

Para crear un ndice no agrupado basta con omitir la palabra reservada clustered. 4.4 Creacin de ndices. La sintaxis para crear un ndice es la siguiente.
CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name ON <object> ( column_name [ ASC | DESC ] [ ,...n ] ) [ WITH <backward_compatible_index_option> [ ,...n ] ] [ ON { filegroup_name | "default" } ]

Ejemplo
CREATE INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor (BusinessEntityID);

4.5 Vistas Una vista es una alternativa para mostrar datos de varias tablas. Una vista es como una tabla virtual que almacena una consulta. Los datos accesibles a travs de la vista no estn almacenados en la base de datos como un objeto. Entonces, una vista almacena una consulta como un objeto para utilizarse posteriormente. Las tablas consultadas en una vista se llaman tablas base. En general, se puede dar un nombre a cualquier consulta y almacenarla como una vista. 4.6 Creacin de vistas

Para crear una vista se utiliza la siguiente sintaxis create view [nombre] as . Ejemplo Create view provclie As select cliente.nombre, proveedor.nombre from proveedor, cliente; Ejercicios

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

59

Utilizando sentencias sql crear diagrama de la figura.

la base de datos correspondiente al

Crear un ndice agrupado para cada tabla Crear un ndice no agrupado para cada tabla. Crer una vista que incluya el nombre, la direccin y el telfono del profesor. Crear una vista que contenga los datos de la tabla departamento y curso

CAPTULO V Realizar tareas de administracin de bases de datos mediante el uso de triggers.


5.1Triggers Un trigger (o disparador) en una Base de datos , es un procedimiento que se ejecuta cuando se cumple una condicin establecida al realizar una operacin. Dependiendo de la base de datos, los triggers pueden ser de insercin (INSERT), actualizacin (UPDATE) o borrado (DELETE) 5.2 Creacin de triggers La sintaxis para crear un trigger es la siguiente. MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II 60

CREATE TRIGGER [ schema_name . ]trigger_name ON { table | view } [ WITH <dml_trigger_option> [ ,...n ] ] { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] } [ NOT FOR REPLICATION ] AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME <method specifier [ ; ] > }

Ejemplo CREATE TRIGGER dbo.MovimientosDelete ON dbo.Movimientos FOR DELETE AS BEGIN No retorna el mensaje de cantidad de registros afectados SET NOCOUNT ON UPDATE dbo.Articulos SET STOCK = STOCK T.PARCIAL FROM dbo.Articulos A INNER JOIN ( SELECT ARTICULO_ID, SUM(CASE WHEN TIPO=I THEN CANTIDAD ELSE -CANTIDAD END) AS PARCIAL FROM DELETED GROUP BY ARTICULO_ID )T ON A.ID = T.ARTICULO_ID END 5.3 Procedimientos almacenados. Un procedimiento almacenado (stored procedure en ingls) es un programa (o procedimiento) el cual es almacenado fsicamente en una base de datos. Su implementacin vara de un gestor de bases de datos a otro. La ventaja de un procedimiento almacenado es que al ser ejecutado, en respuesta a una peticin de usuario, es ejecutado directamente en el motor de bases de datos, el cual usualmente corre en un servidor separado. Como tal, posee acceso directo a los datos que necesita manipular y slo necesita enviar sus resultados de regreso al usuario, deshacindose de la sobrecarga resultante de comunicar grandes cantidades de datos salientes y entrantes. 5.4 Trabajar con procedimientos almacenados USE AdventureWorks2012; GO CREATE PROCEDURE HumanResources.uspGetEmployeesTest2 @LastName nvarchar(50), @FirstName nvarchar(50) AS SET NOCOUNT ON; SELECT FirstName, LastName, Department FROM HumanResources.vEmployeeDepartmentHistory WHERE FirstName = @FirstName AND LastName = @LastName MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II 61

AND EndDate IS NULL; GO Crear una tabla con los campos nmero, cuadrado y cubo, el momento que inserto un nmero automticamente debe calcular el cuadrado y el cubo. Crear una tabla alumno y respaldo, el momento que se borre una fila de la tabla alumno automticamente debe pasarse a la tabla respaldo. BIBLIOGRAFA GABILLAUD Jrome, 2009 SQL Server 2008, SQL, Transact SQL, Ediciones ENI, Pags 109,189,225,229,239 Este libro sobre SQL Server est dirigido tanto a estudiantes de informtica que deseen aprender el lenguaje SQL con SQL Server como a informticos que deseen actualizar sus competencias en SQL Server 2008 para comprender y controlar las funciones que complementan a esta nueva versin. HOTEK Mike, 2009, SQL Server 2008/ Microsoft SQL Server 2008, Grupo Anayala Comercial, Pags 12-20;56-89;145-204. Este libro es una gua paso a paso para crear aplicaciones con SQL Server 2008. Trata en profundidad sus temas esenciales, con ejemplos de cdigo que fomentan el dominio ntegro de las tcnicas Microsoft. Consiga la orientacin prctica que necesita para crear soluciones de bases de datos que solucionen problemas reales en el mundo profesional CHARTE Francisco, 2009, SQL Server 2008, Anaya Multimedia, Pags 57,125,213-256. Esta gua est dirigida a los usuarios que comienzan a trabajar con SQL Server 2008. Con ella podr desde instalar SQL Server 2008 hasta publicar sus bases de datos para hacerlas accesibles a travs de Internet, pasando por el diseo de informes o creacin de procedimientos almacenados. Los primeros captulos se centran en las tareas de administracin del servidor y la creacin de bases de datos, tablas, vistas e ndices COLES Michael, 2008, Pro t-Sql 2008 ,Springer Verlag New York Pags 3-40; 80-132. Este libro tiene tcnicas avanzadas abarcando todo lo que debe saber un administrador de base de datos SQL SERVER PEREZ Csar 2009 Domine Microsoft SQL Server 2008 Ra- Ma, Pags 10-56, 60-90. En este libro se presenta un anlisis profundo de la base de datos Microsoft SQL Server 2008 en su versin Enterprise Edition. Se comienza tratando la instalacin del programa, la introduccin del trabajo en los distintos entornos de la base de datos y el desarrollo amplio del modelo entidad-relacin a travs de Transact SQL, que se trata detalladamente.

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

62

ANEXOS Videos Tutoriales Textos complementarios. Pginas de internet

MDULO DE CONTENIDOS DE GESTOR DE BASE DE DATOS II

63

Anda mungkin juga menyukai