1. Ejercicios de consultas SQL
Ejercicio 1
Se mantiene la informaci´on estad´ıstica de empresas de la regi´on en el siguiente es-
quema de base de datos:
EMPLEADO(nombrePersona, calle, ciudad)
TRABAJA(nombrePersona, nombreEmpresa, salario)
EMPRESA(nombreEmpresa, ciudad)
SUPERVISA(nombrePersona, nombreSupervisor)
Se cumplen las siguientes restricciones de inclusi´on:
• ΠnombrePersona (TRABAJA) ⊆ ΠnombrePersona (EMPLEADO)
• ΠnombrePersona (SUPERV ISA) ⊆ ΠnombrePersona (EMPLEADO)
• ΠnombreSupervisor (SUPERV ISA) ⊆ ΠnombrePersona (EMPLEADO)
• ΠnombreEmpresa (TRABAJA) ⊆ ΠnombreEmpresa (EMPRESA)
Se pide: Dar una expresi´on en SQL para cada una de las siguientes consultas:
a) Obtener los nombres de todos los empleados que trabajan para el “Banco Central
del Uruguay”.
b) Obtener el nombre y la ciudad de residencia de los empleados que trabajan para
el “Banco Central del Uruguay”.
c) Obtener el nombre, la calle y ciudad de residencia de los empleados que trabajan
para el “Banco Central del Uruguay” que ganan m´as de $25.000.
d) Obtener los nombres de empleados que viven en la misma ciudad en donde se
ubica la empresa para la que trabajan.
e) Obtener los nombres de empleados que viven en la misma ciudad y sobre la misma
calle que vive su supervisor.
f) Obtener los nombres de todos los empleados que no trabajan para el “Banco
Central del Uruguay” asumiendo que todos los empleados trabajan. Luego repita el
ejercicio suponiendo que pueden haber empleados que no trabajan para empresa alguna.
g) Obtener los nombres de todos los empleados que ganan m´as que todo empleado
del “Banco Central del Uruguay” utilizando la cl´ausula EXCEPT y luego sin utilizarla.
1
2. h) Suponiendo que las empresas pueden estar ubicadas en varias ciudades. Obtener
todas las empresas ubicadas en toda ciudad en donde se encuentre la empresa “Kiosko
de Cuch´u”.
Obs: No se puede usar la cl´ausula CONTAINS.
i) Obtener de cada empleado su nombre y la cantidad de empleados que supervisa.
j) Dar un 9 porciento de aumento a todos los empleados del “Banco Central del
Uruguay”.
k) Modificar la base de datos de tal forma que el empleado Ochoa ahora vive sobre
la calle Av. Calcagno de la ciudad Shangril.
l) Dar un 9,5 porciento de aumento a todos los supervisores del “Banco Central del
Uruguay”.
m) Borrar todas las t´uplas de la relaci´on TRABAJA de emplados del “Banco Central
del Uruguay”.
Ejercicio 2
Se mantiene la informaci´on de refacciones y los distintos proveedores que los proveen
en el siguiente esquema de base de datos:
PROVEEDORES(idP, nombreP, direccion)
REFACCIONES(idR, nombreR, color)
CATALOGOS(idP, idR, precio)
Se cumplen las siguientes restricciones de inclusi´on:
• ΠidP (CATALOGOS) ⊆ ΠidP (PROV EEDORES)
• ΠidR (CATALOGOS) ⊆ ΠidR (REFACCIONES)
Se pide: Dar una expresi´on en SQL para cada una de las siguientes consultas:
a) Obtener los nombres de los proveedores que proveen alguna parte.
b) Obtener los identificadores de proveedores que proveen una refacci´on roja y una
verde.
c) Obtener los nombres de refacciones provistas solamente por “Proveedores ACME”.
d) Encontrar los identificadores y precio m´ınimo de refacciones cuyo costo es menor
a $100 y tienen color rojo.
e) Armar un informe de las refacciones que vende un proveedor indicando los iden-
tificadores de Proveedor, Refacci´on y qu´e descuento aplica seg´un el siguiente criterio.
• Si el precio es mayor a $100 y tiene color amarillo, el descuento es de 20%.
• Si tiene color azul tienen 10% de descuento.
• En otro caso no hay descuento.
2
3. Ejercicio 3
La informaci´on sobre el movimiento de barcos de carga en los puertos se mantiene
en el siguiente esquema de base de datos:
PUERTOS(nombre, pais, tipoAgua)
Una tupla en esta tabla representa un puerto del que se conoce el nombre, el pa´ıs en que
se encuentra y el tipo de agua (tipoAgua) que puede ser dulce o salada.
BARCOS(matricula, nombre, bandera)
Una tupla en esta tabla representa un barco del que se conoce su matrcula, su nombre,
y el pa´ıs que di´o su autorizaci´on para circulaci´on (bandera).
ATRACA(matricula, nombre, pais, fecha)
Una tupla en esta tabla representa que un barco (matricula) atraca en un determinado
puerto (nombre, pais) en una fecha determinada.
MERCADERIA(codigo, unidad, descripcion, tipo)
Una tupla en esta tabla representa una mercadera que se comercia y de la que se conocen
esos atributos.
MOVIMIENTO(matricula, nombre, pais, fecha, codigo, tipoMov, cant)
Una tupla en esta tabla representa un movimiento de carga o descarga (tipoMov) de
cierta cantidad (cant) de una mercader´ıa (codigo), realizado sobre un barco atracado en
puerto (matricula, nombre, pais, fecha).
Se cumplen las siguientes restricciones de inclusi´on:
• Πmatricula (ATRACA) ⊆ Πmatricula (BARCOS)
• Πnombre,pais (ATRACA) ⊆ Πnombre,pais (PUERTOS)
• Πmatricula,nombre,pais (MOV IMIENTO) ⊆ Πmatricula,nombre,pais (ATRACA)
• Πcodigo (MOV IMIENTO) ⊆ Πcodigo (MERCADERIA)
Se pide:
a) Dar una expresi´on en SQL que resuelve lo mismo que la siguiente expresi´on en
´Algebra Relacion:
A ← πcodigo,nombre,pais,cant (σtipoMov=“carga (MOV IMIENTO))
B (cod, nom, pais2, cantidadB) ← A
C ← πcodigo,nombre,pais A (cant<cantidadB AND codigo=cod) B
SOLUCION ← πcodigo,nombre,pais (A) − C
b)
3