0% encontró este documento útil (0 votos)
5 vistas3 páginas

Proyecto SQL: Gestión de Biblioteca

Cargado por

vixmois2
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
5 vistas3 páginas

Proyecto SQL: Gestión de Biblioteca

Cargado por

vixmois2
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

PROYECTO FINAL – SQL BASICO

DIAGRAMA RELACIONAL (ETAPA 1)

ETAPA 2:
CREATE TABLE Usuario (
ID_usuario INT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
direccion VARCHAR(200),
telefono VARCHAR(15),
correo_electronico VARCHAR(100) UNIQUE NOT NULL
);

CREATE TABLE Autor (


ID_autor INT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
nacionalidad VARCHAR(100)
);

CREATE TABLE Libro (


ID_libro INT PRIMARY KEY,
titulo VARCHAR(200) NOT NULL,
ID_autor INT,
genero VARCHAR(100),
año_publicacion INT,
copias_disponibles INT NOT NULL CHECK (copias_disponibles >= 0),
CONSTRAINT FK_Autor FOREIGN KEY (ID_autor) REFERENCES Autor(ID_autor)
);

CREATE TABLE Prestamo (


ID_usuario INT,
ID_libro INT,
fecha_prestamo DATE NOT NULL,
fecha_devolucion DATE,
PRIMARY KEY (ID_usuario, ID_libro),
CONSTRAINT FK_Usuario FOREIGN KEY (ID_usuario) REFERENCES
Usuario(ID_usuario),
CONSTRAINT FK_Libro FOREIGN KEY (ID_libro) REFERENCES Libro(ID_libro)
);

ETAPA 3:
INSERT INTO Usuario (ID_usuario, nombre, direccion, telefono,
correo_electronico) VALUES
(1, 'Juan Pérez', 'Av. Siempre Viva 123', '555-1234', '[Link]@[Link]'),
(2, 'Ana Gómez', 'Calle Falsa 456', '555-5678', '[Link]@[Link]'),
(3, 'Carlos Ruiz', 'Av. Reforma 789', '555-9876', '[Link]@[Link]'),
(4, 'Lucía Fernández', 'Blvd. Central 101', '555-8765',
'[Link]@[Link]'),
(5, 'Miguel López', 'Calle Principal 102', '555-3456',
'[Link]@[Link]'),
(6, 'Sofía García', 'Plaza Mayor 103', '555-6543', '[Link]@[Link]'),
(7, 'Pedro Ramírez', 'Av. Las Flores 104', '555-7654',
'[Link]@[Link]'),
(8, 'Elena Torres', 'Calle Larga 105', '555-4567', '[Link]@[Link]'),
(9, 'Diego Jiménez', 'Av. Norte 106', '555-8764', '[Link]@[Link]'),
(10, 'María Castillo', 'Calle Sur 107', '555-2345',
'[Link]@[Link]');

INSERT INTO Autor (ID_autor, nombre, nacionalidad) VALUES


(1, 'Gabriel García Márquez', 'Colombiana'),
(2, 'Isabel Allende', 'Chilena'),
(3, 'J.K. Rowling', 'Británica'),
(4, 'Haruki Murakami', 'Japonesa'),
(5, 'Jorge Luis Borges', 'Argentina'),
(6, 'Julio Cortázar', 'Argentina'),
(7, 'Paulo Coelho', 'Brasileña'),
(8, 'Mario Vargas Llosa', 'Peruana'),
(9, 'Stephen King', 'Estadounidense'),
(10, 'Umberto Eco', 'Italiana');

INSERT INTO Libro (ID_libro, titulo, ID_autor, genero, año_publicacion,


copias_disponibles) VALUES
(1, 'Cien Años de Soledad', 1, 'Ficción', 1967, 5),
(2, 'La Casa de los Espíritus', 2, 'Ficción', 1982, 4),
(3, 'Harry Potter y la Piedra Filosofal', 3, 'Fantasía', 1997, 10),
(4, 'Kafka en la Orilla', 4, 'Ficción', 2002, 3),
(5, 'El Aleph', 5, 'Ficción', 1949, 2),
(6, 'Rayuela', 6, 'Ficción', 1963, 4),
(7, 'El Alquimista', 7, 'Ficción', 1988, 7),
(8, 'La Ciudad y los Perros', 8, 'Ficción', 1963, 6),
(9, 'It', 9, 'Terror', 1986, 8),
(10, 'El Nombre de la Rosa', 10, 'Misterio', 1980, 5);

INSERT INTO Prestamo (ID_usuario, ID_libro, fecha_prestamo, fecha_devolucion)


VALUES
(1, 1, '2024-09-01', NULL),
(2, 3, '2024-09-02', '2024-09-10'),
(3, 5, '2024-08-25', '2024-09-05'),
(4, 7, '2024-09-03', NULL),
(5, 9, '2024-09-01', NULL),
(6, 2, '2024-08-30', '2024-09-07'),
(7, 4, '2024-09-04', NULL),
(8, 6, '2024-09-01', NULL),
(9, 8, '2024-08-20', '2024-08-30'),
(10, 10, '2024-09-05', NULL);

ETAPA 4:
--1. Obtener todos los libros disponibles en la biblioteca
SELECT titulo, copias_disponibles
FROM Libro
WHERE copias_disponibles > 0;

--2. Obtener el libro con más copias disponibles


SELECT TOP 1 titulo, copias_disponibles
FROM Libro
ORDER BY copias_disponibles DESC;

--3. Obtener el libro con menos copias disponibles


SELECT TOP 1 titulo, copias_disponibles
FROM Libro
ORDER BY copias_disponibles ASC;

--4. Calcular el promedio de años de publicación de todos los libros


SELECT AVG(año_publicacion) AS promedio_año_publicacion
FROM Libro;

--5. Obtener los libros cuyo título empieza con la letra 'C'
SELECT titulo
FROM Libro
WHERE titulo LIKE 'C%';

--6. Obtener el nombre de los autores con una longitud de nombre mayor a 15
caracteres
SELECT nombre
FROM Autor
WHERE LEN(nombre) > 15;

--7. Mostrar los títulos de los libros que contienen la palabra 'mágico'
SELECT titulo
FROM Libro
WHERE titulo LIKE '%mágico%';

--8. Obtener el libro más antiguo en la colección


SELECT TOP 1 titulo, año_publicacion
FROM Libro
ORDER BY año_publicacion ASC

--9. Obtener el libro más reciente en la colección


SELECT TOP 1 titulo, año_publicacion
FROM Libro
ORDER BY año_publicacion DESC

--10. Obtener el promedio de copias disponibles por libro


SELECT AVG(copias_disponibles) AS promedio_copias_disponibles
FROM Libro;

También podría gustarte