Solucion SQL SQL 2
Solucion SQL SQL 2
PERSONA
Nombr DireccionNu FechaNacimient Varo
DNI Apellido Ciudad DireccionCalle Telefono
e m o n
94111111
16161616A Luis Ramírez Haro Pez 34 1/1/69 1
1
91212121
17171717A Laura Beltrán Madrid Gran Vía 23 8/8/74 0
2
91313131
18181818A Pepe Pérez Madrid Percebe 13 2/2/80 1
3
94414141
19191919A Juan Sánchez Bilbao Melancolía 7 3/3/66 1
4
94115151
20202020A Luis Jiménez Nájera Cigüeña 15 3/3/79 1
5
94116161
21212121A Rosa García Haro Alegría 16 4/4/78 0
6
Logroñ 94117171
23232323A Jorge Sáenz Luis Ulloa 17 9/9/78 1
o 7
Gutiérre Logroñ 94118181
24242424A María Avda. de la Paz 18 10/10/64 0
z o 8
Logroñ 94119191
25252525A Rosario Díaz Percebe 19 11/11/71 0
o 9
Logroñ 94120202
26262626A Elena González Percebe 20 5/5/75 0
o 0
ASIGNATURA
IdAsignatura Nombre Creditos Cuatrimestre CosteBasico IdProfesor IdTitulacion Curso
000115 Seguridad Vial 4,5 1 30,00 € P204
130113 Programación I 9 1 60,00 € P101 130110 1
130122 Análisis II 9 2 60,00 € P203 130110 2
150212 Química Física 4,5 2 70,00 € P304 150210 1
160002 Contabilidad 6 1 70,00 € P117 160000 1
PROFESOR ALUMNO
IdAlumno DNI IdAlumno DNI
P101 19191919A A010101 21212121A
P117 25252525A A020202 18181818A
P203 23232323A A030303 20202020A
P204 26262626A A040404 26262626A
P304 24242424A A121212 16161616A
A131313 17171717A
TITULACION
IdTitulacion Nombre
130110 Matemáticas
150210 Químicas
160000 Empresariales
ALUMNO_ASIGNATURA
IdAlumno IdAsignatura NumeroMatricula
A010101 150212 1
A020202 130113 1
A020202 150212 2
A030303 130113 3
A030303 150212 1
A030303 130122 2
A040404 130122 1
A121212 000115 1
A131313 160002 4
TIPOS DE DATOS
PERSONA
Campo Tipo dato Tamaño Otros
DNI Texto-Varchar2 9 Primary Key
Nombre Texto 25 Requerido - Not Null
Apellido Texto 50 Requerido - Not Null
Ciudad Texto 25
DireccionCalle Texto 50
DireccionNum Texto 3
Telefono Texto 9
FechaNacimiento Fecha/Hora Fecha corta Fecha corta
Varon Texto 1 Check (Varon In ('0','1'))
ASIGNATURA
Campo Tipo dato Tamaño Otros
IdAsignatura Texto 6 Primary Key
Nombre Texto 50 Not Null
Creditos Numérico Simple Check (Creditos In (4.5,6,7.5,9))
Cuatrimestre Texto 1 Check (Cuatrimestre In ('1','2'))
CosteBasico Numérico Simple Number(3,2)
IdProfesor Texto 4 References PROFESOR(IdProfesor)
IdTitulacion Texto 6 References TITULACION(IdTitulacion)
Curso Fecha/Hora Fecha corta Check (Curso In ('1','2','3','4'))
ALUMNO
Campo Tipo dato Tamaño Otros
IdAlumno Texto 7 Primary Key
DNI Texto 9 References PERSONA(DNI)
PROFESOR
Campo Tipo dato Tamaño Otros
IdProfesor Texto 4 Primary Key
DNI Texto 9 References PERSONA(DNI)
TITULACION
Campo Tipo dato Tamaño Otros
IdTitulacion Texto 6 Primary Key
Nombre Texto 20 Not Null - Unique
ALUMNO_ASIGNATURA
Campo Tipo dato Tamaño Otros
IdAlumno Texto 7 References ALUMNO(IdAlumno)
IdAsignatura Texto 6 References ASIGNATURA(IdAsignatura)
NumeroMatricula Numérico Entero Not Null - Check(NumeroMatricula>=1 AND NumeroMatricula<=6)
Realizar las siguientes consultas:
PRIMER BLOQUE
SELECT Nombre
FROM ASIGNATURA
WHERE CosteBasico BETWEEN 25 AND 35;
o
SELECT Nombre
FROM ASIGNATURA
WHERE CosteBasico >= 25
AND CosteBasico <= 35;
SELECT IdAlumno
FROM ALUMNO_ASIGNATURA
WHERE IdAsignatura IN ( "150212", "130113");
o
SELECT IdAlumno
FROM ALUMNO_ASIGNATURA
WHERE IdAsignatura = "150212"
OR IdAsignatura = "130113";
7.-Nombre de las asignaturas del segundo cuatrimestre que no sean de 6
créditos.
SELECT Nombre
FROM ASIGNATURA
WHERE Cuatrimestre = "2"
AND Creditos <> 6;
8.-Mostrar el nombre de las asignaturas cuyo coste por crédito sea mayor de
8 euros.
SELECT Nombre
FROM ASIGNATURA
WHERE CosteBasico/Credito > 8;
SELECT Nombre
FROM PERSONA
WHERE FechaNacimiento = NULL;
"s" - segundos
"h" - horas
"d" - días
"m" - meses
"yyyy" - años. (resta los años sin tener en cuenta los meses).
Now - Devuelve la hora actual del sistema.
13.-Listado que muestre las asignaturas con su coste por crédito ordenadas
por su coste por crédito.
SELECT ASIGNATURA.Nombre
FROM ASIGNATURA,PROFESOR, PERSONA
WHERE ASIGNATURA.IdProfesor = PROFESOR.IdProfesor
AND PROFESOR.DNI = PERSONA.DNI
AND Telefono LIKE "941*";
Bloque2:
6.-Listado de alumnos que son más viejos que el profesor de mayor edad.
SELECT Nombre
FROM ASIGNATURA
WHERE IdTitulacion = "130110"
AND CosteBasico > (SELECT AVG(CosteBasico)
FROM ASIGNATURA
GROUP BY IdTitulacion
HAVING IdTitulacion = "130110");
SELECT IdAsignatura
FROM ASIGNATURA
WHERE IDAsignatura NOT IN (SELECT DISTINCT(IdAsignatura)
FROM ALUMNO_ASIGNATURA);
SELECT Nombre
FROM ASIGNATURA
WHERE COsteBasico > (SELECT AVG(CosteBasico)
FROM ASIGNATURA
WHERE IdTitulacion IS NULL);
Esta otra solución no funciona bien con los valores nulos en Access:
SELECT Nombre
FROM ASIGNATURA
WHERE COsteBasico > (SELECT AVG(CosteBasico)
FROM ASIGNATURA
WHERE IdTitulacion NOT IN (SELECT IdTitulacion
FROM TITULACION));
SELECT *
FROM PERSONA
WHERE FechaNacimiento < (SELECT MAX(FechaNacimiento)
FROM PERSONA, PROFESOR
WHERE PROFESOR.DNI = PERSONA.DNI);