You are on page 1of 8

Bases de Datos – Año 2018

Práctico Nº 4: Lenguaje SQL

EJERCICIOS: Resuelva las consultas planteadas usando el lenguaje SQL pueden utilizar la
herramienta online http://www.sqlfiddle.com que soporta diferentes motores.

Caso 1 - ESQUEMA HR (RECURSOS HUMANOS) descargar script HR de la wiki

Cuando se realiza la instalación de la Base de Datos de Oracle, por defecto se crean esquemas de
ejemplo, para poder realizar pruebas. Uno de ellos es el esquema HR que trata de Recursos
Humanos, a continuación se muestra el esquema HR.

1. Obtenga el nombre (first_name y last_name) y el salario (salary) de todos los empleados.


Cambie el nombre de la columna first_name a Nombre y last_name a Apellido y salary a Salario.
2. Obtenga el nombre (first_name y last_name) y el salario (salary) de todos los empleados
ordenado alfabéticamente por apellido (last_name).
3. Obtenga el apellido (last_name) y la Comisión (commission_pct) que perciben los empleados
cuya comisión sea mayor a 0.25. Mostrarlos ordenado en forma descendente por last_name.
4. Obtenga la cantidad de empleados que trabajan en el departamento 100.
5. Obtenga todos los datos de los departamentos con identificador 10 ó 70 (department_id).
Bases de Datos – Año 2018

6. Obtenga el nombre (last_name) de los empleados junto al nombre del departamento


(department_name) donde trabajan.
7. Obtenga el nombre (last_name) de los empleados de los departamentos de Finanzas (Finance)
y/o Transporte (Shipping).
8. Obtenga sin repetir los tipos de trabajos (jobs) que realizan en los departamentos los
empleados. Liste el identificador del departamento y el nombre del trabajo.
9. Obtenga los departamentos en los que los empleados realizan trabajos de Contabilidad (Stock
Clerk) y Asistente de Administración (Shipping Clerk). Liste el identificador del departamento y
el nombre del trabajo.
10. Obtenga el nombre de los departamentos que tienen al menos 3 empleados.
11. Obtenga el nombre de los empleados (last_name) y el salario (salary) de aquellos empleados
que tienen un salario mayor que el salario promedio. Ordene el listado en forma descendente
por salario.
12. Obtenga el salario máximo de los empleados del departamento 110. Ordene el listado en forma
ascendente por salario.
13. Obtenga el nombre del/de los empleados que tienen el sueldo máximo del departamento 110.
Ordene el listado en forma ascendente por salario
14. Obtenga los empleados que no sean supervisores (o directores). NOTA: En la tabla departments
el atributo manager_id tiene la identificación de los supervisores de cada dpto.
15. Especifique la Vista EmpFinan que contenga todos los empleados del departamento 100 con los
atributos first_name como nombre, last_name como apellido y department_name como
nom_dpto.
a. Realice una consulta que muestre la vista completa.
16. Gestión de usuarios y privilegios: Crear los siguientes usuarios y otorgarles privilegios.
Usuario Privilegios
HRDep Permisos sobre los objetos del esquema
select, insert, update, delete, alter
HrUser Permisos sobre los objetos del esquema
select

Caso 2- Esquema Personas Reglas de Integridad Referencial

PERS (Personas) = {id, nom, idc(identificador de ciudad), edad}


Ciu(Ciudad) = {ciudad_id, ciudad_nom}

Reglas de Integridad Nulos Eliminar Modificar

Pers.idc No Restringir Propagar

Pers.idc No Nulificar Restringir


1. Crear las tablas y especificar las Reglas de Integridad especificadas sobre la clave foránea
identificador de ciudad, considerando el esquema propuesto.
2. Inserte nuevas Personas con los siguientes datos:
< 1,'Pedro Cortes',1,16 >
< 2,'Santiago Mas',2, 25>
Bases de Datos – Año 2018

< 3,'Juan Basti',3, 50 >


< 4,'Andrea Hernández',1 >

3. Inserte ciudades con los siguientes datos:


< 1,'Galilea' >
< 2,'Betsaida' >
< 3,'Patmos' >
< 4,'Jerusalén' >

4. Ejecutar las siguientes consultas


a. Muestre el nombre de las ciudades ordenadas alfabéticamente.
b. Muestre las personas (todos los datos) mayores de edad.
c. Muestre la cantidad de ciudades.
d. Eliminar la ciudad con identificador igual a 1.
e. Muestre la cantidad de ciudades.
Caso 3- DEPORTES

PERS (Personas) = {Dni, Nom, Sexo, Edad, Dir, Tel, Zona}


DEPO (Deportes) = {Codd, Nomd, Clase}
CLUB (Clubes) = {Codc, Nomc, Dir, Tel, Cat, Zona}
PRAC (Practican) = {Dni, Codd, Codc}

17. Inserte nuevas Personas (deportista) con los siguientes datos:


< 14895399, Perez Edgar, M, 35, Hipólito Irigoyen 528, 4222935, Rawson >
< 24835599, González Rosa, F, 50, Hipólito Irigoyen 528, 4229115, Rivadavia >
< 34895399, Fernández Luis, M, 28, Hipólito Irigoyen 528, 4293538, Santa Lucia >
< 17895399, Ruiz Analia, F, 18, Hipólito Irigoyen 528, 4258912, Pócito >
18. Inserte el nuevo deporte con los siguientes datos:
< d99, Tenis, terrestre >
19. Inserte el nuevo club con los siguientes datos:
< c99, Universidad, 25 de Mayo, 4311425, cat, Capital >
20. Inserte la nueva tupla para practica con los siguientes datos:
< 14895399, d99, c99 >
21. Actualice el teléfono del Club UVT por el número 4312548.
22. Elimine el Deporte “Tenis”.
23. Realice una consulta que obtenga nombre, sexo y edad de todas las personas cuya edad es
mayor que el de todas las personas que practican deportes en el club Ausonia.
24. Realice una consulta que obtenga un listado que incluya el nombre de los clubes que cuya
dirección se encuentre en Av.Libertador.
25. Obtenga el nombre de los clubes donde se practica básquet.
26. Obtenga nombre de los clubes donde se practican deportes en la categoría infantil en básquet,
se consideran deportes categoría infantil aquellos donde la edad de las personas se encuentra
entre 13 y 14 años.
27. Obtenga nombre y dirección de las personas que viven en la misma zona que Juan Pérez, DNI
20.498.425.
28. Obtenga el nombre de las personas mayores que Ana García (DNI: 18.498.425).
29. Obtenga el nombre de las personas que practican en clubes que están ubicados en la misma
zona en la que ellos viven.
Bases de Datos – Año 2018

30. Obtenga el nombre de las personas junto al nombre del deporte que práctica. Se deben incluir
todas las personas registradas más allá que no estén practicando ningún deporte.
31. Obtenga el nombre de los deportes practicados en todos los clubes.
32. Obtenga los clubes (todos sus datos) en los que se practican todos los deportes de balón (clase).
33. Obtenga las personas (todos sus datos personales) que practican todos los deportes.
34. Obtenga el nombre de las personas que practican todos los deportes que se practican en el
Banco Hispano.
35. Especifique la Vista “ClubesCap” que tenga los siguientes atributos nombre, dirección y teléfono
de los clubes ubicados en Capital.
36. Muestre los datos contenidos en la vista.
37. Inserte el Club Inca Huasi ubicado en Las Heras Norte 174, teléfono 4228263.
38. Especifique la Vista “Atletas” que tenga los siguientes atributos dni, nombre, sexo, edad.
39. Muestre los datos de los Atletas cuya edad oscile entre 14 y 18 años.
40. Especifique la Vista “Basquetbolistas_Junior” que tenga los siguientes atributos dni, nombre,
edad y tel. Un deportista se considera junior si tiene una edad que oscila entre los 17 y 18 años.
41. Muestre los datos contenidos en la vista, ordenados según el nombre.
42. Gestión de usuarios: Crear un usuario (UserDep) y posteriormente cambiarle la contraseña.
Caso 4– Obras Civiles

El gobierno de la provincia ha programado la construcción de varias obras civiles, para administrar


la información relativa a esta temática cuenta con una base de datos formada por las siguientes
tablas:
O (Obras) = {Co, Desc, Direc, Zona, EmpCon}
M (Materiales) = {Cm, Desc, Precio}
F (Ferreterías) = {Cuit, Nom, Direc, Zona, Tel}
P (Pedidos) = {Co, Cm, Cuit, Fecha, Cant}

1. Genere las tablas correspondientes, especificando claves primarias y foráneas.


2. Inserte las tuplas en cada tabla creada.
3. Muestre, a través de una consulta, los materiales (descripción) pedidos el día 06/06/2010.
4. Muestre para cada obra (indicando descripción) todos los materiales solicitados (descripción).
Deben informarse todas las obras, más allá que aún no tenga materiales pedidos.
5. Muestre la cantidad total de bolsas de cal que han sido pedidas a la ferretería MR S.A.
6. Muestre la cantidad total de obras que han pedido materiales a la ferretería MR S.A.
7. Muestre, para cada material pedido a alguna ferretería, el código de material, código de obra y
la cantidad total pedida (independientemente de la ferretería).
8. Muestre la descripción de materiales pedidos para alguna obra en una cantidad promedio
mayor a 320 unidades.
9. Muestre el nombre del material menos pedido (en cantidad total).
10. Muestre la descripción de las obras que no han utilizado pintura.
11. Muestre el nombre de las obras abastecidas totalmente por la ferretería MR S.A.
12. Muestre el nombre de los materiales que han sido pedidos para todas las obras realizadas.
13. Actualice el teléfono de la Ferretería San Ignacio por el número 4312548.
14. Elimine el Material con descripción Cemento Avellaneda.
Bases de Datos – Año 2018

15. Especifique la Vista “ObrasCuyoNorte” que contenga Co (código de la obra), Direc(dirección de


la obra) y EmpCon (empresa constructora) de las obras ubicadas en la zona Cuyo Norte.
16. Especifique la Vista “ObrasMat” que contenga Obra (código de la obra), Empresa (empresa
constructora), Material (descripción del material) y CantMat (cantidad de materiales pedidos).
a. Muestre los datos contenidos en la vista, ordenados según obra (descendente) y material
(ascendente).
b. Actualice la cantidad de materiales pedidos de las obras incrementándolas en 100.
Caso 5 - Recargas y viajes de la tarjeta SUBE

Tar (Tarjeta) = {num, monto, dni, nombre, prov}


LIN (Líneas) = {codlinea, cuit}
EMP (Empresas) = {cuit, nombre, direc, prov}
V (Viajes) = {num,fecha,hora,codlinea,empresa,importe}
Restricciones:
● V (Viajes): En esta tabla se almacenará qué viajes se registraron para un número de tarjeta en
particular. Por supuesto, una persona puede viajar en la misma línea y empresa, pero viaja en
una línea y empresa concreta para una fecha-hora.

1. Genere las tablas correspondientes, especificando claves primarias y foráneas.


2. Inserte las tuplas en cada tabla creada.
3. Personas (todos los datos) que solamente han tomado la línea 26A de la provincia de San Juan.
4. Empresas (todos los datos) en las que viajaron personas oriundas de la provincia de San Juan y
San Luis.
5. Personas (dni y nombre) que viajaron más de una vez en una fecha, para una línea y empresa
determinada.
6. Personas que viajaron más de una vez en la línea 17 La positiva, el día 02/03/16.
7. Obtener todos los datos de las personas que viajaron en todas las empresas de la provincia de
San Juan (sin importar la línea).
8. Obtener el importe total que gastó Juan Pérez cuyo dni es 36800700 en lo que del año 20018.
9. Genera la Vista VIAJES_LINEA que contenga, para cada empresa (cuit y nombre) y para cada
línea (código de línea) la cantidad de viajes que se hicieron en lo que del año 2018.

Caso 6 – Cartelera de Espectáculos

Pers(Persona) = {DNI, Tel, email}


Teatro = {Codt, Nom, Direc, Tel, Capac, prov}
Esp (Espectáculo) = {Cod, Nom, autor, tipo (concierto, danza, teatro, etc)}
Tiene = {Codt, Cod, Fechac, Fechaf, precio}
Compra = {DNI,Codt,Cod, fecha, precio}

1. Personas que han comprado entradas a espectáculos en la provincia de San Juan.


2. Obtener los espectáculos (conciertos) que estarán en cuyo (provincias de San Juan, Mendoza,
San Luis y La Rioja).
3. Espectáculos que estarán en el teatro “La Quintanilla” (Mendoza) a partir de abril del presente
año.
Bases de Datos – Año 2018

4. Teatros (Nombre y Dirección) que tienen únicamente espectáculos cuyo precio supera los
$500.
5. Espectáculos (todos los datos) que han estado en todos los teatros cuya capacidad no supera
las 300 personas.
6. Personas que han comprado más de una entradas para el mismo espectáculo (sin importar el
teatro).
7. Personas (email) que han comprado más de una entrada al espectáculo “Un pianista brillante”
para el “Teatro del Bicentenario”.
8. Personas (dni) que asistieron a todos las presentaciones de espectáculos, o sea, si un
espectáculo se presentó en dos teatros, debe haber asistido a ambas presentaciones.
9. Personas (dni, nombre y apellido) que asistieron a todos las presentaciones en teatros de cuyo
de espectáculos, o sea, si un espectáculo se presentó en dos teatros de la zona cuyo, debe
haber asistido a ambas presentaciones.
10. Personas que asistieron a todos los conciertos (es un tipo de espectáculo) presentados en
teatros de cuyo, es decir, si un concierto se presentó en dos teatros de la zona cuyo, debe
haber asistido a ambas presentaciones.

EJERCICIOS PROPUESTOS

Caso 7– EMPRESAS DE COLECTIVOS

La provincia cuenta con una base de datos que posee información acerca de las distintas empresas
de ómnibus que existen. Las tablas que la forman se plantean a continuación:

EMP (Empresas de Omnibus) = {Cuit, Nom, Dir, Tel}


CHOF (Choferes) = {Dni, Nom, Edad, Dom, celular, Patente, Turno (M: mañana, T: tarde, N:
nocturno)}
LIN (Líneas) = {CodL, Descr, Cuit}
UNI (Unidades) = {Patente, Modelo, CodM, CodL}
MARCAS = {CodM, Nom}
CALLES = {CodC, Nom, Orient}
RECO (Recorrido) = {CodL, CodC, Orden, Cant_cuad (cantidad de cuadras)}

a) Definición de la estructura.
1. Crear las tablas correspondientes, especificando clave primaria y foránea.
2. Inserte las tuplas necesarias en cada relación creada para luego poder realizar las consultas que
se le solicitan.

b) Resolver las consultas planteadas usando el lenguaje SQL.


1. Mostrar todos los datos de las unidades que son manejadas por un solo chofer.
2. Mostrar el nombre de la empresa que posee mayor cantidad de unidades modelo 2009.
3. Mostrar el personal correspondiente a la empresa La Positiva.
4. Mostrar el nombre de las calles por las que circulan alguna de las líneas de cada empresa de
transporte, es decir, deben estar presentes todas las empresas.
5. Mostrar el nombre de las calles por las que circula más de una línea de colectivos.
6. Mostrar el nombre de las calles por las que circula una línea más de una vez en su recorrido.
7. Mostrar la descripción de la línea que tiene el recorrido más extenso.
Bases de Datos – Año 2018

8. Mostrar todos los datos de las empresas que poseen unidades de todas las marcas.
9. Mostrar el recorrido de la línea X (descripción de la línea) a partir de la calle Mitre.
10. Mostrar el nombre de las empresas que sólo poseen unidades marca Mercedes Benz.
11. Mostrar el nombre y orientación de las calles por las que ninguna línea pasa en su recorrido.

c) Sobre el esquema planteado enuncie las consultas en SQL para actualizarla:


1. Actualice el celular del Chofer con “dni = 18923145” por el número 0264 4312548.
2. Actualice el nombre de la calle con código “calle10” por Hipólito Irigoyen.
3. Elimine la unidad (colectivo) con patente ABC 123 por darse de baja.

d) Sobre el esquema planteado especifique las siguientes vistas:


1. Una Vista de “TurnoMañ” con los atributos siguientes Dni, nombre del chofer y patente de la
unidad que maneja.

Caso 8– INSTITUTO NACIONAL DE VITIVINICULTURA-INV

El INV cuenta con una base de datos que posee información de las distintas bodegas que existen en
el país. Las tablas que la conforman se presentan a continuación:

BOD (Bodegas) = {CuitB, NomB, Direcc, Tel, Dni (Dueño), CodProv}

PROV (Provincias) = {CodProv, NomP, Región}

PERSONAS (Productores y/o Bodegueros) = {Dni, Nom, Domi, Tel}

VIÑEDOS = {CodV, extensión, CodProv, Dni (Dueño)}

TUVA (Tipos de uvas) = {Codtu, Descr}


CULTIVA = {CodV, Codtu}
ING_PROP (Ingreso de uvas propias) = {CuitB, CodV, Codtu, fecha, kgs}

ING_EXT (Ingreso de uvas compradas) = {CuitB, CodV, Codtu, fecha, kgs, precio}

1. Cree las tablas correspondientes, especificando clave primaria y foránea.


2. Inserte las tuplas necesarias en cada relación creada para luego poder realizar las consultas que
se le solicitan.
3. Obtenga todos los datos de los productores que cultivan uvas tintas, blancas y cerezas
(simultáneamente).
4. Obtenga nombre y teléfono de los productores que cultivan todos los tipos de uvas; es decir,
entre sus viñedos.
5. Obtenga el nombre de los productores que no han vendido todos los tipos de uvas que han
producido.
6. Obtenga el nombre de las provincias que no cuentan con viñedos ni tampoco cuentan con
bodegas.
7. Obtenga el nombre de las bodegas que han usado solamente recursos propios.
8. Obtenga el nombre de las bodegas que han procesado (refiere a todo lo que ingresó) todos los
tipos de uvas.
9. Actualice el teléfono de la Bodega Viñas de San Ignacio por el número 0264 4312548.
10. Actualice la Región de la Provincia de San Juan por Nuevo Cuyo.
Bases de Datos – Año 2018

11. Elimine la Bodega “Viñas de Carrascosa S.A.”.


12. Especifique una Vista de Bodegas con el Cuit de la Bodega, Nombre de la Bodega y el Dueño.
13. Especifique una Vista de Bodegas con el Cuit de la Bodega, Nombre de la Bodega y el código
de la provincia.

Caso 9– ACCIDENTES DE TRÁNSITO

COMPSEG (Compañía de Seguros) = {cuit, nomC, domi, tel}


VEHI (Vehículos) = {pat, modelo, tipo (Moto, Auto, Camioneta o Camión), cuit, cm, dni}
MARCAS = {cm, descrip}
PERS (Personas) = {dni, nom, edad, domi, tel}
ACTA = {nroActa, lugar, fecha, hora}
INVO (Involucrados) = {nroActa, pat, dni, conductor (si/no), daño (sin daño, leve, grave, o fatal)}
1. Obtenga el nombre de las compañías de Seguros que tienen asegurados todos los tipos de
vehículos.
2. Obtenga todos los datos de los vehículos que no han tenido accidentes fatales.
3. Obtenga el nombre de las personas que tienen asegurados todos los vehículos en la misma
compañía.
4. Obtenga la patente de los autos involucrados en choques, en los que viajaba solamente el
conductor (es decir, no tenía acompañantes).
5. Obtenga todos los datos de las personas que han chocado manejando su propio vehículo.
6. Obtenga las personas (dni y nombre) que poseen más de un vehículo asegurado en la misma
compañía de Seguros.
7. Obtenga las personas (dni y nombre) que estuvieron involucradas en accidentes con daño “leve”
y también estuvieron involucradas en accidentes sin daño.
8. Inserte nuevas Personas con los siguientes datos:
< 14895399, Ruiz Mathías, 34, Hipólito Irigoyen 528, 4222935 >

< 24835599, González Emiliano, 56, Av. Central 128 -O-, 4229115 >

9. Actualice el teléfono y el domicilio de la persona González Emiliano por el número 4312548 y el


domicilio Juan Jufre 345 -N-.
10. Especifique una Vista llamada AccidentesLeves que contenga los siguientes atributos: dni y
nombre. La vista deberá obtener las personas que estuvieron involucradas en accidentes con
daño “leve”.