La base de datos se llama «Biblioteca» y tiene dos tablas: «Libros» y «Prestamos».
La tabla «Libros» contiene información sobre los libros en la biblioteca, mientras que la tabla «Prestamos» contiene información sobre los préstamos realizados por los usuarios.
LIBROS
PRESTAMOS
CREATE TABLE Libros ( IDLibro INT PRIMARY KEY, Titulo VARCHAR(50), Autor VARCHAR(50), Genero VARCHAR(50), Editorial VARCHAR(50) ); CREATE TABLE Prestamos ( IDPrestamo INT PRIMARY KEY, IDLibro INT, FechaPrestamo DATE, FechaDevolucion DATE, Usuario VARCHAR(50), FOREIGN KEY (IDLibro) REFERENCES Libros(IDLibro) ); INSERT INTO Libros VALUES (1, 'El Aleph', 'Jorge Luis Borges', 'Ficción', 'Emecé Editores'), (2, 'Cien años de soledad', 'Gabriel García Márquez', 'Ficción', 'Sudamericana'), (3, 'La casa de los espíritus', 'Isabel Allende', 'Ficción', 'Plaza & Janés'), (4, 'El Quijote', 'Miguel de Cervantes', 'Ficción', 'Real Academia Española'); INSERT INTO Prestamos VALUES (1, 1, '2022-01-01', '2022-02-01', 'Juan'), (2, 2, '2022-02-01', '2022-03-01', 'María'), (3, 3, '2022-03-01', '2022-04-01', 'Luis'), (4, 4, '2022-04-01', '2022-05-01', 'Ana');
SELECT * FROM Prestamos WHERE Usuario = 'Juan';
Mostrar los libros que están siendo prestados actualmente.
SELECT Libros.Titulo, Prestamos.FechaDevolucion FROM Libros INNER JOIN Prestamos ON Libros.IDLibro = Prestamos.IDLibro WHERE Prestamos.FechaDevolucion > CURDATE();
Actualizar la fecha de devolución de un préstamo específico.
UPDATE Prestamos SET FechaDevolucion = '2022-06-01' WHERE IDPrestamo = 1;
Borrar un libro y todos los préstamos asociados.
DELETE FROM Prestamos WHERE IDLibro = 2; DELETE FROM Libros WHERE IDLibro = 2;
Seleccionar todos los préstamos realizados en un rango de fechas específico:
SELECT * FROM Prestamos WHERE FechaPrestamo BETWEEN '2022-02-01' AND '2022-04-01';
Seleccionar el número total de préstamos realizados en un rango de fechas específico.
SELECT Usuario, COUNT(*) AS NumeroPrestamos FROM Prestamos GROUP BY Usuario;
Seleccionar los libros que nunca han sido prestados.
SELECT Libros.Titulo, Libros.Autor FROM Libros LEFT JOIN Prestamos ON Libros.IDLibro = Prestamos.IDLibro WHERE Prestamos.IDPrestamo IS NULL;
Selecciona los libros que han sido prestados más veces.
SELECT Libros.Titulo, COUNT(*) AS NumeroPrestamos FROM Libros INNER JOIN Prestamos ON Libros.IDLibro = Prestamos.IDLibro GROUP BY Libros.IDLibro ORDER BY NumeroPrestamos DESC;
Selecciona los usuarios que han prestado más de 2 libros.
SELECT Usuario, COUNT(*) AS NumeroPrestamos FROM Prestamos GROUP BY Usuario HAVING COUNT(*) > 2;