Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Ejemplo de creación y manipulación de una base de datos SQL: Biblioteca, Ejercicios de Programación de Bases de Datos

En este documento se presenta un ejemplo práctico de cómo crear y manipular una base de datos SQL utilizando el lenguaje de consultas Structured Query Language (SQL). Se crean tablas para almacenar datos de estudiantes y libros, se realizan operaciones CRUD (Create, Read, Update, Delete) y se ejecutan consultas para recuperar información. El ejemplo utiliza la base de datos 'BIBLIOTECA3'.

Tipo: Ejercicios

2020/2021

Subido el 01/05/2022

matiasramirez
matiasramirez 🇧🇴

1 documento

1 / 6

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
--DDL
--Escribir los comandos para crear la base de datos
CREATE DATABASE BIBLIOTECA3
--Escribir los comandos para crear las tablas
CREATE TABLE estudiante (
id_estudiante VARCHAR (8) NOT NULL,
nombre_estudiante VARCHAR (30) NOT NULL,
libros_deudor Tinyint NOT NULL DEFAULT '0',
CONSTRAINT pk_estudiante PRIMARY KEY (id_estudiante)
)
CREATE TABLE libro (
id_libro VARCHAR (8) NOT NULL,
titulo_libro VARCHAR (30) NOT NULL,
libros_disponibles Tinyint NOT NULL DEFAULT '0',
CONSTRAINT pk_libro PRIMARY KEY (id_libro),
CONSTRAINT ck_libros_disponibles CHECK (libros_disponibles =0 or
libros_disponibles =1)
)
CREATE TABLE prestamo (
id_prestamo VARCHAR (8) NOT NULL,
fecha_prestamo DATE DEFAULT getdate() NOT NULL,
id_estudiante VARCHAR (8) NOT NULL,
id_libro VARCHAR (8) NOT NULL,
fecha_devolucion DATE ,
CONSTRAINT pk_prestamo
PRIMARY KEY (id_prestamo),
CONSTRAINT fk_libro_prestamo
FOREIGN KEY (id_libro) REFERENCES libro (id_libro),
CONSTRAINT fk_estudiante_prestamo
FOREIGN KEY (id_estudiante) REFERENCES estudiante (id_estudiante),
CONSTRAINT ck_fechas CHECK (fecha_devolucion>=fecha_prestamo)
)
--Escriba un comando que borre la llave foránea de préstamo con libro.
ALTER TABLE prestamo DROP CONSTRAINT fk_libro_prestamo
--Escriba el comando que adicione el constraint de llave foránea de
préstamo con libro.
ALTER TABLE prestamo add CONSTRAINT fk_libro_prestamo
FOREIGN KEY (id_libro) REFERENCES libro (id_libro)
--Escriba el comando que cambie la extensión
--del nombre del libro a 30 caracteres.
ALTER TABLE libro ALTER COLUMN titulo_libro varchar(30) NOT NULL ;
--Escriba el comando que borre la columna libros_deudor
ALTER TABLE estudiante DROP CONSTRAINT DF__estudiant__libro__37A5467C
ALTER TABLE estudiante DROP COLUMN libros_deudor
--Escriba el comando que adicione la coluna libros_deudor
pf3
pf4
pf5

Vista previa parcial del texto

¡Descarga Ejemplo de creación y manipulación de una base de datos SQL: Biblioteca y más Ejercicios en PDF de Programación de Bases de Datos solo en Docsity!

--DDL

--Escribir los comandos para crear la base de datos CREATE DATABASE BIBLIOTECA --Escribir los comandos para crear las tablas CREATE TABLE estudiante ( id_estudiante VARCHAR ( 8 ) NOT NULL, nombre_estudiante VARCHAR ( 30 ) NOT NULL, libros_deudor Tinyint NOT NULL DEFAULT '0', CONSTRAINT pk_estudiante PRIMARY KEY (id_estudiante) ) CREATE TABLE libro ( id_libro VARCHAR ( 8 ) NOT NULL, titulo_libro VARCHAR ( 30 ) NOT NULL, libros_disponibles Tinyint NOT NULL DEFAULT '0', CONSTRAINT pk_libro PRIMARY KEY (id_libro), CONSTRAINT ck_libros_disponibles CHECK (libros_disponibles = 0 or libros_disponibles = 1 ) ) CREATE TABLE prestamo ( id_prestamo VARCHAR ( 8 ) NOT NULL, fecha_prestamo DATE DEFAULT getdate() NOT NULL, id_estudiante VARCHAR ( 8 ) NOT NULL, id_libro VARCHAR ( 8 ) NOT NULL, fecha_devolucion DATE , CONSTRAINT pk_prestamo PRIMARY KEY (id_prestamo), CONSTRAINT fk_libro_prestamo FOREIGN KEY (id_libro) REFERENCES libro (id_libro), CONSTRAINT fk_estudiante_prestamo FOREIGN KEY (id_estudiante) REFERENCES estudiante (id_estudiante), CONSTRAINT ck_fechas CHECK (fecha_devolucion>=fecha_prestamo) ) --Escriba un comando que borre la llave foránea de préstamo con libro. ALTER TABLE prestamo DROP CONSTRAINT fk_libro_prestamo --Escriba el comando que adicione el constraint de llave foránea de préstamo con libro. ALTER TABLE prestamo add CONSTRAINT fk_libro_prestamo FOREIGN KEY (id_libro) REFERENCES libro (id_libro) --Escriba el comando que cambie la extensión --del nombre del libro a 30 caracteres. ALTER TABLE libro ALTER COLUMN titulo_libro varchar( 30 ) NOT NULL ; --Escriba el comando que borre la columna libros_deudor ALTER TABLE estudiante DROP CONSTRAINT DF__estudiant__libro__37A5467C ALTER TABLE estudiante DROP COLUMN libros_deudor --Escriba el comando que adicione la coluna libros_deudor

ALTER TABLE estudiante ADD CONSTRAINT DF__estudiant__libro__37A5467C --Escriba el comando para borrar la tabla préstamo --Drop table prestamo --DML (escribir comando para responder a cada punto) --Ingrese los datos de 10 personas INSERT INTO estudiante VALUES ('est-000','Pedro Antonio Flores', 0 ) INSERT INTO estudiante VALUES ('est-001','Jose Marco Panfilo', 0 ) INSERT INTO estudiante VALUES ('est-002','Manuel Edgar Aban', 0 ) INSERT INTO estudiante VALUES ('est-003','Almagro Mauricio', 0 ) INSERT INTO estudiante VALUES ('est-004','Samuel San Miguel', 0 ) INSERT INTO estudiante VALUES ('est-005','Cayetano Ortega', 0 ) INSERT INTO estudiante VALUES ('est-006','Pedro Antonio Tejedor', 0 ) INSERT INTO estudiante VALUES ('est-007','Rodrigo Aguirre', 0 ) INSERT INTO estudiante VALUES ('est-008','Melchor Tejera', 0 ) INSERT INTO estudiante VALUES ('est-009','Manuel Antonio Campoy', 0 ) --Ingrese los datos de 10 libros INSERT INTO libro VALUES ('lib-000','Las mil y una noches', 1 ) INSERT INTO libro VALUES ('lib-001','Divina comedia', 1 ) INSERT INTO libro VALUES ('lib-002','Ficciones', 1 ) INSERT INTO libro VALUES ('lib-003','Don Quijote de la Mancha', 0 ) INSERT INTO libro VALUES ('lib-004','Relatos cortos', 1 ) INSERT INTO libro VALUES ('lib-005','Los hermanos Karamazov', 0 ) INSERT INTO libro VALUES ('lib-006','Romancero gitano', 1 ) INSERT INTO libro VALUES ('lib-007','El tambor de hojalata', 1 ) INSERT INTO libro VALUES ('lib-008','Ulises', 1 ) INSERT INTO libro VALUES ('lib-009','Edipo rey', 0 )

values ('pres-005','est-001','lib-005') COMMIT TRANSACTION BEGIN TRANSACTION UPDATE libro SET libros_disponibles = 0 WHERE id_libro ='lib-006' UPDATE estudiante SET libros_deudor= libros_deudor+ 1 WHERE id_estudiante='est-002' INSERT INTO prestamo (id_prestamo,id_estudiante,id_libro) values ('pres-006','est-002','lib-006') COMMIT TRANSACTION BEGIN TRANSACTION UPDATE libro SET libros_disponibles = 0 WHERE id_libro ='lib-007' UPDATE estudiante SET libros_deudor= libros_deudor+ 1 WHERE id_estudiante='est-002' INSERT INTO prestamo (id_prestamo,id_estudiante,id_libro) values ('pres-007','est-002','lib-007') COMMIT TRANSACTION select * from prestamo --Registre 3 devoluciones --Mediante una transacción BEGIN TRANSACTION --Colocar el libro en disponible UPDATE libro SET libros_disponibles= 1 WHERE id_libro ='lib-000' --Decrementar el numero de libros adeudados por el estudiante (libros deudor) UPDATE estudiante SET libros_deudor =libros_deudor- 1 WHERE id_estudiante='est-000' --Registrar la fecha de devolución UPDATE prestamo SET fecha_devolucion='2021-11-09' WHERE id_libro='lib- 000' and id_estudiante='est-000' COMMIT TRANSACTION BEGIN TRANSACTION UPDATE libro SET libros_disponibles= 1 WHERE id_libro ='lib-002' UPDATE estudiante SET libros_deudor =libros_deudor- 1 WHERE id_estudiante='est-002' UPDATE prestamo SET fecha_devolucion='2021-11-11' WHERE id_libro='lib- 002' and id_estudiante='est-002' COMMIT TRANSACTION BEGIN TRANSACTION UPDATE libro SET libros_disponibles= 1 WHERE id_libro ='lib-004' UPDATE estudiante SET libros_deudor =libros_deudor- 1 WHERE id_estudiante='est-004'

UPDATE prestamo SET fecha_devolucion='2021-11-12' WHERE id_libro='lib- 004' and id_estudiante='est-004' COMMIT TRANSACTION --CONSULTAS Y PROCESAMIENTOS --Liste los libros que están disponibles SELECT * FROM libro WHERE libros_disponibles= 1 --Muestre a los estudiantes que son deudores SELECT * FROM estudiante WHERE libros_deudor>= 0 --Muestre el código del libro y cuantas veces ha sido prestado SELECT id_libro ,count(id_libro) FROM libro GROUP BY (id_libro) --Muestre el libro mas leído SELECT id_libro ,count (id_libro) FROM prestamo GROUP BY id_libro ORDER BY count (id_libro) desc --Muestre los datos del estudiante que nunca --se prestó un libro ( que no conoce la biblioteca) SELECT * FROM estudiante E where NOT EXISTS (SELECT * FROM prestamo P WHERE E.id_estudiante=P.id_estudiante) --Muestre el número de prestamos por cada fecha SELECT fecha_prestamo ,count(fecha_prestamo) from prestamo GROUP BY (fecha_prestamo) --Muestre el número de prestamos por cada fecha, --no mostrar aquellos días que tienen 1 préstamo o menos SELECT fecha_prestamo ,count(fecha_prestamo) from prestamo GROUP BY (fecha_prestamo) HAVING COUNT(fecha_prestamo)<= 1 --Muestre los datos d ellos estudiantes que su --nombre comienza con F y no tiene a. (LIKE) SELECT * FROM estudiante WHERE nombre_estudiante like 'F%' AND nombre_estudiante NOT like '%a%' --Muestre el estudiante que se prestó al menos --un libro de los que leyó Sandro Nieto SELECT id_estudiante FROM prestamo WHERE id_estudiante = ANY ( SELECT id_libro FROM prestamo p WHERE id_estudiante =(SELECT id_estudiante from estudiante where nombre_estudiante='Sandro Nieto')) --Muestre el estudiante que se prestó todos los libros que leyó Sandro Nieto