Está en la página 1de 14

PARCIAL 2do CORTE DE BASE DE DATOS

ESTUDIANTE: KEILER CAMILO TORRENTE PATRON


CODIGO: 0221620008
PROFESOR: DAVID FRANCO

Teniendo en cuenta el diagrama anterior, realizar las instrucciones SQL para la creación de las tablas

y sus relaciones, e insertar datos de pruebas en todas las tablas.

Además, se deben realizar las instrucciones SQL para:

1) Listar Id y título del libro, nombre de los autores del libro que más se presta. Ordenarlo

ascendentemente por el título del libro y luego por el nombre de los autores.

2) Listar Id y nombre del estudiante que más presta libros. Ordenarlo ascendentemente por el

nombre de los estudiantes.

3) Listar Id y título de los libros indicando la cantidad de veces que se ha prestado, pero que se

hayan prestado más de 50 veces. Ordenar de manera descendente por cantidad de veces que

se ha prestado.

4) Listar el Id y nombre de autor(es), y cantidad de veces consultado. Ordenar de manera

descendente por la cantidad de veces consultado.

5) Listar el id y título de los libros que nunca se han prestado. Ordenar de manera ascendente por

el título del libro.


SOLUCION
--primero se crean las tablas (Libro, Prestamo, LibAut, Autor, Estudiante)
create table Libro(
IdLibro int primary key,
Titulo character(100),
Editorial character(100),
Area character(100))

create table Prestamo(


IdLector int,
Foreign key(IdLector) References Estudiante(IdLector),
IdLibro int,
Foreign key(IdLibro) References Libro(IdLibro),
FechaPrestamo char(8),
FechaDevolución char(8),
Devuelto char(8))

create table LibAut(


IdAutor int,
foreign key(IdAutor) References Autor(IdAutor),
IdLibro int,
foreign key(IdLibro) References Libro(IdLibro)
)

create table Autor (


IdAutor int primary key,
Nombre character(100),
Nacionalidad character(30)
)
create table Estudiante(
IdLector int primary key,
CI character(20) not null,
Nombre character(100) not null,
Direccíon character(100) not null,
Carrera character(60) not null,
Edad int not null
)

--Segundo insertamos valores a las tablas


--tabla prestamo
INSERT INTO Prestamo VALUES(3,1,'25/03/12','10/04/12','NO');
INSERT INTO Prestamo VALUES(2,3,'03/02/13','20/02/13','22/02/13');
INSERT INTO Prestamo VALUES(5,2,'18/02/13','30/02/13','25/02/13');
INSERT INTO Prestamo VALUES(6,5,'21/02/13','03/03/13','05/03/13');
INSERT INTO Prestamo VALUES(12,9,'21/02/99','05/03/13','30/02/13');
INSERT INTO Prestamo VALUES(4,2,'26/02/13','07/03/13','01/03/13');
INSERT INTO Prestamo VALUES(3,4,'30/02/13','07/03/13','08/03/13');
INSERT INTO Prestamo VALUES(1,1,'01/03/12','10/04/12','NO');
INSERT INTO Prestamo VALUES(6,3,'03/03/13','09/03/13','09/03/13');
INSERT INTO Prestamo VALUES(3,7,'03/03/13','18/03/13','15/03/13');
INSERT INTO Prestamo VALUES(2,3,'05/03/13','22/03/13','20/03/13');
INSERT INTO Prestamo VALUES(4,1,'03/04/13','15/04/13','NO');
INSERT INTO Prestamo VALUES(2,6,'28/03/13','24/03/13','NO');
INSERT INTO Prestamo VALUES(1,7,'12/03/13','24/03/13','20/03/13');
INSERT INTO Prestamo VALUES(12,2,'18/03/13','03/04/13','02/04/13');

--tabla autor
INSERT INTO Autor VALUES(1,'miguel de cervantes','españa');
INSERT INTO Autor VALUES(2,'miguel de cervantes','españa');
INSERT INTO Autor VALUES(3,'william faulkner','usa');
INSERT INTO Autor VALUES(4,'antoine saint-exupery','francia');
INSERT INTO Autor VALUES(5,'maquiavelo','italia');
INSERT INTO Autor VALUES(6,'henry kissinger','alemania');
INSERT INTO Autor VALUES(7,'kitty kelley','gran bretaña');
INSERT INTO Autor VALUES(8,'pu-yi','china');
INSERT INTO Autor VALUES(9,'perez galdos','españa');
INSERT INTO Autor VALUES(10,'jose manuel alarco aguin','españa');
INSERT INTO Autor VALUES(11,'federico g rudolph','españa');
INSERT INTO Autor VALUES(12,'guillermo cicileo','argentina');
INSERT INTO Autor VALUES(13,'uña, isaias; san martin, jesus','españa');
INSERT INTO Autor VALUES(14,'lopez, francisco; maldonado, saturnino; rusa,
manuel','españa');
INSERT INTO Autor VALUES(15,'mario benedetti','uruguay');

--tabla libaut
INSERT INTO LibAut VALUES(1,1);
INSERT INTO LibAut VALUES(2,2);
INSERT INTO LibAut VALUES(3,3);
INSERT INTO LibAut VALUES(4,4);
INSERT INTO LibAut VALUES(5,5);
INSERT INTO LibAut VALUES(6,6);
INSERT INTO LibAut VALUES(7,7);
INSERT INTO LibAut VALUES(8,8);
INSERT INTO LibAut VALUES(9,9);
INSERT INTO LibAut VALUES(10,10);
INSERT INTO LibAut VALUES(11,12);
INSERT INTO LibAut VALUES(12,12);
INSERT INTO LibAut VALUES(13,13);
INSERT INTO LibAut VALUES(14,14);
INSERT INTO LibAut VALUES(15,15);

--tabla libro
INSERT INTO Libro VALUES(1,'don quijote de la mancha
I','anaya','caballeresco');
INSERT INTO Libro VALUES(2,'don quijote de la mancha
II','anaya','caballeresco');
INSERT INTO Libro VALUES(3,'historias de nueva
orleans','alfaguara','novela');
INSERT INTO Libro VALUES(4,'el principito','andina','aventura');
INSERT INTO Libro VALUES(5,'el principe','S.M.','politico');
INSERT INTO Libro VALUES(6,'diplomacia','S.M.','politico');
INSERT INTO Libro VALUES(7,'los windsor','plaza y janes','biografia');
INSERT INTO Libro VALUES(8,'el ultimo
emperador','caralt','autobiografia');
INSERT INTO Libro VALUES(9,'fortunata y jacinta','plaza y
janes','novela');
INSERT INTO Libro VALUES(10,'programacion web con visual studio','krasis
press','informatica');
INSERT INTO Libro VALUES(11,'introduccion a visual
studio','bubok','informatica');
INSERT INTO Libro VALUES(12,'IPv6 para todos','capitulo
argentino','internet');
INSERT INTO Libro VALUES(13,'calculo en una
variable','alfaomega','ciencia');
INSERT INTO Libro VALUES(14,'analisis de cicuitos
lineales','alfaomega','electrica');
INSERT INTO Libro VALUES(15,'la tregua','sudamericana','ficcion y
literatura');
INSERT INTO Libro VALUES(16,'la tregua 2','sudamericana 2','ficcion y
literatura 2');
INSERT INTO Libro VALUES(17,'keiler 2','sudamericana 2','ficcion y
literatura 2');
INSERT INTO Libro VALUES(18,'keiler 3','sudamericana 2','ficcion y
literatura 2');
--tabla estudiantes
INSERT INTO Estudiante VALUES(1,'47.159','ines maza','escaleritas
12','contaduria','21');
INSERT INTO Estudiante VALUES(2,'48.951','jose melendez','lopez
51','sistemas','22');
INSERT INTO Estudiante VALUES(3,'49.753','miguel perez','via
71','alimentos','23');
INSERT INTO Estudiante VALUES(4,'51.258','eva morales','baroja
23','medicina','20');
INSERT INTO Estudiante VALUES(5,'52.852','yolanda lozano','el cid
45','politica','21');
INSERT INTO Estudiante VALUES(6,'56.853','juan lopez','jaime
1','administracion','23');
INSERT INTO Estudiante VALUES(7,'41.521','luisa lopez','clavijero
101','informatica','24');
INSERT INTO Estudiante VALUES(8,'46.264','anlesmo menendez','poniente
118','sistemas','21');
INSERT INTO Estudiante VALUES(9,'55.257','gudencio noriega','rosas
604','arquitecto','22');
INSERT INTO Estudiante VALUES(10,'41.742','genaron lozano','oriente
1009','informatica','24');
INSERT INTO Estudiante VALUES (11,'35.751','artemio
armesto','coyoacan','politica','24');
INSERT INTO Estudiante VALUES (12,'31.123','raul valdez','sur
522','criminalistica','25');
INSERT INTO Estudiante VALUES (13,'39.963','carlos arias','oriente
7','derecho','26');
INSERT INTO Estudiante VALUES(14,'75.456','juan anaya','oriente
212','fisica','18');
INSERT INTO Estudiante VALUES(15,'53.917','gabriela
alvarez','coyoacan','quimica','20');
--CONSULTAMOS LAS TABLAS
SELECT * FROM LIBRO

SELECT * FROM AUTOR


SELECT * FROM ESTUDIANTE

SELECT * FROM LIBAUT


SELECT * FROM PRESTAMO
 COMENZAMOS CON LAS CONSULTAS PROPUESTAS

--punto 1: Listar Id y título del libro, nombre de los autores del libro
que más se presta. Ordenarlo ascendentemente por el título del libro y
luego por el nombre de los autores.

select Libaut.IdLibro, Titulo, nombre, count(nombre) from Libro,


autor,libaut
inner join prestamo on Libaut.IdLibro = prestamo.Idlibro
WHERE autor.IDautor = libaut.idautor and libro.idlibro = libaut.idlibro
GROUP BY libaut.IDLIBRO, titulo, nombre
order by Titulo ASC, nombre;
--punto 2: Listar Id y nombre del estudiante que más presta libros.
Ordenarlo ascendentemente por el nombre de los estudiantes.

SELECT Prestamo.IDLECTOR, NOMBRE, COUNT (Prestamo.IDLECTOR) AS CANTIDAD


FROM Prestamo, ESTUDIANTE
WHERE Prestamo.IDLECTOR = ESTUDIANTE.IDLECTOR
GROUP BY Prestamo.IDLECTOR, NOMBRE
ORDER BY ESTUDIANTE.NOMBRE ASC
--punto 3: Listar Id y título de los libros indicando la cantidad de veces
que se ha prestado, pero que se hayan prestado más de 50 veces. Ordenar de
manera descendente por cantidad de veces que se ha prestado.

SELECT Libro.IdLibro, Titulo, COUNT (Prestamo.IdLibro) AS CANTIDAD FROM


Libro, Prestamo
WHERE Libro.IdLibro = Prestamo.IdLibro
GROUP BY Libro.IdLibro, Titulo
HAVING COUNT (Prestamo.IdLibro) > 50
ORDER BY CANTIDAD DESC
--NOTA: profesor en este punto solo busque los libros que se hayan prestado
más de dos veces, si usted desde puede probarlo con los libros que se
presten más de 50 veces
--punto 4: Listar el Id y nombre de autor(es), y cantidad de veces
consultado. Ordenar de manera descendente por la cantidad de veces
consultado.

Select Autor.IdAutor, Nombre, COUNT(Nombre) AS CANTIDAD FROM Autor, LibAut


RIGHT JOIN Prestamo ON LibAut.IdLibro = Prestamo.IdLibro
WHERE Autor.IdAutor = LibAut.IdAutor
GROUP BY Autor.IdAutor, Nombre
ORDER BY CANTIDAD DESC
--punto 5: Listar el id y título de los libros que nunca se han prestado.
Ordenar de manera ascendente por el título del libro.

select Libro.IdLibro, Titulo from Libro


left join PRESTAMO on Libro.IdLibro = PRESTAMO.IDLIBRO
where prestamo.IdLibro is null
order by Titulo;

También podría gustarte