Professional Documents
Culture Documents
ComandosSQLExerccios1|AlineBossi
CrieumabasededadosUniversidadecomastabelasaseguir:
Alunos(RA,nome,endereo,cidade)
Disciplinas(COD_DISC,nome_disc,carga_hor)
Professores(COD_PROF,nome,endereo,cidade)
Turma(COD_DISC,COD_TURMA,COD_PROF,ANO,horrio)
Histrico(RA,COD_DISC,COD_TURMA,COD_PROF,ANO,freqncia,nota)
Apscriarestatabelas,eincluiralgunsdadosneslas,poderemosbrincaretestartodosos
comandoqueaprendemosnosartigosanteirores1.EncontreoRAdosalunoscomnotaem
BDem2010menorque5(obs:BD=cdigodadisciplinas).
SELECTra
FROMHISTORICO
WHEREcod_disc='BD'ANDano=2010ANDnota<5
2.ForneaoRA,nomeenotadosalunoscomnotamenorque5emBDem2010.
SELECTa.RA,a.NOME,a.NOME
fromHISTORICOh,ALUNOSa
wherecod_disc='BD'andano=2010andnota<5anda.RA=h.RA
3.ForneaonomedosprofessoresdeBDem2010.
SELECTdistinct(p.NOME)
fromPROFESSORESp,TURMAt
wherep.COD_PROF=t.COD_PROFandt.ANO=2010andt.COD_DISC='BD'
4.Encontreonome,endereo,cidadedosalunosecdigodasdisciplinasondeosalunos
tiveramnotamenorque5em2010.
SELECTa.nome,a.ENDERECO,a.CIDADE,h.COD_DISC
fromALUNOSa,HISTORICOh
wherea.RA=h.RAandh.NOTA<5andh.ano=2010
5.ObtenhaonomeeRAdosalunosdoprofessorem2010.
http://alinebossi.com/2010/06/28/comandosqlexercicios1/
1/11
22/01/2016
ComandosSQLExerccios1|AlineBossi
SELECTdistincta.NOME,a.RA
fromALUNOSa,PROFESSORESp,HISTORICOh
whereh.RA=a.RAandh.COD_PROF=p.COD_PROF
andp.NOMElike'%NOME%'
andh.ANO=2010
6.LocalizeonomeeRAdosalunosdoprofessorJOSem2010ou2009quetiveramaulas
comoprofessorMARCOSemalgumano.
SELECTdistincta.NOME,a.RA
fromALUNOSa,PROFESSORESp,HISTORICOh
whereh.RA=a.RAandh.COD_PROF=p.COD_PROF
andp.NOMElike'%JOS%'
and(h.ANO=2010orh.ANO=2009)
ANDA.RAin
(selectH.RA
fromHISTORICOh,PROFESSORESp
whereh.COD_PROF=p.COD_PROF
andp.nomelike'%MARCOS%')
7.ForneaohistricoescolardoalunodenomeAlex,ouseja,seuRA,nome,alistade
disciplinasqueelejcursoucontendoocdigoenomedadisciplina,freqnciaenotae
anoqueoalunoacursou.
selecta.RA,a.NOME,
h.COD_DISC,d.NOME_DISC,
h.ANO,h.FREQUENCIA,h.NOTA
fromHISTORICOh,ALUNOSa,DISCIPLINASd
wherea.RA=h.RA
andh.COD_DISC=d.COD_DISC
anda.NOMElike'%ALEX%'
8.EncontreonomeeendereodosalunoseprofessoresdeCampinas.
selecta.NOME,a.ENDERECO,'aluno'astipo
fromALUNOSa
wherea.CIDADE='CAMPINAS'
http://alinebossi.com/2010/06/28/comandosqlexercicios1/
2/11
22/01/2016
ComandosSQLExerccios1|AlineBossi
union
selectp.NOME,p.ENDERECO,'prof'
fromPROFESSORESp
wherep.CIDADE='CAMPINAS'
9.Forneaonomedosalunosquecursaramdisciplinascomcargahorriamenorque60
horas,bemcomoosrespectivosprofessoresqueaslecionaram.
selecta.NOME,p.NOME
fromALUNOSa,DISCIPLINASd,PROFESSORESp,HISTORICOh
where
a.RA=h.RAand
d.COD_DISC=h.COD_DISCand
p.COD_PROF=h.COD_PROFand
d.CARGA_HOR<60
10.LocalizeonomedosprofessoresquelecionarammatriasnasquaisoalunoPedro
PauloCunhafoireprovado.(nota<5)
selectp.NOME
fromALUNOSa,PROFESSORESp,HISTORICOh
where
a.RA=h.raand
p.COD_PROF=h.COD_PROFand
upper(a.NOME)='PEDROPAULOCUNHA'AND
h.NOTA<5
11.EncontreoRAdosalunosquejcursaramtodasasdisciplinaslecionadas
peloprof.Joo.
Selectdistincta.NOME,a.Ra
fromALUNOSa
wherenotexists(selectCod_disc
fromPROFESSORESp,TURMAt
wherep.COD_PROF=t.COD_PROFand
P.NOMElike'%JOO%'
andCod_discnotin(selectcod_disc
http://alinebossi.com/2010/06/28/comandosqlexercicios1/
3/11
22/01/2016
ComandosSQLExerccios1|AlineBossi
fromHISTORICOh
wherea.RA=h.RA))
12.EncontreoRa,nomeemdiadasnotasdosalunosquecursaramtodasasmatrias
lecionadasporprofessoresdeCampinas.
SelectdistinctA.RA,A.NOME,AVG(nota)
fromALUNOSA,HISTORICOhwhereA.RA=h.RAand
notexists
(selectCod_disc
fromPROFESSORESp,TURMAt
wherep.CIDADE='CAMPINAS'andCod_discnotin
(selectcod_disc
fromHISTORICOh
whereA.RA=h.RA))
groupbyA.RA,A.NOME
13.LocalizeoRAenomedosalunoscomnotamenorquequalquerumadasnotasdoaluno
deRA20090121.
selecta.RA,a.NOME
fromALUNOSa,HISTORICOh
wherea.RA=h.RAand
h.NOTA<any
(selectnotafromHISTORICOwhereRA=20090121)
14.ForneaoRa,nomeemdiadasnotasporalunos.
selecta.RA,a.NOME,avg(h.NOTA)
fromALUNOSa,HISTORICOh
wherea.RA=h.RA
groupbya.RA,a.NOME
15.Encontreonomedosalunosquenocursaramnenhumadisciplinaoferecidaem2010.
selectnome
http://alinebossi.com/2010/06/28/comandosqlexercicios1/
4/11
22/01/2016
ComandosSQLExerccios1|AlineBossi
fromALUNOS
whereranotin(selectdistinctrafromHISTORICOwhereano=2010)
16.Forneaonomedosprofessoresquesomentelecionarammatriascomcargahorria
foiinferiora60horas.
Selectp.NOME
fromPROFESSORESp,TURMAt
wherep.COD_PROF=t.COD_PROFand
p.COD_PROFnotin(selectt.COD_PROF
fromTURMAt,DISCIPLINASd
wheret.COD_DISC=d.COD_DISCandCARGA_HOR>=60)
17.Encontreonomedosalunosquenoforamreprovadosemnenhumamatria.
selecta.NOME
fromALUNOSa
wherea.RAnotin(selecta.RA
fromHISTORICOh,DISCIPLINASd
whereh.COD_DISC=d.COD_DISCandh.NOTA<6.0)
18.ForneaoRAenotadosalunoscomnotaemBDem2010menorqueamdiadas
notasnadisciplina.
selecta.NOME,h.NOTA
fromALUNOSa,HISTORICOh
wherea.RA=h.RAandh.COD_DISC='BD'andano=2010
andnota<all(selectavg(NOTA)
fromHISTORICO
whereCOD_DISC='BD'andano=2010)
19.Encontreocdigoenomedasdisciplinasemediadasnotaspordisciplina,mostre
apenasasdisciplinascommdiadenotasmaiorque5.0.
selectd.COD_DISC,d.NOME_DISC,avg(nota)
fromDISCIPLINASd,HISTORICOh
http://alinebossi.com/2010/06/28/comandosqlexercicios1/
5/11
22/01/2016
ComandosSQLExerccios1|AlineBossi
whereh.COD_DISC=d.COD_DISC
groupbyd.COD_DISC,d.Nome_DISChavingavg(nota)>5
20.ForneaonmerodealunosquefizeramBDem2010.
SELECTcount(*)fromhistricowherecd_disc=bdandano=2010
21.Encontreadisciplinacommaiormdiadenotas.
Selectnome_disc,avg(nota)
fromDisciplinasD,HistoricoH
WhereD.cod_disc=h.cod_disc
groupbynome_disc
havingavg(nota)>=all(Selectavg(nota)
fromhistorico
groupbycod_disc)
22.ForneaocdigodasdisciplinascommdiamenorqueamdiadasnotasemBD.
Selectcod_disc,AVG(nota)
fromhistorico
groupbycod_disc
havingavg(nota)<all(selectavg(nota)
fromhistorico
wherecod_disc='BD')
23.Forneaonomedosprofessoresquejlecionaramalgumadisciplinaparaoalunode
RA5400001.
SelectP.nome
fromProfessoresP,historicoh
whereP.cod_prof=H.cod_profandH.RA=5400001
24.Encontreonomedasdisciplinascommdiadefreqnciaabaixode80%.
http://alinebossi.com/2010/06/28/comandosqlexercicios1/
6/11
22/01/2016
ComandosSQLExerccios1|AlineBossi
Selectnome_disc
FromDisciplinasD,HistoricoH
WhereH.cod_disc=D.cod_disc
groupbynome_disc,carga_hor
havingavg(frequencia)<0.8*carga_horaria
25.Forneaonomedosalunosquetiveramnomnimo2reprovaesem2010.
SelectA.Nome
FromAlunosA,HistoricoH
WhereA.RA=H.RAandano=2010andnota<6.0
groupbyA.Nome
havingcount(*)>=2
26.QuantasvezesoalunoJosdaSilvacursouadisciplinadeBancodeDados.
selectcount(*)
fromALUNOSa,HISTORICOh,DISCIPLINASd
wherea.ra=h.ra
andd.COD_DISC=h.COD_DISC
anda.NOME='JosedaSilva'
andd.NOME_DISC='BancodeDados'
27.QuantosalunosjcursaramadisciplinadeBancodeDadosem2009e2010.
selectcount(*)
fromHISTORICOhinnerjoinDISCIPLINASdonD.COD_DISC=h.COD_DISC
whered.NOME_DISC='BancodeDados'and(ano=2009orano=2010)
28Forneaonomedosalunosqueobtiverammaisque2reprovaesemalgumano.
selecta.NOME,h.ano,count(*)
fromALUNOSa,HISTORICOh
whereh.RA=h.RAandh.NOTA<6.0
groupbya.NOME,h.ANO
havingcount(*)>2
http://alinebossi.com/2010/06/28/comandosqlexercicios1/
7/11
22/01/2016
ComandosSQLExerccios1|AlineBossi
29.Encontreonomedosprofessoresedasdisciplinasondeonmerodereprovaesfoi
superiora20alunosem2010.
selectp.NOME,d.NOME_DISC
fromPROFESSORESp,DISCIPLINASd,HISTORICOh
whereh.COD_PROF=p.COD_PROFandd.COD_DISC=h.COD_DISC
andh.NOTA<6andh.ANO='2010'
groupbyp.NOME,d.NOME_DISC
havingcount(*)>20
30.Forneaonomedosprofessoresecdigodasdisciplinaslecionadasporeleem2010e
amediadasnotaspordisciplina.
selectp.NOME,h.COD_DISC,avg(h.NOTA)
fromPROFESSORESp,HISTORICOh
whereh.COD_PROF=p.COD_PROFandh.ANO=2010
groupbyp.NOME,h.COD_DISC
OperaesDiversas
Agora,iremosfazeralgumasatualizaesnastabelasquecriamosacima.
1.InsiraseusdadosnoBD:tabeladealunos(seunome,Ra,endereo,cidade),tabelade
histricocursandoBDem2009naturmaAcomoprofessorJACeobtendonota8.2e
freqncia80,eadisciplinadeEDAem2010naturmaAcomoprofessorRCSVeobtendo
nota7.5efreqncia75.
INSERTintoALUNOS
values(0912252,'AlineBossi','Ruamanoel','Piracicaba')
INSERTintoHISTORICO
values(0912252,'BD','A','JAC','2009','80','8.2')
INSERTintoHISTORICO
values(0912252,'EDA','A','RCSV',2010,75,7.5)
http://alinebossi.com/2010/06/28/comandosqlexercicios1/
8/11
22/01/2016
ComandosSQLExerccios1|AlineBossi
2.InsiratodososalunosdadisciplinadeBD(BancodeDados)em2009etiveramnota>5,
cursandoadisciplinaBDII(BancodeDadosII)em2010comomesmocdigodeturmaeo
mesmoprofessor,mascomfreqnciaenotadesconhecidas.
insertintoHISTORICO
selecth.RA,'BDII',
h.COD_TURMA,h.COD_PROF,
2010,null,null
fromHISTORICOh
whereh.COD_DISC='BD'
andh.ANO=2009andh.NOTA>5
3.AltereasnotasdosalunosdeBancodeDados(BD)em2010comoprofessorJAC
atravsdaseguinteregra:
notasentre[4.0e5.0[ficaramcom4.0(inclusiveaesquerdaeexclusiveadireita).
notasentre[5.0e9.5[teroacrscimode0.5nanota.
notasacimade9.5,inclusive,ficarocom10.0
updateHISTORICO
setnota=4
wherenota>=4andnota<5
andcod_disc='BD'
andano='2010'
andcod_prof='JAC';
updateHISTORICO
setnota=10
wherenota>=9.5andcod_disc='BD'
andano='2010'andcod_prof='JAC';
updateHISTORICO
setnota=nota+0.5
wherenota>=5.0andnota<9.5andcod_disc='BD'
andano='2010'andcod_prof='JAC';
4.RemovatodasasinformaesreferentesaoalunoJorgedosSantosdosistema.
deletefromHISTORICO
http://alinebossi.com/2010/06/28/comandosqlexercicios1/
9/11
22/01/2016
ComandosSQLExerccios1|AlineBossi
whereRAIN
(selectRAfromAlunoswherenome='JorgedosSantos');
deletefromALUNOS
wherenome='JorgedosSantos';
5.FaaumaatualizaonafreqnciadosalunosdeBDem2010comoprofessorJCde
acordocomaseguinteregra:
freqnciaabaixode45,inclusive,acrscimode3.0%
freqnciaacimade45,acrscimode5.0%
updateHistoricoh
seth.FREQUENCIA=h.FREQUENCIA+0.05*h.FREQUENCIA
whereh.FREQUENCIA>45
andh.COD_DISC='Bd'
andh.ANO='2010andh.Cod_prof=JAC;
updateHistoricoh
seth.FREQUENCIA=h.FREQUENCIA*1.03
whereh.FREQUENCIA<=45
andh.COD_DISC='Bd'
andh.ANO='2010
andh.Cod_prof=JAC;
6.Insiraosseguintesdados:AlunadeRA20090301obtevenota8.0efreqncia60emBD
(EM2009COMOPROFESSORJACNATURMAA).
INSERTintoHISTORICO
values(20090301,'BD','A','JC',2009,60,8)
7.ExecutetodasasoperaesnecessriasparasubstituironomedoProf.JooPedropor
JosPedro,vistoterocorridoumerronomomentodecadastraronomedoprofessor.
updatePROFESSORES
setnome='JosePedro'
wherenome='JoaoPedro'
8.SubstituatodasasmatriaslecionadaspeloProf.RaimundoClaudioVasconcelosem
http://alinebossi.com/2010/06/28/comandosqlexercicios1/
10/11
22/01/2016
ComandosSQLExerccios1|AlineBossi
2010peloProf.JAC.
updateTURMA
setcod_prof='JAC'
whereano=2010andcod_profin(selectcod_prof
fromPROFESSORES
wherenome='Joo")
http://alinebossi.com/2010/06/28/comandosqlexercicios1/
11/11