Ejercicios SQL v3 (1)

EJERCICIOS TALLER DE BASE DE DATOS MODELO A CONSTRUIR, generar la siguiente base de datos: Tablas a implementar, con sus

Views 250 Downloads 5 File size 195KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

EJERCICIOS TALLER DE BASE DE DATOS MODELO A CONSTRUIR, generar la siguiente base de datos: Tablas a implementar, con sus respectivos campos y definiciones asociadas.     

Alumnos: identificador del alumno, nombre y apellidos del alumno, edad y sexo del alumno, año de ingreso y carrera del alumno. Asignatura: identificador y descripción de la asignatura, cantidad de horas y carrera de la asignatura. Docente: identificador del docente, nombre y apellidos del docente y año de ingreso del docente. Carrera: identificador y descripción de la carrera. Notas: identificadores del alumno, asignatura y docente, nota final y semestre de la evaluación.

RESOLVER 1. Construir la instrucción de creación de cada tabla. 2. Construir los scripts de inserción de 5 registros para cada tabla. 3. Mostrar el nombre y apellido de las alumnas la carrera de Analista Programador que tienen entre 20 y 25 años. 4. Informar cuantos hombres cursan la carrera de Redes y Telecomunicaciones. 5. Subir 2 décimas a todas las alumnas que cursen las asignaturas del docente Albert Einstein. 6. Cuantos alumnos hay en cada carrera. Además, cuantos alumnos hombres y mujeres hay en cada carrera. 7. Que promedio de notas tienen los alumnos de Programación II con el docente Isaac Newton. 8. Eliminar la nota más baja del o los alumnos hombres en la asignatura de Taller de Base de Datos. 9. Cuál es la mejor nota en la carrera de Ingeniería Informática. 10. Que alumno (nombre y apellidos) tiene la peor nota en la asignatura de Ingeniería de Software. 11. Indicar cuantos hombres cuyo nombre empieza con la letra D, cursan la carrera de Administración de Redes. 12. Bajar en un 10% la nota de los hombres de la asignatura de Programación de Base de Datos. 13. Crear un función que entregue la cantidad de alumnos hombres o mujeres que cursan una carrera específica. Luego haga un bloque para imprimir el resultado. 14. Crear un procedimiento almacenado que permita bajar la nota a los alumnos de cualquier asignatura y nos informe cuantos alumnos fueron afectados. Luego haga un bloque para ejecutar el procedimiento.

DESARROLLO

1.- Script de Creación de tablas. create table CARRERA ( ID_CARRERA INT primary key, DESC_CARRERA CHAR(40) ); create table DOCENTE ( ID_DOCENTE INT primary key, NOM_DOCENTE CHAR(50), APE_DOCENTE CHAR(100), INGRESO_DOCENTE INT ); create table ALUMNO ( ID_ALUMNO INT primary key, NOM_ALUMNO CHAR(50), APE_ALUMNO CHAR(100), EDAD_ALUMNO INT, SEXO_ALUMNO CHAR(1), INGRESO_ALUMNO INT, ID_CARRERA INT, constraint FK_ALUMNO foreign key (ID_CARRERA) references CARRERA ); create table ASIGNATURA ( ID_ASIG INT primary key, DESC_ASIG CHAR(80), HORAS_ASIG INT, ID_CARRERA INT, constraint FK_ASIG foreign key (ID_CARRERA) references CARRERA ); create table NOTAS ( ID_ALUMNO INT, ID_DOCENTE INT, ID_ASIG INT, NOTA_FINAL FLOAT, SEMESTRE CHAR(20), primary key (ID_ALUMNO, ID_DOCENTE, ID_ASIG), constraint FK_NOTA1 foreign key (ID_ALUMNO) references ALUMNO, constraint FK_NOTA2 foreign key (ID_DOCENTE) references DOCENTE, constraint FK_NOTA3 foreign key (ID_ASIG) references ASIGNATURA ); 2.- Crear registros en cada de tabla.

Tabla CARRERA insert into carrera insert into carrera insert into carrera insert into carrera insert into carrera

values values values values values

Tabla ASIGNATURA insert into asignatura insert into asignatura insert into asignatura insert into asignatura insert into asignatura insert into asignatura insert into asignatura Tabla ALUMNO insert into alumno insert into alumno insert into alumno insert into alumno insert into alumno insert into alumno insert into alumno insert into alumno insert into alumno insert into alumno insert into alumno insert into alumno Tabla DOCENTE insert into docente insert into docente insert into docente insert into docente

Tabla NOTAS insert into notas insert into notas insert into notas insert into notas

(10,'Ingenieria de Ejecucion Informatica'); (20,'Analista Programador Computacional'); (30,'Redes y Telecomunicaciones'); (40,'Tecnico en Instalaciones y Hardware'); (50,'Marketing y Publicidad');

values values values values values values values

values values values values values values values values values values values values

values values values values

(10,'Taller de Base de Datos',70,10); (20,'Programacion en JAVA',75,10); (30,'Ingenieria de Software',70,10); (40,'Programacion en .NET',75,20); (50,'Sistemas de Informacion',70,20); (60,'Topologias de Redes',70,30); (70,'Seguridad Informatica',75,30);

(10, 'Juan', 'Perez', 20, 'M', 2005, 10); (20, 'Jose', 'Pavez', 22, 'M', 2006, 10); (30, 'Luis', 'Lopez', 25, 'M', 2005, 10); (40, 'Ana', 'Pino', 20, 'F', 2008, 10); (50, 'Sara', 'Romo', 24, 'F', 2002, 10); (60, 'Luz', 'Rios', 22, 'F', 2004, 10); (70, 'David', 'Rojas', 21, 'M', 2005, 20); (80, 'Daniel', 'Soto', 26, 'M', 2005, 20); (90, 'Carla', 'Urra', 24, 'F', 2000, 20); (100, 'Lucia', 'Luco', 22, 'F', 2005, 20); (110, 'Patricia', 'Montt', 22, 'F', 2010, 20); (120, 'Susana','Ferrer', 20, 'F', 1999, 20);

(10, (20, (30, (40,

values(10, values(10, values(10, values(20,

20, 30, 40, 10,

'Isaac', 'Newton', 1993); 'Nicolas', 'Copernico', 2001); 'Alejandro', 'Fleming', 1990); 'Maria', 'Curie', 1985);

10, 20, 30, 10,

5.9, 4.5, 5.7, 4.9,

'Primavera 2013'); 'Primavera 2013'); 'Otoño 2013'); 'Primavera 2013');

insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert

into into into into into into into into into into into into into into into into into into

notas notas notas notas notas notas notas notas notas notas notas notas notas notas notas notas notas notas

values(20, values(20, values(30, values(30, values(30, values(40, values(40, values(40, values(50, values(50, values(50, values(60, values(60, values(60, values(70, values(70, values(80, values(80,

20, 30, 20, 30, 40, 10, 20, 40, 20, 30, 40, 10, 20, 40, 20, 30, 10, 20,

20, 30, 10, 20, 30, 10, 20, 30, 10, 20, 30, 10, 20, 30, 40, 50, 40, 50,

6.5, 5.3, 4.9, 6.5, 3.7, 4.9, 3.5, 3.3, 5.9, 6.0, 4.7, 4.0, 5.5, 6.3, 5.9, 6.0, 4.0, 5.5,

'Primavera 2013'); 'Otoño 2013'); 'Primavera 2013'); 'Primavera 2013'); 'Otoño 2013'); 'Primavera 2013'); 'Primavera 2013'); 'Primavera 2013'); 'Primavera 2013'); 'Primavera 2013'); 'Otoño 2013'); 'Primavera 2013'); 'Primavera 2013'); 'Primavera 2013'); 'Primavera 2013'); 'Primavera 2013'); 'Primavera 2013'); 'Primavera 2013');

3.- SQL Consulta. SELECT nom_alumno, ape_alumno FROM alumno a, carrera c WHERE a.id_carrera = c.id_carrera AND sexo_alumno = ‘F’ AND edad_alumno BETWEEN 20 AND 25 AND desc_carrera LIKE ‘Analista%’; 4.- SQL Consulta. SELECT count(*) FROM alumno a, carrera c WHERE a.id_carrera = c.id_carrera AND sexo_alumno = ‘M’ AND desc_carrera LIKE ‘Redes%’;

5.- SQL Modifica. UPDATE notas SET nota_final = nota_final + 0.2 WHERE id_alumno IN ( select id_alumno from alumno where sexo_alumno = ‘F’ )

AND id_docente IN ( select id_docente from docente where nom_docente like ‘Albert%’ and ape_docente like ‘Einstein%’ ) ;

6.- SQL Consulta. SELECT desc_carrera, COUNT(*) FROM alumno a, carrera c WHERE a.id_carrera = c.id_carrera GROUP BY desc_carrera; SELECT sexo_alumno, desc_carrera, COUNT(*) FROM alumno a, carrera c WHERE a.id_carrera = c.id_carrera GROUP BY sexo_alumno, desc_carrera;

7.- SQL Consulta. SELECT AVG(nota_final) FROM asignatura a, notas n, docente d WHERE a.id_asig = n.id_asig AND n.id_docente = d.id_docente AND desc_asig LIKE ‘Prog. II%’ AND nom_docente like ‘Isaac%’ AND ape_docente like ‘Newton%’ ) ;

8.- SQL Elimina. DELETE FROM notas WHERE id_alumno IN ( select id_alumno from alumno where sexo_alumno = ‘M’ ) AND id_asig IN ( select id_asig from docente

where desc_asig like ‘Taller BD%’ ) AND nota_final = ( select MIN(nota_final) from alumno a, notas n, asignatura g where a.id_alumno = n.id_alumno and n.id_asig = g.id_asig and sexo_alumno = ‘M’ and desc_asig like ‘Taller BD%’ ) ; 9.- SQL Consulta. SELECT MAX(nota_final) FROM notas n, asignatura a, carrera c WHERE n.id_asig = a.id_asig AND a.id_carrera = c.id_carrera AND desc_carrera LIKE ‘Ing. Inf.%’;

10.- SQL Consulta. SELECT nom_alumno, ape_alumno FROM alumno a, notas n, asignatura g WHERE a.id_alumno = n.id_alumno AND n.id_asig = g.id_asig AND desc_asig LIKE ‘Ing. SW%’ AND nota_final = ( select MIN(nota_final) from notas n, asignatura a where n.id_asig = a.id_asig and desc_asig LIKE ‘Ing. SW%’ ) ; 11.- SQL Consulta. SELECT count(*) FROM alumno a, carrera c WHERE a.id_carrera = c.id_carrera AND sexo_alumno = ‘M’ AND nom_alumno LIKE ‘D%’ AND desc_carrera LIKE ‘Adm. Redes%’; 12.- SQL Modifica. UPDATE notas SET nota_final = nota_final * 0.9 WHERE id_alumno IN ( select id_alumno from alumno where sexo_alumno = ‘M’ ) AND id_asig IN ( select id_asig from asignatura where desc_asig like ‘Prog. BD%’ ) ;

FINAL!!!! Asignatura Función: Cantidad de alumnos de la asignatura Parametro de entrada: Id asignatura Salidas: Cantidad de alumnos que tiene cada asignatura. Si no existe, -1. Si no tiene alumnos, -2 1 procedimiento para crear, borrar y actualizar un registro. Usar secuence manejar excepciones. Si id asignatura !=número