Você está na página 1de 8

ESCUELA POLITCNICA NACIONAL

DEPARTAMENTO DE INFORMTICA Y CIENCIAS DE COMPUTACIN


FACULTAD DE INGENIERA EN SISTEMAS INFORMTICOS Y DE COMPUTACIN

ASIGNATURA: INTEGRANTES:

Bases de Datos Bolaos Marco Morales Jorge Onofa Franklin Rivera Carlos Vsquez Ana

FECHA

Mircoles 16 de Mayo de 2012

BD Pedidos y Ejercicios
/* BASES DE DATOS Ing. Rosa Navarrete SCRIPT DE CREACIN DE LA BASE DE DATOS PEDIDOS. DEBE ESCRIBIR LAS SENTENCIAS NECESARIAS PARA CREAR ESTA MISMA BD EN LOS DISTINTOS DBMS */ USE [master] GO /****** Objeto: Database [PEDIDOS] drop database pedidos go CREATE DATABASE [PEDIDOS] go USE PEDIDOS GO CREATE TABLE [dbo].[EMPLEADOS]( [EMPLEADOID] [int] NOT NULL, [NOMBRE] [char](30) NULL, [APELLIDO] [char](30) NULL, [FECHA_NAC] [datetime] NULL, [REPORTA_A] [int] NULL, [EXTENSION] [int] NULL, CONSTRAINT [PK_EMPLEADOS] PRIMARY KEY NONCLUSTERED (EMPLEADOID))

*/

CREATE TABLE [dbo].[PROVEEDORES]( [PROVEEDORID] [int] NOT NULL, [NOMBREPROV] [char](50) NOT NULL, [CONTACTO] [char](50) NOT NULL, [CELUPROV] [char](12) NULL, [FIJOPROV] [char](12) NULL, CONSTRAINT [PK_PROVEEDORES] PRIMARY KEY NONCLUSTERED ([PROVEEDORID] ) ) GO CREATE TABLE [dbo].[CATEGORIAS]( [CATEGORIAID] [int] NOT NULL, [NOMBRECAT] [char](50) NOT NULL, CONSTRAINT [PK_CATEGORIAS] PRIMARY KEY NONCLUSTERED ([CATEGORIAID]) ) GO CREATE TABLE [dbo].[CLIENTES]( [CLIENTEID] [int] NOT NULL, [CEDULA_RUC] [char](10) NOT NULL, [NOMBRECIA] [char](30) NOT NULL, [NOMBRECONTACTO] [char](50) NOT NULL, [DIRECCIONCLI] [char](50) NOT NULL, [FAX] [char](12) NULL, [EMAIL] [char](50) NULL, [CELULAR] [char](12) NULL, [FIJO] [char](12) NULL, CONSTRAINT [PK_CLIENTES] PRIMARY KEY NONCLUSTERED ([CLIENTEID]) ) GO CREATE TABLE [dbo].[ORDENES]( [ORDENID] [int] NOT NULL, [EMPLEADOID] [int] NOT NULL, [CLIENTEID] [int] NOT NULL, [FECHAORDEN] [datetime] NOT NULL, [DESCUENTO] [int] NULL, CONSTRAINT [PK_ORDENES] PRIMARY KEY NONCLUSTERED ([ORDENID]) ) GO CREATE TABLE [dbo].[DETALLE_ORDENES]( [ORDENID] [int] NOT NULL, [DETALLEID] [int] NOT NULL, [PRODUCTOID] [int] NOT NULL, [CANTIDAD] [int] NOT NULL, CONSTRAINT [PK_DETALLE_ORDENES] PRIMARY KEY NONCLUSTERED ([ORDENID],[DETALLEID] ) ) GO CREATE TABLE [dbo].[PRODUCTOS]( [PRODUCTOID] [int] NOT NULL, [PROVEEDORID] [int] NOT NULL,

[CATEGORIAID] [int] NOT NULL, [DESCRIPCION] [char](50) NULL, [PRECIOUNIT] [money] NOT NULL, [EXISTENCIA] [int] NOT NULL, CONSTRAINT [PK_PRODUCTOS] PRIMARY KEY NONCLUSTERED ([PRODUCTOID] )) GO ALTER TABLE [dbo].[ORDENES] WITH CHECK ADD CONSTRAINT [FK_ORDENES_CLIEN_ORD_CLIENTES] FOREIGN KEY([CLIENTEID]) REFERENCES [dbo].[CLIENTES] ([CLIENTEID]) GO ALTER TABLE [dbo].[ORDENES] WITH CHECK ADD CONSTRAINT [FK_ORDENES_EMPLE_ORD_EMPLEADO] FOREIGN KEY([EMPLEADOID]) REFERENCES [dbo].[EMPLEADOS] ([EMPLEADOID]) GO ALTER TABLE [dbo].[DETALLE_ORDENES] WITH CHECK ADD CONSTRAINT [FK_DETALLE__ORDEN_DET_ORDENES] FOREIGN KEY([ORDENID]) REFERENCES [dbo].[ORDENES] ([ORDENID]) GO ALTER TABLE `pedidos`.`detalle_ordenes` ADD CONSTRAINT `FK_detalle_ordenes_det_ordenes` FOREIGN KEY `FK_detalle_ordenes_det_ordenes` (`ORDENID`) REFERENCES `ordenes` (`ORDENID`) ON DELETE RESTRICT ON UPDATE RESTRICT; ALTER TABLE [dbo].[DETALLE_ORDENES] WITH CHECK ADD CONSTRAINT [FK_DETALLE__PROD_DETA_PRODUCTO] FOREIGN KEY([PRODUCTOID]) REFERENCES [dbo].[PRODUCTOS] ([PRODUCTOID]) GO ALTER TABLE [dbo].[PRODUCTOS] WITH CHECK ADD CONSTRAINT [FK_PRODUCTO_CATE_PROD_CATEGORI] FOREIGN KEY([CATEGORIAID]) REFERENCES [dbo].[CATEGORIAS] ([CATEGORIAID]) GO ALTER TABLE [dbo].[PRODUCTOS] WITH CHECK ADD CONSTRAINT [FK_PRODUCTO_PROV_PROD_PROVEEDO] FOREIGN KEY([PROVEEDORID]) REFERENCES [dbo].[PROVEEDORES] ([PROVEEDORID]) ALTER TABLE [dbo].[EMPLEADOS] WITH CHECK ADD CONSTRAINT [FK_EMPLEADO_REPORTA] FOREIGN KEY([REPORTA_A]) REFERENCES [dbo].[EMPLEADOS] ([EMPLEADOID]) -- insertar registros use PEDIDOS go insert into categorias (categoriaid, nombrecat) values (100, 'CARNICOS') insert into categorias (categoriaid, nombrecat) values (200, 'LACTEOS')

insert into categorias 'LIMPIEZA') insert into categorias PERSONAL') insert into categorias 'MEDICINAS') insert into categorias 'COSMETICOS') insert into categorias 'REVISTAS')

(categoriaid, nombrecat) values (300, (categoriaid, nombrecat) values (400, 'HIGINE (categoriaid, nombrecat) values (500, (categoriaid, nombrecat) values (600, (categoriaid, nombrecat) values (700,

insert into proveedores (proveedorid, nombreprov, contacto,celuprov,fijoprov) values (10, 'DON DIEGO', 'MANUEL ANDRADE', '099234567','2124456') insert into proveedores (proveedorid, nombreprov, contacto,celuprov,fijoprov) values (20, 'PRONACA', 'JUAN PEREZ', '0923434467','2124456') insert into proveedores (proveedorid, nombreprov, contacto,celuprov,fijoprov) values (30, 'TONY', 'JORGE BRITO', '099234567','2124456') insert into proveedores (proveedorid, nombreprov, contacto,celuprov,fijoprov) values (40, 'MIRAFLORES', 'MARIA PAZ', '098124498','2458799') insert into proveedores (proveedorid, nombreprov, contacto,celuprov,fijoprov) values (50, 'ALMAY', 'PEDRO GONZALEZ', '097654567','2507190') insert into proveedores (proveedorid, nombreprov, contacto,celuprov,fijoprov) values (60, 'REVLON', 'MONICA SALAS', '099245678','2609876') insert into proveedores (proveedorid, nombreprov, contacto,celuprov,fijoprov) values (70, 'YANBAL', 'BETY ARIAS', '098124458','2450887') insert into proveedores (proveedorid, nombreprov, contacto,celuprov,fijoprov) values (120, 'JURIS', 'MANUEL ANDRADE', '099234567','2124456') insert into proveedores (proveedorid, nombreprov, contacto,celuprov,fijoprov) values (80, 'CLEANER', 'MANUEL ANDRADE', '099234567','2124456') insert into proveedores (proveedorid, nombreprov, contacto,celuprov,fijoprov) values (90, 'BAYER', 'MANUEL ANDRADE', '099234567','2124456') insert into proveedores (proveedorid, nombreprov, contacto,celuprov,fijoprov) values (110, 'PALMOLIVE', 'MANUEL ANDRADE', '099234567','2124456')

INSERT INTO PRODUCTOS VIENESAS',$2.60,200); INSERT INTO PRODUCTOS INSERT INTO PRODUCTOS INSERT INTO PRODUCTOS POLLO',$2.90,200); INSERT INTO PRODUCTOS INSERT INTO PRODUCTOS INSERT INTO PRODUCTOS INSERT INTO PRODUCTOS INSERT INTO PRODUCTOS

VALUES (1,10,100,'SALCHICHAS VALUES (2,10,100,'SALAMI DE AJO',$3.60,300); VALUES (3,10,100,'BOTON PARA ASADO',$4.70,400); VALUES (4,20,100,'SALCHICHAS DE VALUES VALUES VALUES VALUES VALUES (5,20,100,'JAMON DE POLLO',$2.80,100); (6,30,200,'YOGURT NATURAL',$4.30,80); (7,30,200,'LECHE CHOCOLATE',$1.60,90); (8,40,200,'YOGURT DE SABORES',$1.60,200); (9,40,200,'CREMA DE LECHE',$3.60,30);

INSERT INTO PRODUCTOS VALUES (10,50,600,'BASE DE MAQUILLAJE',$14.70,40); INSERT INTO PRODUCTOS VALUES (11,50,600,'RIMMEL',$12.90,20); INSERT INTO PRODUCTOS VALUES (13,60,600,'SOMBRA DE OJOS',$9.80,100);

set dateformat dmy INSERT INSERT INSERT 234) INSERT INSERT INSERT INSERT INTO EMPLEADOS VALUES (1,'JUAN', 'CRUZ', '18/01/67',null, 231) INTO EMPLEADOS VALUES (2,'MARIO', 'SANCHEZ', '01/03/79',1,144) INTO EMPLEADOS VALUES (3,'VERONICA', 'ARIAS', '23/06/77',1, INTO INTO INTO INTO EMPLEADOS EMPLEADOS EMPLEADOS EMPLEADOS VALUES VALUES VALUES VALUES (4,'PABLO', 'CELY', '28/01/77',2, 567) (5,'DIEGO', 'ANDRADE', '15/05/70',2, 890) (6,'JUAN', 'ANDRADE', '17/11/76',3, 230) (7,'MARIA', 'NOBOA', '21/12/79',3, 261)

INSERT INTO CLIENTES VALUES (1,'1890786576','SUPERMERCADO ESTRELLA','JUAN ALBAN','AV.AMAZONAS',NULL,NULL,NULL,NULL) INSERT INTO CLIENTES VALUES (2,'1298765477','EL ROSADO','MARIA CORDERO','AV.AEL INCA',NULL,NULL,NULL,NULL) INSERT INTO CLIENTES VALUES (3,'1009876567','DISTRIBUIDORA PRENSA','PEDRO PINTO','EL PINAR',NULL,NULL,NULL,NULL) INSERT INTO CLIENTES VALUES (4,'1876090006','SU TIENDA','PABLO PONCE','AV.AMAZONAS',NULL,NULL,NULL,NULL) INSERT INTO CLIENTES VALUES (5,'1893456776','SUPERMERCADO DORADO','LORENA PAZ','AV.6 DICIEMBRE',NULL,NULL,NULL,NULL) INSERT INTO CLIENTES VALUES (6,'1678999891','MI COMISARIATO','ROSARIO UTRERAS','AV.AMAZONAS',NULL,NULL,NULL,NULL) INSERT INTO CLIENTES VALUES (7,'1244567888','SUPERMERCADO DESCUENTO','LETICIA ORTEGA','AV.LA PRENSA',NULL,NULL,NULL,NULL) INSERT INTO CLIENTES VALUES (8,'1456799022','EL DESCUENTO','JUAN TORRES','AV.PATRIA',NULL,NULL,NULL,NULL) INSERT INTO CLIENTES VALUES (9,'1845677777','DE LUISE','JORGE PARRA','AV.AMAZONAS',NULL,NULL,NULL,NULL) INSERT INTO CLIENTES VALUES (10,'183445667','YARBANTRELLA','PABLO POLIT','AV.REPUBLICA',NULL,NULL,NULL,NULL) INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT insert insert insert insert INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO into into into into ORDENES ORDENES ORDENES ORDENES ORDENES ORDENES ORDENES ORDENES ORDENES ORDENES VALUES(1,3,4,'17/06/07', 5) VALUES(2,3,4,'02/06/07', 10) VALUES(3,4,5,'05/06/07', 6) VALUES(4,2,6,'06/06/07', 2) VALUES(5,2,7,'09/06/07', NULL) VALUES(6,4,5,'12/06/07', 10) VALUES(7,2,5,'14/06/07', 10) VALUES(8,3,2,'13/06/07', 10) VALUES(9,3,2,'17/06/07', 3) VALUES(10,2,2,'18/06/07', 2) values(1,1,1,2) values(1,2,4,1) values(1,3,6,1) values(1,4,9,1)

detalle_ordenes detalle_ordenes detalle_ordenes detalle_ordenes

insert into detalle_ordenes values(2,1,10,10) insert into detalle_ordenes values(2,2,13,20) insert into detalle_ordenes values(3,1,3,10)

insert into detalle_ordenes values(4,1,9,12) insert insert insert insert insert insert insert insert into into into into into into into into detalle_ordenes detalle_ordenes detalle_ordenes detalle_ordenes detalle_ordenes detalle_ordenes detalle_ordenes detalle_ordenes values(5,1,1,14) values(5,2,4,20) values(6,1,3,12) values(7,1,11,10) values(8,1,2,10) values(8,2,5,14) values(8,3,7,10) values(9,1,11,10)

insert into detalle_ordenes values(10,1,1,5) ----- PARA RESOLVER EN LOS DISTINTOS DBMS ----/* 1. Actualizar el precio unitario de los productos de la categora CARNICOS, subindolos en un 10%*/ select * from categorias select * from productos order by categoriaid update productos set preciounit = preciounit * 1.10 where categoriaid in (select categoriaid from categorias where nombrecat = 'CARNICOS') /*2. Actualizar el telfono celular del proveedor cuyo contacto es MANUEL ANDRADE, con el valor 099010291*/ --099234567 select * from proveedores WHERE CELUPROV = '099234567' update proveedores set celuprov = '099010291' where contacto = 'MANUEL ANDRADE' /*3. Borrar el producto YOGURT DE SABORES*/

select * from productos delete from productos where descripcion = 'YOGURT DE SABORES' --4. Realizar las siguientes consultas:

/*4.1 Mostrar todas las rdenes: el id de la orden, el apellido y nombre del empleado que la atendi el nombre de la compaa cliente y la fecha de orden */ select * from ordenes select * from empleados select * from clientes select ORDENID,APELLIDO,NOMBRE,NOMBRECIA,FECHAORDEN from ordenes o join empleados e on o.empleadoid = e.empleadoid join clientes c

on o.clienteid = c.clienteid order by ordenid /*4.2 Mostrar la suma total de cada tipo de producto pedidos en todas las rdenes. */ select * from detalle_ordenes select * from productos select do.PRODUCTOID, SUM(CANTIDAD) AS 'TOTAL PRODUCTO' from detalle_ordenes do join productos p on do.productoid = p.productoid group by do.productoid /*4.3 Mostrar el nmero de rdenes atendidas por cada empleado, incluidos los que tienen 0 rdenes. */ select * from ordenes WHERE EMPLEADOID = 2 select * from empleados select e.EMPLEADOID, COUNT(*) as 'ORDENES POR EMPLEADO' from empleados e join ordenes o on e.empleadoid = o.empleadoid group by e.EMPLEADOID /*4.4 Muestre los proveedores y la suma de dinero vendido en los productos de ese proveedor. */ select * from proveedores select * from detalle_ordenes ORDER by productoid select * from productos select NOMBREPROV, sum(CANTIDAD*PRECIOUNIT) as 'TOTAL VENDIDO' from detalle_ordenes do join productos p on do.productoid = p.productoid join proveedores pr on p.proveedorid = pr.proveedorid group by NOMBREPROV --5. Realizar el siguiente procedimiento almacenado. /*5.1 Escriba un procedimiento almacenado que reciba como parmetro un cdigo de proveedor y devuelve el nmero de rdenes en las que estn incluidos productos de ese proveedor. */ select * from proveedores select * from detalle_ordenes order by productoid select * from productos drop procedure num_ordenes CREATE PROCEDURE num_ordenes @codprov int AS SELECT 'NUMERO ORDENES' = COUNT(*) FROM detalle_ordenes do join productos p ON do.productoid = p.productoid WHERE p.proveedorid = @codprov RETURN Exec num_ordenes 20

/*5.2 Escriba un procedimiento almacenado que reciba como parmetro un nombre de una categora y devuelve el cdigo del producto de esa categora que tiene ms unidades vendidas. */ select * from categorias select * from productos select * from detalle_ordenes DROP PROCEDURE masvendido CREATE PROCEDURE masvendido @nomcat varchar(80) AS SELECT 'MAS VENDIDO' = do.productoid FROM detalle_ordenes do join productos p ON do.productoid = p.productoid WHERE cantidad > (select MAX(SUM(CANTIDAD)) from detalle_ordenes do join productos p on do.productoid = p.productoid join categorias c on p.categoriaid = c.categoriaid where c.nombrecat = @nomcat) RETURN Exec masvendido 'LACTEOS' select p.productoid,sum(cantidad)INTO NUM from productos p join categorias c on (c.categoriaid=p.categoriaid) join detalle_ordenes dor on (p.productoid=dor.productoid) where c.nombrecat=nomCat group by descripcion, p.productoid order by sum DESC limit 1; return num;

Você também pode gostar