Вы находитесь на странице: 1из 4

EJERCICIO RECAPITULACIN LENGUAJE SQL

Apellidos y nombre: Ponga aqu sus apellidos y nombre separados por coma.
INSTRUCCIONES Y ENUNCIADO: Conteste los ejercicios, usando LibreOffice/OpenOffice, en el espacio habilitado para ello (debajo de cada pregunta). Guarde el resultado con el nombre recap.SQL.xxxx.odt, donde xxxx sern las iniciales de sus apellidos y nombre (en este orden). Si le es posible (dispone de firma electrnica) firme digitalmente el resultado y remtalo mediante la pantalla de envo de la correspondiente tarea.

Crear una base de datos llamada BOMBONES que contendr las tablas que aparecen a continuacin, en las que se guarda informacin sobre pedidos de cajas de bombones. En la informacin contenida en este enunciado son claves principales de Pedidos, Cajas y Detalles_Pedidos, las correspondientes columnas, IDPedido, IDCaja e IDPedido+IDCaja. 1.- Dibujar el diagrama de la estructura de la Base de Datos con MySQL Workbench Data Modeling, o con la herramienta de modelado E/R que prefiera, indicando las relaciones entre las tablas, las llaves principales, candidatas y extranjeras para cada tabla.
Inserte aqu los grficos correspondientes as como cualquier explicacin adicional que considere conveniente.

2.- Utilizar sentencias SQL para crear las tres tablas.(Nota: utilizar los tipos de campos que se correspondan con los datos que se observan, creando las PK -claves primarias- y FK -claves ajenas- necesarias). Utilizar el tipo de tabla InnoDB. Despus volver a dibujar el diagrama de la estructura de la Base de Datos con MySQL WorkBench por ingeniera inversa, indicando las relaciones entre las tablas, las llaves principales, candidatas y extranjeras para cada tabla
Inserte aqu la respuesta a la pregunta anterior.

3.- Insertar la primera lnea de cada tabla mediante una sentencia SQL y el resto con la utilidad que proporciona el SGBDR (LOAD1) a partir de los archivos que se facilitan.
Inserte aqu la respuesta a la pregunta LOAD correspondientes). Tabla Pedidos
IDPedido IDCliente FechaPedido CalleEnvio CiudadEnvio CodigoPostalEnvio

anterior (las sentencias INSERT y

1 2 3 4 5 6 7 8 9 Tabla Cajas
IDCaja

237 386 158 332 373 1 275 374 348

02-Nov-93 02-Nov-93 02-Nov-93 02-Nov-93 02-Nov-93 02-Nov-93 02-Nov-93 03-Nov-93 03-Nov-93

123, Gran Va 12, Castellana 12, Paseo de la 11, Ruiz Manero 113, Diagonal 1099 Broadway 334 Casas de sala 416 N. Elm Dr. 10 Pepper Dr.

Madrid Madrid Guadalajara Rota Manresa New York San Hunter San Jose

22110 22900 17013 70001 21203 10014 91344 12442 95148

NombreCaja

Tamano

PrecioCaja

Cantidad

ALPI AUTU BITT CHER FUDG HEAV ISLA LOVE MARZ NORT PACI PEAN SWEE

Coleccin Alpina Coleccin Otoo Agridulce Clsicos Cherry ychocolate Avellanas Celestiales Coleccin Isla Corazones amantes Maravillas de mazapn Viento Coleccin Opulencia del Pacfico de Delicias Mantequilla de Dulces y Amargos

12 16 16 8 12 8 16 8 12 16 8 12 16

12,47 25.84 16.68 9.77 10.82 9.47 21.04 10.52 19.38 19.98 12.62 11.42 16.68

400 200 200 500 400 300 400 300 500 700 500 900 300

La sintaxis en linux es: LOAD DATA local INFILE <'nombreArchivo'> INTO TABLE <nombreTabla>; por ejemplo, LOAD DATA INFILE './datos.txt' INTO TABLE tablaDatos;

ejercicioResumenSQL12.odt -1-

EJERCICIO RECAPITULACIN LENGUAJE SQL


Tabla Detalles_Pedidos
IDPedido IDCaja CantidadP

1 2 2 3 3 4 4 4 5 5 5 5 6 6 6 6 6 6 7 8 8 9 9

ALPI PEAN LOVE CHER NORT AUTU BITT PACI AUTU BITT FUDG ISLA BITT FUDG HEAV NORT PEAN SWEE PEAN FUDG MARZ NORT PACI

2 1 2 2 1 1 2 1 2 2 1 1 1 1 2 2 1 2 1 1 2 2 1

4.- Mostrar toda la informacin de las cajas en cuyo nombre aparezca la palabra coleccin ordenada ascendentemente por el nombre de caja.
Inserte aqu la respuesta a la pregunta anterior.

5.- Mostrar para cada caja cuantas veces se ha pedido. Indicando el nombre de caja en la respuesta.
Inserte aqu la respuesta a la pregunta anterior.

6.- Mostrar cuantos pedidos ha hecho cada cliente, ordenando el resultado por cliente ascendentemente.
Inserte aqu la respuesta a la pregunta anterior.

7.- Mostrar todos los nmeros de pedido en los que se ha pedido una caja de tamao 8.
Inserte aqu la respuesta a la pregunta anterior.

8.- Mostrar el cdigo de los clientes que han hecho pedidos, junto a la fecha del pedido y el nombre y precio de las cajas que ha pedido
Inserte aqu la respuesta a la pregunta anterior.

9.- Mostrar para cada caja el importe total que se ha ingresado por su venta, suponiendo que se han cobrado todos los pedidos.
Inserte aqu la respuesta a la pregunta anterior.

10.- Mostrar el cdigo de los clientes que han pedido alguna vez la caja de mayor precio.
Inserte aqu la respuesta a la pregunta anterior.

11.- Listar los nombres de las cajas que se hayan pedido ms de una vez y cuantas veces se han pedido.
Inserte aqu la respuesta a la pregunta anterior.

12.- Mostrar cuanto dinero se ha gastado cada cliente, ordenando el resultado de mayor a menor cantidad de dinero.
Inserte aqu la respuesta a la pregunta anterior.

13.- Mostrar los cdigos de clientes que han hecho ms de un pedido, junto al nmero de pedidos que han hecho, mostrar el resultado ordenado por cantidad de pedidos.
Inserte aqu la respuesta a la pregunta anterior.

ejercicioResumenSQL12.odt -2-

EJERCICIO RECAPITULACIN LENGUAJE SQL 14.- Mostrar cual es el cdigo de la caja que mas se ha vendido.
Inserte aqu la respuesta a la pregunta anterior.

15.- Mostrar los cdigos de clientes que pidan alguna caja en cuyo nombre est la palabra Coleccin.
Inserte aqu la respuesta a la pregunta anterior.

16.- Mostrar cuantas cajas existen de cada tamao, junto con su precio medio.
Inserte aqu la respuesta a la pregunta anterior.

17.- Mostrar cual es el valor de venta de todas las cajas que quedan disponibles y que alguna vez hayan sido pedidas por un cliente de Madrid.
Inserte aqu la respuesta a la pregunta anterior.

18.- Mostrar cuantas veces se han pedido las cajas de tamao 16 en cuyo nombre est la palabra Coleccin, mostrando este total para cada nombre de caja distinto.
Inserte aqu la respuesta a la pregunta anterior.

19.- Decrementar en un 10% el precio de aquellas cajas cuya cantidad pedida sea superior a 3
Inserte aqu la respuesta a la pregunta anterior.

20.- Eliminar los pedidos que van a ser enviados a Madrid, teniendo en cuenta que al eliminar los pedidos en la tabla cajas debe reflejarse el cambio, es decir, si se elimina un pedido la cantidad de cajas que tenemos se ver aumentada en las unidades pedidas.
Inserte aqu la respuesta a la pregunta anterior.

21.- Modifica el tamao de la columna calle envio para que acepte hasta un mximo de 100 caracteres.
Inserte aqu la respuesta a la pregunta anterior.

22.- Aade un campo a la tabla de detalle de pedidos para poder registrar un porcentaje de descuento. Dicho descuento ser numrico con dos dgitos para la parte entera y dos para la parte decimal. Por defecto debe tomar un valor cero si no se le introduce descuento
Inserte aqu la respuesta a la pregunta anterior.

23.- Supn que tenemos una tabla clientes cuya clave principal es cod_client. Modifica la estructura de la tabla pedidos para que IDCliente sea clave ajena de la tabla clientes. Darle a la clave ajena el nombre de fk_clientes.
Inserte aqu la respuesta a la pregunta anterior.

24. Crear una tabla que contenga los nombres de las cajas junto a su identificador, la cantidad de cajas pedidas en cada una de ellas (hay que tener en cuenta que podra ocurrir que alguna caja no haya sido pedida2), el total que importan dichas cajas y la diferencia entre la cantidad de cajas y la cantidad de cajas pedidas. La informacin debe aparecer en la tabla ordenada de mayor a menor cantidad de cajas pedidas.
Inserte aqu la respuesta a la pregunta anterior.

A partir de aqu establecer el modo de transaccin manual y efectuar las siguientes operaciones separando las transacciones (START TRANSACTION y COMMIT ROLLBACK) segn sea ms conveniente. Si es necesario, modificar las tablas para que las columnas admitan los valores que se indican. 25. Insertar el pedido (10, 374, 28/11/2003, 67-71 Goswell Road, Clerkenwell, EC1V 7ER) que incluir (en la tabla Detalles Pedidos) 4 unidades de "Fantasa de Moca" con un descuento del 8 % y 9 de "Dulces y Amargos" con descuento del 10%.
Inserte aqu la respuesta a la pregunta anterior, incluyendo la modificacin del modo de transacciones.

26. Insertar el pedido (11, 332, 28/11/2003, Av. Malage s/n, Zahara de los Atunes, 11393) que incluir (en la tabla Detalles Pedidos) 5 unidades de "Coleccin Otoo" con descuento del 15.5% y 3 de "Opulencia del pacfico" con descuento del 6%.
Inserte aqu la respuesta a la pregunta anterior.

27. Alterar la tabla detalles pedidos aadiendo las columnas bruto y neto y la tabla pedidos aadiendo total y num_lineas que sern calculadas segn se indica ms adelante (obtener el tipo de datos ms conveniente en funcin del modo en que se calculan) .
2

Lo que significa que hay que emplear OUTER JOIN para el resultado. ejercicioResumenSQL12.odt -3-

EJERCICIO RECAPITULACIN LENGUAJE SQL


Inserte aqu la respuesta a la pregunta anterior.

28. Poner la columna que indica el descuento en la tabla detalles pedidos (columna creada en el ejercicio 22) a 7.5%. Una vez hecho esto y antes de terminar la transaccin deshacerla.
Inserte aqu la respuesta a la pregunta anterior.

29. Poner la columna que indica el descuento en la tabla detalles pedidos a 8 % para todos aquellos pedidos que no tengan como ciudad de envo Madrid y que no tuvieran ya porcentaje de descuento.
Inserte aqu la respuesta a la pregunta anterior.

30. Para las lneas de los pedidos destinados a Madrid poner el descuento al 9 %, siempre que no tuvieran ya porcentaje de descuento. En las dos sentencias anteriores todos los detalles de pedidos que ya tenan porcentaje de descuento quedarn igual.
Inserte aqu la respuesta a la pregunta anterior.

31. Actualizar las columnas bruto y neto de la tabla detalles pedidos. bruto se calcular como el producto de la cantidad pedida por el precio de la caja. neto ser el resultante de deducirle a bruto el porcentaje de descuento correspondiente.
Inserte aqu la respuesta a la pregunta anterior.

32. Actualizar las columnas total y num_lineas de cada pedido. total ser la suma del importe neto de todas lneas de detalle del pedido y num_lineas la cuenta de las lneas de detalle que se incluyen en cada pedido.
Inserte aqu la respuesta a la pregunta anterior.

33. Crear un trigger para la tabla detalles_pedidos que a partir de ahora realice automticamente la actualizacin anterior (actualizar las columnas total y num_lineas de cada pedido). Para cada insercin/borrado/modificacin en detalles_pedidos incrementaremos / decrementaremos total y num_lineas de la tabla pedidos segn el siguiente detalle:
Para cada tupla insertada en detalles_pedidos recalcularemos la columna pedidos.total de la tupla que corresponda de la tabla pedidos, para ello sumaremos al valor existente en pedidos.total el importe neto (detalles_pedidos.neto) de la lnea de pedido aadida (valor new.neto). Recalcularemos la columna pedidos.num_lineas aadindole 1. Para cada tupla borrada de detalles_pedidos recalcularemos la columna pedidos.total de la tupla que corresponda de la tabla pedidos, para ello restaremos al valor existente en pedidos.total el importe neto (detalles_pedidos.neto) de la lnea de pedido borrada (valor old.neto). Recalcularemos la columna pedidos.num_lineas restndole 1. Para cada tupla modificada en detalles_pedidos recalcularemos la columna pedidos.total de la tupla que corresponda de la tabla pedidos, para ello sumaremos al valor existente en pedidos.total el importe neto (detalles_pedidos.neto) de la lnea de pedido tras la modificacin (valor new.neto) y le restaremos el importe neto de la lnea de pedido antes de la modificacin (valor old.neto) La columna pedidos.num_lineas se mantiene igual. Inserte aqu la respuesta a la pregunta anterior.

ejercicioResumenSQL12.odt -4-

Вам также может понравиться