Está en la página 1de 9

ARROCERA

CREAR LA BASE DE DATOS ARROCERA, DE TAMAÑO INICIAL 5MB ,INCREMENTO DE 2MB, TAMAÑO
MAXIMO DE 10GB, INCLUYENDO UN ARCHIVO LOG DE TAMAÑO 3MB, INCREMENTO 1MB, TAMAÑO
MÁXIMO DE 1GB.

CREA LA SIGUIENTE BASE DE DATOS

 Clientes: nºcliente, nombre, apellidos, dirección, población, provincia, CP,


teléfono, fecha nacimiento, casado (si/no)
 Proveedores: nº proveedor, nombre, dirección, población, provincia, CP
 Ventas: fecha, nºartículo, cantidad, nº cliente
 Artículos: nºartículo, descripción, precio, nºproveedor

Crea las relaciones correspondientes entre Clientes-Ventas, Proveedores-


Artículos, Ventas-Artículos.

Partiremos de las tablas que se indican a continuación.


Nota: Estas tablas están orientadas a la didáctica, no a un diseño óptimo.
Tabla empleados:
numemp: número del empleado
nombre : nombre y apellidos del empleado
edad : edad del empleado
oficina : número de la oficina donde trabaja el empleado, p.ej. Antonio Viguer trabaja en
la oficina 12 de Alicante
titulo : el cargo que desempeña el empleado
contrato : fecha en que se contrató al empleado
jefe : número de su jefe inmediato, p.ej. El jefe de Antonio Viguer es José González.
Observar que Luis Antonio no tiene jefe, es el director general.
cuota : cuota del empleado, sería el importe mínimo de ventas que debe alcanzar el
empleado en el año
ventas : importe de ventas realizadas durante este año

Tabla oficinas:

oficina: código de la oficina


ciudad: ciudad donde está ubicada
region : región a la que pertenece
dir : director de la oficina (su número de empledo) por ejemplo la oficina 12 tiene como
director el empleado104 José González.
objetivo : objetivo de ventas que debe alcanzar la oficina
ventas: ventas de la oficina

Tabla clientes:
numclie: número de cliente
nombre : nombre y apellidos del cliente
repclie : nº del representante asignado al cliente.
Cada cliente tiene un representante asignado (el que figura en repclie) que será el que
generalmente le atienda.
limitecredito : límite de crédito del cliente
1 Crear la tabla empleados y definir su clave principal en la misma instrucción de
creación.
2 Crear la tabla oficinas con su clave principal y su clave foránea ( la columna dir
contiene el código de empleado del director de la oficina luego es un campo que hace
referencia a un empleado luego es clave foránea y hace referencia a la tabla
empleados).
4 Crear la tabla clientes también con todas sus claves y sin la columna limitecredito.
6 Añadir a la definición de clientes la columna limitecredito.
7 Añadir a la tabla empleados las claves foráneas que le faltan. (Si no tienes claro
cuales son te lo decimos ahora: la columna oficina indica la oficina donde trabaja el
empleado y la columna director indica quién dirige al empleado, su jefe inmediato).
8 Hacer que no puedan haber dos empleados con el mismo nombre.
10 Definir un índice sobre la columna región de la tabla de oficinas.
11 Eliminar el índice creado.

-Crea un diagrama nuevo con el modelo relacional.

EJERCICIOS SQL
1. Selecciona los campos ‘nombre’ y ‘apellidos’ de la tabla ‘clientes’.

2. Selecciona el campo ‘nombre’ de la tabla ‘clientes’, y el campo ‘descripción’ de


la tabla artículos.
3. Selecciona todos los campos de la tabla ‘ventas’.

4. Selecciona los campos ‘nombre’, ‘apellidos’ y ‘teléfono’ de la tabla ‘clientes’. De


esta manera obtenemos una agenda telefónica de nuestros clientes.

5. Selecciona todos los campos de la tabla ‘clientes’, pero los registros de todos
aquellos clientes que se llamen ‘ALFREDO’.

6. Selecciona todos los campos de la tabla ‘proveedores’, pero los registros de las
provincias de ‘MADRID’, ‘VALENCIA’ o ‘BARCELONA’.

7. Selecciona los campos ‘nombre’ y ‘apellidos’ de la tabla clientes, escogiendo


que tengan nº cliente mayor de 3.

8. Selecciona todos los clientes con nºcliente entre los 3 y 5.

9. Selecciona las ventas realizadas después del 25 de Octubre del 2001.

10. Selecciona las ventas realizadas en el año 2002.

11. Selecciona los clientes cuyo nombre comience con los caracteres ‘AL’.

12. Selecciona los clientes cuyos apellidos terminen por los caracteres ‘EZ’

13. Selecciona los clientes cuyos apellidos contengan, en cualquier posición, los
caracteres ‘ZAMO’.

14. Selecciona todos los clientes de las provincias de MADRID, BARCELONA,


VALENCIA, TOLEDO o AVILA.

15. Crea una agenda telefónica de ‘clientes’ ordenada por ‘apellidos’ y ‘nombre’.

16. Relación de ‘ventas’ ordenadas desde la más antigua hasta la más moderna.

17. Relación de ‘clientes’ por ‘apellidos’ y ‘nombre’ ascendentemente, y por ‘fecha


nacimiento’ en orden descendiente (del más viejo al más joven).

18. Cambia el campo cantidad de la tabla ventas con nºcliente 2 a 7.

19. Consulta que muestre el total de unidades vendidas (la suma de los valores
almacenados en el campo ‘cantidad’ de la tabla ‘ventas’).

20. Consulta que muestre el promedio de unidades vendidas (la media de todos los
valores almacenados en el campo ‘cantidad’ de la tabla ‘ventas’).

21. Consulta que muestre la venta más pequeña.

22. Consulta que muestre la venta más grande.

23. Consulta que devuelva el número de ventas realizados el 15/01/02.


24. Consulta que devuelva el número de clientes casados.

25. Consulta que devuelva los importes de todas las ventas.

26. Consulta que devuelva el número de ventas por un importe superior a 300 €.

27. Consulta que devuelva el total, la media, el máximo, el mínimo de unidades


vendidas.

28. Cuántas ventas se realizaron cada día.

Las consultas simples


La lista de selección

1 Obtener una lista de todos los artículos indicando para cada uno su nº,
descripción, precio y precio con I.V.A. incluido (es el precio anterior aumentado en un
18%).
3 Listar de cada empleado su nombre, nº de días que lleva trabajando en la empresa
y su año de nacimiento (suponiendo que este año ya ha cumplido años).

Selección de filas.

7 Listar las cuatro líneas de pedido más caras (las de mayor importe).
NO 9 Listar toda la información de los pedidos de marzo.
10 Listar los números de los empleados que tienen una oficina asignada.
11 Listar los números de las oficinas que no tienen director.
12 Listar los datos de las oficinas de las regiones del norte y del este (tienen que
aparecer primero las del norte y después las del este).
13 Listar los empleados de nombre María.
NO 14 Listar los productos cuyo idproducto acabe en x.

Las consultas multitabla


1 Listar las oficinas del este indicando para cada una de ellas su número, ciudad,
números y nombres de sus empleados. Hacer una versión en la que aparecen sólo
las que tienen empleados, y hacer otra en las que aparezcan las oficinas del este que
no tienen empleados.
2 Listar las ventas mostrando su id, importe, nombre del cliente correspondiente
3 Listar los datos de cada uno de los empleados, la ciudad y región en donde trabaja.
4 Listar las oficinas con objetivo superior a 600.000 indicando para cada una de ellas
el nombre de su director.
5 Listar las ventas superiores a 2.500, incluyendo el nombre del empleado que hizo
la venta y el nombre del cliente que lo solicitó.
6 Hallar los empleados que realizaron su primera venta el mismo día en que fueron
contratados.
7 Listar los empleados con una cuota superior a la de su jefe; para cada empleado
sacar sus datos y el número, nombre y cuota de su jefe.

Las consultas de resumen


1 ¿Cuál es la cuota media y las ventas medias de todos los empleados?
2 Hallar el importe medio de las ventas, el importe total de las ventas y el precio
medio de venta
3 Hallar el precio medio de los artículos del “proveedor de pantalones
4 ¿Cuál es el importe total de las ventas realizadas por el empleado Vicente
Pantalla?
5 Hallar en qué fecha se realizó la primera venta (suponiendo que en la tabla de
ventas tenemos todas hasta la fecha).
7 Listar cuántos empleados están asignados a cada oficina, indicar el número de
oficina y cuántos hay asignados.
8 Para cada empleado, obtener su nombre, e importe vendido por ese empleado a
cada cliente indicando el número de cliente.
9 Para cada empleado cuyas ventas suman más de 3.000, hallar su importe medio
de ventas. En el resultado indicar el número de empleado y su importe medio de
ventas.
10 Listar de cada producto, su descripción, precio y cantidad total pedida, incluyendo
sólo los productos cuya cantidad total pedida sea superior al 75% del stock; y
ordenado por cantidad total pedida.
11 Saber cuántas oficinas tienen empleados con ventas superiores a su cuota, no
queremos saber cuáles sino cuántas hay.

Las subconsultas
Los ejercicios que te proponemos a continuación se pueden resolver de varias
maneras, intenta resolverlos utilizando subconsultas ya que de eso trata el tema,
además un mismo ejercicio lo puedes intentar resolver de diferentes maneras
utilizando distintos tipos de condiciones, así un ejercicio se puede convertir en dos o
tres ejercicios.

2 Listar los vendedores (numemp, nombre, y nº de oficina) que trabajan en oficinas


"buenas" (las que tienen ventas superiores a su objetivo).
3 Listar los vendedores que no trabajan en oficinas dirigidas por el empleado 108.
No? 4 Listar los productos (idfab, idproducto y descripción) para los cuales no se ha
recibido ningún pedido de 25000 o más.
NO 5 Listar los clientes asignados a Ana Bustamante que no han remitido un pedido
superior a 3000 pts.
6 Listar las oficinas en donde haya un vendedor cuyas ventas representen más del
55% del objetivo de su oficina.
7 Listar las oficinas en donde todos los vendedores tienen ventas que superan al
50% del objetivo de la oficina.
8 Listar las oficinas que tengan un objetivo mayor que la suma de las cuotas de sus
vendedores.
Actualización de datos
Como en estos ejercicios vamos a modificar los valores almacenados en la base de
datos, es conveniente guardar antes una copia de las tablas, en los cuatro primeros
ejercicios crearemos una copia de los datos almacenados para luego poder
recuperar los valores originales.
1 Crear una tabla (llamarla nuevaempleados) que contenga las filas de la tabla
empleados.
2 Crear una tabla (llamarla nuevaoficinas) que contenga las filas de la tabla oficinas.
¿? 3 Crear una tabla (llamarla nuevaproductos) que contenga las filas de la tabla
productos.
¿¿ 4 Crear una tabla (llamarla nuevapedidos) que contenga las filas de la tabla
pedidos.
¿?5 Subir un 5% el precio de todos los productos del fabricante ACI.
6 Añadir una nueva oficina para la ciudad de Madrid, con el número de oficina 30,
con un objetivo de 100000 y región Centro.
7 Cambiar los empleados de la oficina 21 a la oficina 30.
8 Eliminar los pedidos del empleado 105.
9 Eliminar las oficinas que no tengan empleados.
¿¿10 Recuperar los precios originales de los productos a partir de la tabla
nuevosproductos.
11 Recuperar las oficinas borradas a partir de la tabla nuevaoficinas.
¿¿12 Recuperar los pedidos borrados en el ejercicio 8 a partir de la tabla
nuevapedidos.
13 A los empleados de la oficina 30 asignarles la oficina 21.

Referencias cruzadas
1 Queremos saber de cada empleado sus ventas mensuales del año 2002.
2 Modificar el ejercicio 1 para que junto al número de empleado también aparezca el
nombre del empleado.
3 Queremos saber las ventas mensuales de cada oficina distinguiendo meses de
distintos años.
4 Se necesita una estadística de cuántos empleados fueron contratados por año en
cada oficina.
5 Queremos saber por año las ventas realizadas en las distintas regiones.

EXTRA

Cuántos artículos diferentes se han vendido

select COUNT(distinct(nºartículo))
from ventas;

Cuántos proveedores distintos/diferentes nos han provisto de artículos


select count(distinct(nºproveedor))
from artículos;

Cuántas piezas diferentes se han vendido

select COUNT(distinct(Articulos_piezas.Cod_pieza))
FROM Articulos_piezas inner join ventas
on Articulos_piezas.nºarticulo = ventas.nºartículo;

select [nombre cliente]


into clientesA
from clientes
where [nombre cliente] like 'A%';

delete from clientesA;

drop table clientesA;

select *
into Ventas2001
from Ventas
where fecha between '01/01/2001' and '31/12/2001';

delete from Ventas2001


where cantidad <15;

drop table Ventas2001;

select Ventas.id, Artículos.*


into VentasYArtículos
from Ventas inner join Artículos
on ventas.nºartículo = Artículos.nºartículo;

delete from VentasYArtículos


where nºproveedor like 3 and precio >35;

drop table VentasYArtículos;

delete from Ventas2


where numemp like 103 and importe >=4000;

delete from oficinas


where oficina not in (
select b.oficina
from empleados a inner join oficinas b
on a.oficina = b.oficina);

También podría gustarte