Consultas SQL para Banco de Dados Universitário
Consultas SQL para Banco de Dados Universitário
PERSONA
Nome DireccionNu FechaNacimient Varo
DNI Apellido Ciudad DireccionCalle Telefone
e m o n
94111111
16161616A Luis Ramírez Haro Peixe 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 Joy 16 4/4/78 0
6
Logroño 94117171
23232323A Jorge Sáenz Luis Ulloa 17 9/9/78 1
o 7
Gutiérre Logroñ 94118181
24242424A Maria Avda. da Paz 18 10/10/64 0
z o 8
Logroño 94119191
25252525A Rosario Díaz Percebe 19 11/11/71 0
o 9
Logroño 94120202
26262626A Elena González Percebe 20 5/5/75 0
o 0
DISCIPLINA
IdAsignatura Nombre Creditos Cuatrimestre CosteBasico IdProfesor IdTitulacion Curso
000115 Segurança Viária 4,5 1 30,00 € P204
130113 Programação I 9 1 60,00 € P101 130110 1
130122 Análise II 9 2 60,00 € P203 130110 2
150212 Química Física 4,5 2 70,00 € P304 150210 1
160002 Contabilidade 6 1 70,00 € P117 160000 1
PROFESSOR ALUNO
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 Nome
130110 Matemáticas
150210 Químicas
160000 Empresariais
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 Outros
DNI Texto-Varchar2 9 Chave Primária
Nombre Texto 25 Requerido - Não Nulo
Sobrenome Texto 50 Requerido - Não Nulo
Cidade Texto 25
EnderecoRua Texto 50
DireccionNum Texto 3
Telefone Texto 9
FechaNacimientoFecha/Hora Data curta Data curta
VaronTexto 1 Verifique (Varon Em ('0','1'))
DISCIPLINA
Campo Tipo de dado Tamaño Outros
IdAsignaturaTexto 6 Chave Primária
Nombre Texto 50 Não Nulo
Creditos Numérico Simples Verifique (Créditos In (4.5,6,7.5,9))
CuatrimestreTexto 1 Verifique (Cuatrimestre In ('1','2'))
CosteBasicoNumérico Simples Número(3,2)
IdProfesor Texto 4 Referências PROFESOR(IdProfesor)
IdTitulacionTexto 6 References TITULACION(IdTitulacion)
Curso Data/Hora Data curta Verifique (Curso In ('1','2','3','4'))
ALUNO
Campo Tipo dato Tamaño Outros
IdAlumnoTexto 7 Chave Primária
DNITexto 9 Referências PESSOA(DNI)
PROFESSOR
Campo Tipo dato Tamaño Outros
IdProfesorTexto 4 Chave Primária
DNITexto 9 Referências PESSOA(DNI)
TITULACION
Campo Tipo dato Tamaño Outros
IdTitulacionTexto 6 Chave Primária
NombreTexto 20 Não Nulo - Único
ALUMNO_ASIGNATURA
Campo Tipo dato Tamaño Outros
IdAlumno Texto 7 Referências ALUMNO(IdAluno)
IdAsignatura Texto 6 References ASIGNATURA(IdAsignatura)
NumeroMatriculaNumérico Inteiro Não Nulo - Verificar(NumeroMatricula>=1 E NumeroMatricula<=6)
Realizar as seguintes consultas:
PRIMEIRO BLOCO
SELECTIdAsignatura,Nombre,Creditos
DA DISCIPLINA;
SELECIONARMAX(CosteBasico) ASMAXIMO,
MIN(CosteBasico) AS MINIMO,
MÉDIA(CosteBasico) ASMEDIA
DADISCIPLINA;
SELECTNombre,CosteBasico
DA DISCIPLINA
ONDECreditos>4.5;
SELECIONAR Nome
FROMASIGNATURA
ONDE Custo Básico ENTRE 25 E 35;
o
SELECIONAR Nome
DA DISCIPLINA
ONDE CustoBasico>=25
E custoBasico<=35;
SELECIONAR IdAluno
DEALUMNO_ASIGNATURA
ONDE IdAsignatura EM ("150212", "130113");
o
SELECT IdAluno
DEALUNO_ASIGNATURA
ONDE IdAsignatura="150212"
ORIdAsignatura="130113";
7.-Nome das disciplinas do segundo quadrimestre que não sejam de 6
créditos.
SELECIONAR Nome
DA DISCIPLINA
WHERECuatrimestre="2"
ECreditos<>6;
8.- Mostrar o nome das disciplinas cujo custo por crédito seja maior que
8 euros.
SELECIONAR Nome
DA DISCIPLINA
ONDE CustoBasico/Credito>8;
SELECIONAR Nome
DEPERSONA
ONDE FechaNacimiento=NULL;
"s" - segundos
"h" - horas
"d" - días
"m" - meses
"yyyy" - anos. (subtraia os anos sem considerar os meses).
Agora - Retorna a hora atual do sistema.
13.-Lista que mostre as disciplinas com seu custo por crédito ordenadas
por su coste por crédito.
SELECTNombre,Apellido
FROMPERSONA,ALUMNO
[Link]=[Link]
ANDTelefoneLIKE"941*";
SELECIONAR [Link]
FROMASIGNATURA,PROFESOR,PERSONA
ONDE [Link]=[Link]
[Link]=[Link]
ANDTelefoneLIKE"941*";
Bloque2:
SELECIONARDISTINTO([Link]) ASNOMBRE_PROFESSOR
FROMPERSONA,PROFESOR,ASIGNATURA
[Link]=[Link]
[Link]=[Link];
SELECTTITULACION.NombreASTITULACION_,PERSONA.NombreASNOMBRE_PROFESOR
FROMPERSONA,PROFESOR,ASIGNATURA,TITULACION
[Link]=[Link]
[Link]=[Link]
[Link]=[Link];
SELECIONAR ASIGNATURA.NombreASASIGNATURA_
DA ASSIGNATURA
ONDE Creditos > (SELECIONAR Creditos
DA DISCIPLINA
WHERENombre="Seguridad Vial");
6.-Listado de alumnos que son más viejos que el profesor de mayor edad.
SELECTTITULACION.NombreASNOMBRE_TITULACION,
MÉDIA([Link]) ASMEDIA_COSTE_BASICO
FROMASIGNATURA,TITULACION
ONDE [Link]=[Link]
AGRUPAR POR [Link], [Link]
HAVINGSUM([Link])>60;
SELECIONAR Nome
DA DISCIPLINA
WHEREIdTitulacion="130110"
ANDCosteBasico> (SELECIONAR AVG(CosteBasico)
DA DISCIPLINA
AGRUPAR POR IdTitulacion
HAVINGIdTitulacion="130110");
SELECIONAR IdAsignatura
DA DISCIPLINA
ONDE IDAsignatura NÃO ESTÁ EM (SELECIONE DISTINTO(IdAsignatura)
DEALUNO_ASIGNATURA);
SELECIONARNome
DA DISCIPLINA
ONDECOsteBasico> (SELECIONEAVG(CosteBasico)
DA DISCIPLINA
ONDE IdTitulacao É NULO);
Esta outra solução não funciona bem com os valores nulos no Access:
SELECIONAR Nome
DA DISCIPLINA
ONDECOsteBasico> (SELECIONEAVG(CosteBasico)
DA DISCIPLINA
ONDE IdTitulacion NÃO ESTÁ EM (SELECIONAR IdTitulacion
FROMTITULACION));
SELECIONE *
DA PESSOA
ONDE FechaNacimiento < (SELECIONAR MÁXIMO(FechaNacimiento)
DEPERSONA, PROFESSOR
ONDE [Link] = [Link]);