Sei sulla pagina 1di 5

Metodología de Desarrollo de Sistemas I

Guía de aprendizaje 6.3

Unidad 6 - Modelado y Persistencias de Datos


Unidad 6.3 – SQL

Objetivo: Realizar operaciones de búsqueda de información sobre una estructura de


datos utilizando el lenguaje de consulta estructurado

Palabras claves: inserciones, eliminaciones, actualizaciones, comandos: select, from,


where, group by

Duración: 6 hs

Ejercicios

Dada la siguiente Base de Datos (mínima) de un establecimiento educativo:

ALUMNO PROFESOR MATERIAS

COD_ALU TEXTO COD_PRO TEXTO COD_MAT TEXTO


NOM_ALU NOM_PRO DES_MAT
APE_ALU APE_PRO AÑO_MAT
CALLE_ALU CALLE_PRO
NRO_ALU NRO_PRO
LOC_ALU LOC_PRO
FECH_NAC
FECH_ING
COD_DIV TEXTO

DIVISION PROF_MAT

COD_DIV TEXTO COD_PRO TEXTO


AÑO_DIV COD_MAT TEXTO
DIV_DIV
TUR_DIV

NOTAS

COD_ALU TEXTO
COD_MAT TEXTO
FECH_NOT
NOT_NOT

ALUMNO ALUMNO DEL ESTABLECIMIENTO


PROFESOR PROFESOR DEL ESTABLECIMIENTO
MATERIAS MATERIAS QUE CURSAN LO ALUMNOS
DIVISIÓN DIVISIONES EN DONDE CURSAN LOS ALUMNOS
1
PROF_MAT MATERIAS QUE DICTAN LOS PROFESORES
NOTAS NOTAS DE TODAS LAS MATERIAS DE LOS ALUMNOS

ALUMNO cp: cod_alu ; cf: cod_div (division)


PROFESOR cp: cod_pro
MATERIAS cp: cod_mat
DIVISIÓN cp: cod_div
PROF_MAT cp: cod_pro, cod_mat; cf: cod_pro (profesor), cod_mat (materia)
NOTAS cp: cod_alu, cod_mat, cf: cod_alu (alumno), cod_mat (materia)

Nota: La base de datos completa está en la sección anexos

2
3
Realizar las siguientes consultas en SQL:

a) Listar los códigos de alumno, el nombre y apellido

SELECT cod_alu,
nom_alu,
ape_alu
FROM alumno;

b) Listar todos los nombres y apellidos de los alumnos, ordenados en forma


ascendente por apellido.

SELECT nom_alu,
ape_alu
FROM alumno
ORDER BY ape_alu ASC;

c) Listar todos los nombres y apellidos de los profesores, ordenados en forma


descendente por apellido.

SELECT nom_pro,
ape_pro
FROM professor
ORDER BY ape_pro DESC;

d) Listar todos los códigos, nombres y apellidos de los alumnos, ordenados en


forma ascendente por apellido y descendente por nombre.

SELECT cod_alu,
nom_alu,
ape_alu
FROM alumno
ORDER BY ape_alu ASC,
nom_alu DESC;

e) Listar todos los profesores que vivan en LOC_PRO= “XXXXX”

SELECT *
FROM profesor
WHERE loc_pro = ‘XXXXX’;

f) Listar todos los alumnos que hayan nacido antes de 19XX

SELECT *
FROM alumno
WHERE fech_nac < #19XX-01-01#;
g) Determinar la cantidad de alumnos que concurren al establecimiento educativo

SELECT Count(*)
FROM alumno;

h) Averiguar cuantos alumnos cursan en primer año, cuyos apellidos terminen en


"nez" y vivan en “XXXXX”

SELECT Count(*)
FROM alumno
4
INNER JOIN division
ON alumno.cod_div = division.cod_div
WHERE alumno.ape_alu LIKE '*nez'
AND alumno.loc_alu = 'XXXXX';

i) Determinar el promedio de notas finales de todos los alumnos de la escuela del


año 2010

SELECT Avg(not_not)
FROM notas
WHERE fech_not BETWEEN #2009-12-31# AND #2011-01-01#;

j) Determinar la nota más alta del primer cuatrimestre de toda la escuela

SELECT Max(not_not)
FROM notas
WHERE fech_not BETWEEN #2019-03-31# AND #2019-08-01#;

k) Listar los datos de los alumnos y los de su división, ordenados por división y
alfabéticamente por apellido y nombre.

SELECT *
FROM alumno a,
division d
WHERE a.cod_div = d.cod_div
ORDER BY d.div_div,
a.ape_alu,
a.nom_alu;

l) Determinar la cantidad de alumnos que cursan primer año en el turno tarde.

SELECT Count(*)
FROM alumno a,
division d
WHERE a.cod_div = d.cod_div
AND d.año_div = 'primero'
AND d.tur_div = 'tarde';

m) Listar a todos los alumnos y sus promedios del año 2010 ordenados por
promedio en forma descendente.

SELECT a.cod_alu,
a.nom_alu,
a.ape_alu,
Avg(not_not)
FROM alumno a
INNER JOIN notas n
ON a.cod_alu = n.cod_alu
WHERE fech_not BETWEEN #2009-12-31# AND #2011-01-01#
GROUP BY a.cod_alu,
a.nom_alu,
a.ape_alu;

Potrebbero piacerti anche