UNIVERSIDAD DON BOSCO

UNIVERSIDAD DON BOSCO Facultad: Ingeniería Escuela: Computación CATEDRA BASE DE DATOS I DOCENTE ING. LUIS ANAYA REPORTE INVESTIGACION COMPLEMENTARI...
41 downloads 2 Views 859KB Size
UNIVERSIDAD DON BOSCO Facultad: Ingeniería Escuela: Computación

CATEDRA BASE DE DATOS I

DOCENTE ING. LUIS ANAYA

REPORTE INVESTIGACION COMPLEMENTARIA GUIA 10

INTEGRANTES HERNÁNDEZ DOÑO NORBERTO ANTONIO

HD101249

MENDEZ ECHEVERRIA JORGE JOSE

ME121261

GL 02L

CIUDADELA DON BOSCO 26 DE ABRIL 2013

Análisis de Resultados

Cree una base de datos de nombre ALMACEN con las siguientes tablas

CREATEDATABASE ALMACEN GO USE ALMACEN CREATETABLE PRODUCTOS ( codproducto CHAR(6), nombreproducto VARCHAR(25), existencia INT, precio FLOAT ) CREATETABLE PEDIDOS ( codproducto char(6) codpedido int, cantidad int, fechapedido datetime, )

Inserte los siguientes datos a la tabla productos

INSERTINTO INSERTINTO INSERTINTO INSERTINTO INSERTINTO INSERTINTO INSERTINTO INSERTINTO

PRODUCTOS PRODUCTOS PRODUCTOS PRODUCTOS PRODUCTOS PRODUCTOS PRODUCTOS PRODUCTOS

VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES

('prod01','Jabon',100,4.5) ('prod02','Lejia',200,2.5) ('prod03','Paste',400,6.5) ('prod04','Shampoo',211,9) ('prod05','Jabon de traste',50,3.5) ('prod06','Pasta de zapato',400,2.4) ('prod07','Pelota',50,3.5) ('prod08','Tomates',100,0.25)

1. Cree un disparador que se active al momento de eliminar o modificar la base de datos almacén. CREATE TRIGGER SEGURIDAD ON DATABASE FOR DROP_TABLE, ALTER_TABLE AS BEGIN RAISERROR ('No se permite borrar, ni modificar tablas !', 16, 1) ROLLBACK TRANSACTION END DROP TABLE PRODUCTOS

2. Cree una transacción parecida al ejemplo 3 para insertar productos declare @cod_pro char(6), @nombre_pro varchar (25), @exist int, @precio float set @cod_pro='prod09' set @nombre_pro='amd FX8350'

set @exist=5 set @precio=269 begin tran INSERT INTO PRODUCTOS values(@cod_pro,@nombre_pro,@exist,@precio) COMMIT TRAN PRINT'LOS VALORES FUERON INSERTADOS CON EXITO'

3. Modifique el precio de 4.5 a 10 del jabón de la tabla productos, realice la sentencia que muestre la fila modificada UPDATE PRODUCTOS SET precio=10 OUTPUT INSERTED.*WHERE codproducto='prod01'

4. Cree una transacción que dado un código de producto, cantidad, código de pedido y fecha de pedido, ingrese esos campos en la tabla pedido y luego busque ese producto en la tabla productos donde disminuya la existencia del producto. a. Ejemplo Cantidad=20 Código='prod01' Fecha='2010-02-02' Pedido=1 La existencia actual del prod01 es 100, cuando se realice esa inserción, se deberá actualizar a 80, al final de la transacción imprimir un mensaje que indique el total del pedido, multiplicando el precio del producto por la cantidad del pedido.

declare @codpro char(6), @canti int, @codped int,@fechaped datetime,@prec float,@total float set @codpro='prod08' set @canti=15 set @codped=6 set @fechaped='2013-05-06' set @total=(select precio from productos where codproducto =@codpro)*@canti begin tran INSERT INTO PEDIDOS values(@codped, @canti,@fechaped,@codpro) COMMIT TRAN

print'EL PRECIO TOTAL DE COMPRA ES: '+cast(@total

AS VARCHAR)

UPDATE PRODUCTOS SET EXISTENCIA =(EXISTENCIA - @canti)output inserted.*where codproducto = @codpro

Investigación Complementaria BULK INSERT En más de una ocasión nos fue necesario importar datos en formato CSV a una tabla en nuestro servidor de base de datos SQL Server, el comando BULK INSERT, el cual permite llevar a cabo esta operación. Antes que nada supongamos que poseemos la siguiente tabla:

El siguiente archivo CSV: 1,Cabecera1,20001211,20001211 22:10:30,41422.66, 22.22 2,Cabecera2,20001212,20001212 22:10:32,1234567.123456, 22.4444

Y la clara intención de copiar la información desde el archivo CSV hacia la tabla en cuestión. Deberemos entonces utilizar el siguiente comando: BULK INSERT Cabecera FROM 'C:\....\archivo.csv' WITH ( FIELDTERMINATOR= ',', ROWTERMINATOR = '\n' );

Donde hemos especificado origen (el path al archivo CSV) destino (la tabla Cabecera) y los separadores de filas y columnas en los argumentos ROWTERMINATOR y FIELDTERMINATOR. El resultado de la operación generará el siguiente resultado:

Dond e puede verse que los datos han sido agregados aunque algunos de ellos (IngresoAnual y Numero) han quedado truncados en la tabla Cabecera al no poder ser representados en forma completa en los tipos de datos destino. Si se produce algún error de conversión de datos durante la importación la fila será omitida, el mismo comportamiento utilizará el comando si se viola la constraint NOT NULL. En otros tipos de errores, como por ejemplo, violación de la constraint UNIQUE, la importación fallará, cabe mencionar que para el caso particular de las constraints CHECK y FOREIGN KEY, las

mismas serán por defecto omitidas, al menos que se utilice el parámetro CHECK_CONSTRAINTS en la sentencia BULK INSERT para especificar lo contrario. El comando BULK INSERT posee además de los pocos parámetros que hemos visto una diversa cantidad de los mismos, como por ejemplo FIRSTROW y LASTROW que permite especificar la fila inicial y final de copia, FIRE_TRIGGERS que permite indicar si se dispararán los triggers de las tablas durante la importación de datos, KEEPIDENTITY que permite especificar de qué manera se manejarán la columnas identity durante la importación y KEEPNULLS que indica si las columnas vacías deberán conservar el valor NULL.