P Aula10 SQL

12
 1 Sistemas de Informação  Alguns caso s práticos: Campeonato de Fórmula 1 Lin guagem SQL - Str uct ure d Que ry Language Breve introdução aos comandos: insert delete • update select

Transcript of P Aula10 SQL

5/17/2018 P Aula10 SQL - slidepdf.com

http://slidepdf.com/reader/full/p-aula10-sql 1/12

1

Sistemas de Informação

Alguns casos práticos:

Campeonato de Fórmula 1

Linguagem SQL - Structured Query Language

Breve introdução aos comandos:• insert• delete

• update

• select

5/17/2018 P Aula10 SQL - slidepdf.com

http://slidepdf.com/reader/full/p-aula10-sql 2/12

2

Sistemas de Informação

Carro

nºCarro

pesopotênciavelocidadeMáxima

Marca

nomepaísnºPontos

Corrida

data

Circuito

nomelocalpaís

nºVoltas

perímetro

posiçãoGrelha

classificaçãoFinalnºVoltamotivoDesistência

Piloto

nomemorada

idadenacionalidade

nºPontos

Campeonato de Fórmula 1

5/17/2018 P Aula10 SQL - slidepdf.com

http://slidepdf.com/reader/full/p-aula10-sql 3/12

3

Sistemas de Informação

INSERT INTO nome_da_tabela

[(lista_de_campos)]

VALUES (lista_valores);

O Comando INSERT da Linguagem SQL

EXEMPLO: Inserir a informação 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;

5/17/2018 P Aula10 SQL - slidepdf.com

http://slidepdf.com/reader/full/p-aula10-sql 4/12

4

Sistemas de Informação

DELETE FROM nome_da_tabela

[WHERE lista_de_condições];

O Comando DELETE da Linguagem SQL

EXEMPLO: Apagar a informação dos pilotos de nacionalidade brasileira

DELETE FROM Piloto

WHERE nacionalidade=“Brasil”;

5/17/2018 P Aula10 SQL - slidepdf.com

http://slidepdf.com/reader/full/p-aula10-sql 5/12

5

Sistemas de Informação

UPDATE nome_da_tabela

SET nome_do_campo_1=valor_1, …, nome_do_campo_n=valor_n

[WHERE lista_de_condições]

O Comando UPDATE da Linguagem SQL

EXEMPLO: Actualizar o nº de pontos do piloto Irvine somando 4 pontos aos já existentes

UPDATE Piloto

SET pontuação = pontuação+4WHERE nome=“Eddie Irvine";

5/17/2018 P Aula10 SQL - slidepdf.com

http://slidepdf.com/reader/full/p-aula10-sql 6/12

6

Sistemas de Informação

O Comando SELECT da Linguagem SQL

EXEMPLO: Apresentar uma lista com o nome dos pilotos alemães ordenados porordem alfabética

SELECT nome

FROM Piloto

WHERE nacionalidade=“Alemanha”

ORDER BY nome;

SELECT lista_de_campos

FROM lista_de_tabelas

[WHERE lista_de_condições]

[GROUP BY lista_de_campos]

[HAVING lista_de_condições]

[ORDER BY lista_de_campos [ASC | DESC]]

5/17/2018 P Aula10 SQL - slidepdf.com

http://slidepdf.com/reader/full/p-aula10-sql 7/12

7

Sistemas de Informação

Campeonato de Fórmula 1

Apresentar uma lista com as datas das corridas e o nome dos circuitos onde serealizam.

SELECT Corrida.data, Circuito.nome

FROM Corrida, Circuito

WHERE Corrida.[#circuito]=[Circuito].[#circuito]

ORDER BY Corrida.data;

5/17/2018 P Aula10 SQL - slidepdf.com

http://slidepdf.com/reader/full/p-aula10-sql 8/12

8

Sistemas de Informação

Campeonato de Fórmula 1

Apresentar uma lista com o nome dos pilotos classificados até 6ºlugar inclusivé, e respectivas classificações nas corridas, para cadaum 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;

5/17/2018 P Aula10 SQL - slidepdf.com

http://slidepdf.com/reader/full/p-aula10-sql 9/12

9

Sistemas de Informação

Campeonato de Fórmula 1Apresentar uma lista com o nome dos pilotos que já venceramcorridas mas que não participaram na corrida realizada no circuito doEstoril.

SELECT DISTINCT nomeFROM Piloto, Classificacao

WHERE Piloto.[#piloto] NOT IN

(SELECT [#piloto]

FROM Classificacao, Corrida, Circuito

WHERE Corrida.[#corrida]=Classificacao.[#corrida] ANDCorrida.[#circuito]=Circuito.[#circuito] AND

Circuito.nome = "Estoril")

AND classificacao = 1

AND Piloto.[#piloto] = Classificacao.[#piloto]

ORDER BY nome;

5/17/2018 P Aula10 SQL - slidepdf.com

http://slidepdf.com/reader/full/p-aula10-sql 10/12

10

Sistemas de Informação

Campeonato de Fórmula 1

Apresentar uma lista com o nome dos pilotos que já venceram corridas e orespectivo número de vitórias alcançadas, ordenada por ordem decrescentede número de vitórias

SELECT Piloto.nome, COUNT(*)

FROM Piloto, Classificacao

WHERE Classificacao. classificacao =1 AND

Piloto.[#piloto]= Classificacao.[#piloto]

GROUP BY Piloto.nome

ORDER BY COUNT(*) DESC;

5/17/2018 P Aula10 SQL - slidepdf.com

http://slidepdf.com/reader/full/p-aula10-sql 11/12

11

Sistemas de Informação

Campeonato de Fórmula 1

Apresentar uma lista com o nome dos pilotos que já venceram maisdo que 3 corridas e o respectivo número de vitórias alcançadas,ordenada por ordem decrescente de número de vitórias

SELECT Piloto.nome, Count(*)

FROM Piloto, Classificacao

WHERE Classificacao.classificacao=1 ANDPiloto.[#piloto]=Classificacao.[#piloto]

GROUP BY Piloto.nome

HAVING Count(*)>=3

ORDER BY Count(*) DESC;

5/17/2018 P Aula10 SQL - slidepdf.com

http://slidepdf.com/reader/full/p-aula10-sql 12/12

12

Sistemas de Informação

Como executar comandos SQL usando Macros? 

Queries de acção (INSERT, DELETE, UPDATE): acção RUNSQL