Campeonato de Frmula 1
Sistemas de Informao
Campeonato de Frmula 1
Marca nome pas nPontos Carro nCarro peso potncia velocidadeMxima Piloto nome morada idade nacionalidade nPontos
posioGrelha classificaoFinal nVolta motivoDesistncia Circuito nome local pas nVoltas permetro data Corrida
Sistemas de Informao
EXEMPLO: Inserir a informao sobre o piloto Pedro de La Rosa INSERT INTO Piloto ([#piloto], nome, idade, nacionalidade, num_carro) VALUES (8,Pedro de la Rosa, 28, Espanha, 1); No Ms Access:
INSERT INTO Piloto ( [#piloto], nome, idade, nacionalidade, num_carro ) SELECT 8, "Pedro", 28, "Portugal", 1;
3
Sistemas de Informao
EXEMPLO: Apagar a informao dos pilotos de nacionalidade brasileira DELETE FROM Piloto WHERE nacionalidade=Brasil;
Sistemas de Informao
EXEMPLO: Actualizar o n de pontos do piloto Irvine somando 4 pontos aos j existentes UPDATE Piloto SET pontuao = pontuao+4 WHERE nome=Eddie Irvine";
Sistemas de Informao
EXEMPLO: Apresentar uma lista com o nome dos pilotos alemes ordenados por ordem alfabtica SELECT nome FROM Piloto WHERE nacionalidade=Alemanha ORDER BY nome;
6
Sistemas de Informao
Campeonato de Frmula 1
Apresentar uma lista com as datas das corridas e o nome dos circuitos onde se realizam. SELECT Corrida.data, Circuito.nome FROM Corrida, Circuito WHERE Corrida.[#circuito]=[Circuito].[#circuito] ORDER BY Corrida.data;
Sistemas de Informao
Campeonato de Frmula 1
Apresentar uma lista com o nome dos pilotos classificados at 6 lugar inclusiv, e respectivas classificaes nas corridas, para cada um dos circuitos que constituem o campeonato.
SELECT Circuito.nome, Piloto.nome, classificacao FROM Piloto, Classificacao, Corrida, Circuito WHERE classificacao <= 6 AND Piloto.[#piloto]=Classificacao.[#piloto] AND Corrida.[#corrida]=Classificacao.[#corrida] AND Corrida.[#circuito]=Circuito.[#circuito] ORDER BY Circuito.nome, classificacao;
Sistemas de Informao
Campeonato de Frmula 1
Apresentar uma lista com o nome dos pilotos que j venceram corridas mas que no participaram na corrida realizada no circuito do Estoril.
SELECT DISTINCT nome FROM Piloto, Classificacao WHERE Piloto.[#piloto] NOT IN (SELECT [#piloto] FROM Classificacao, Corrida, Circuito WHERE Corrida.[#corrida]=Classificacao.[#corrida] AND Corrida.[#circuito]=Circuito.[#circuito] AND Circuito.nome = "Estoril") AND classificacao = 1 AND Piloto.[#piloto] = Classificacao.[#piloto] ORDER BY nome;
9
Sistemas de Informao
Campeonato de Frmula 1
Apresentar uma lista com o nome dos pilotos que j venceram corridas e o respectivo nmero de vitrias alcanadas, ordenada por ordem decrescente de nmero de vitrias
SELECT Piloto.nome, COUNT(*) FROM Piloto, Classificacao WHERE Classificacao. classificacao =1 AND Piloto.[#piloto]= Classificacao.[#piloto] GROUP BY Piloto.nome ORDER BY COUNT(*) DESC;
10
Sistemas de Informao
Campeonato de Frmula 1
Apresentar uma lista com o nome dos pilotos que j venceram mais do que 3 corridas e o respectivo nmero de vitrias alcanadas, ordenada por ordem decrescente de nmero de vitrias SELECT Piloto.nome, Count(*) FROM Piloto, Classificacao WHERE Classificacao.classificacao=1 AND Piloto.[#piloto]=Classificacao.[#piloto] GROUP BY Piloto.nome HAVING Count(*)>=3 ORDER BY Count(*) DESC;
11
Sistemas de Informao
12