Está en la página 1de 8

UNIVERSIDAD DON BOSCO

Facultad: Ingeniera
Escuela: Computacin

CATEDRA
BASE DE DATOS I

DOCENTE
ING. LUIS ANAYA

REPORTE
INVESTIGACION COMPLEMENTARIA GUIA 10

INTEGRANTES
HERNNDEZ DOO NORBERTO ANTONIO

HD101249

MENDEZ ECHEVERRIA JORGE JOSE

ME121261

GL 02L

CIUDADELA DON BOSCO 26 DE ABRIL 2013

Anlisis 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


almacn.
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 transaccin 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 jabn 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 transaccin que dado un cdigo de producto, cantidad, cdigo 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
Cdigo='prod01'
Fecha='2010-02-02'
Pedido=1
La existencia actual del prod01 es 100, cuando se realice esa insercin, se deber
actualizar a 80, al final de la transaccin 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

Investigacin Complementaria
BULK INSERT
En ms de una ocasin 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
operacin.
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 intencin de copiar la informacin desde el archivo CSV hacia la tabla en cuestin.
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 operacin 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 algn error de conversin de datos durante la
importacin 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, violacin de la constraint UNIQUE, la importacin
fallar, cabe mencionar que para el caso particular de las constraints CHECK y FOREIGN KEY, las

mismas sern por defecto omitidas, al menos que se utilice el parmetro CHECK_CONSTRAINTS en
la sentencia BULK INSERT para especificar lo contrario.
El comando BULK INSERT posee adems de los pocos parmetros 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 dispararn los triggers de las tablas
durante la importacin de datos, KEEPIDENTITY que permite especificar de qu manera se
manejarn la columnas identity durante la importacin y KEEPNULLS que indica si las columnas
vacas debern conservar el valor NULL.

También podría gustarte