A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

SQL Exercícios de Revisão Profa. Sandra de Amo Programa de Pós-graduação em Ciência da Computação – UFU 2012 - 2.

Apresentações semelhantes


Apresentação em tema: "SQL Exercícios de Revisão Profa. Sandra de Amo Programa de Pós-graduação em Ciência da Computação – UFU 2012 - 2."— Transcrição da apresentação:

1 SQL Exercícios de Revisão Profa. Sandra de Amo Programa de Pós-graduação em Ciência da Computação – UFU

2 Exercicio 1. Considere o seguinte esquema de banco de dados: Estudante(Enum, Enome, Curso, Idade, Periodo) Aula(Did, Weekday, Sala, Horário) Disciplina(Did, Dnome, Pid) Prof(Pid,Pnome,Dept) Matriculado(Enum,Did) Dê um comando SQL com um único bloco SQL para a seguinte consulta: Dar o nome dos estudantes do primeiro período que estão matriculados em alguma disciplina ministrada pela Profa. Maria Amélia

3 Exercicio 2. Dê um comando SQL com DOIS blocos SQL (aninhados) para a mesma consulta do Ex. 1: Dar o nome dos estudantes do primeiro período que estão matriculados em alguma disciplina ministrada pela Profa. Maria Amélia

4 Exercicio 3. Dê um comando SQL com TRES blocos SQL (aninhados) para a mesma consulta do Ex. 1: Dar o nome dos estudantes do primeiro período que estão matriculados em alguma disciplina ministrada pela Profa. Maria Amélia

5 Exercicio 4. a) Dê um comando SQL com QUATRO blocos SQL (aninhados) para a mesma consulta do Ex. 1: Dar o nome dos estudantes do primeiro período que estão matriculados em alguma disciplina ministrada pela Profa. Maria Amélia b) Para cada um dos comandos SQL dos Ex. 1, 2, 3, 4 dar o plano de execução (com operadores da álgebra relacional) correspondentes e analise a eficiência de cada comando.

6 Exercicio 5. Considere o esquema de banco de dados: Barcos(Bid,Bnome,Color) Reservas(Bid,Sid,Day) Sailors(Sid,Snome,Status,Idade) a) Dê um comando SQL aninhado usando dois blocos básicos ligados pelo comando EXISTS para a seguinte consulta: Encontre nome de marinheiros que reservaram o barco 103 b) Dê um comando SQL aninhado usando dois blocos básicos ligados pelo comando IN para a mesma consulta do item a) c) Compare a eficiência dos dois comandos SQL dados.

7 Exercicio 6. a) Dê um comando SQL aninhado usando dois blocos básicos ligados pelo comando NOT EXISTS para a seguinte consulta: Encontre nome de marinheiros que não reservaram o barco 103 b) Dê um comando SQL aninhado usando dois blocos básicos ligados pelo comando NOT IN para a mesma consulta do item a) c) Compare a eficiência dos dois comandos SQL dados.

8 Exercicio 7. a) Dê um comando SQL aninhado usando dois blocos básicos ligados pelo comando UNIQUE para a seguinte consulta, sem utilizar comandos de agregação: Encontre nome de marinheiros que reservaram uma única vez o barco103 b) Você poderia dar um comando SQL para a mesma consulta do item (a) sem utilizar o comando UNIQUE ?

9 Exercicio 8. a) Dê um comando SQL aninhado usando dois blocos básicos ligados pelo comando ANY para a seguinte consulta, sem utilizar comandos de agregação: Encontre os identificadores de marinheiros cujo status é melhor do que algum marinheiro chamado Horácio b) Você poderia dar um comando SQL para a mesma consulta do item (a) sem utilizar o comando ANY ?

10 Exercicio 9. a) Dê um comando SQL aninhado usando dois blocos básicos ligados pelo comando ALL para a seguinte consulta, sem utilizar comandos de agregação: Encontre os identificadores de marinheiros que têm os maiores status. b) Você poderia dar um comando SQL para a mesma consulta do item (a) sem utilizar o comando ALL ?

11 Exercício 10. a) Dê comando SQL para a seguinte consulta, usando dois blocos SQL aninhados, sem comandos de agregação: Quais são os nomes dos marinheiros mais jovens que reservaram o barco 103 ? b) Você poderia dar um comando SQL para a mesma consulta do item (a) usando um único bloco SQL (podendo usar agregação) ?

12 Exercicio 11. SELECT S.Snome FROM Sailors S WHERE EXISTS (SELECT * FROM Reservas R WHERE R.Bid = 103` AND R.Sid = S.Sid) SELECT S.Snome FROM Sailors WHERE S.Idade <= ALL (SELECT S2.Idade FROM S2 Sailors, R Reservas WHERE R.Sid = S2.Sid AND R.Bid = 103) Considere as duas consultas abaixo. Diga quais delas são correlacionadas e por que. Diga também o que cada retorna.

13 Exercicio 12. O objetivo deste exercicio é dar um comando SQL para retornar os nomes dos marinheiros que reservaram algum barco vermelhor e algum barco verde. Analise as tres propostas abaixo e diga para cada uma delas se é correta ou Incorreta justificando sua resposta. Alternativa 1: SELECT S.Snome FROM Sailors S, Reservas R, Barcos B WHERE S.Sid = R.Sid AND R.Bid = B.Bid AND B.Cor = Vermelho AND S.Sid IN (SELECT S2.Sid FROM Sailors S2, Barcos B2, Reservas R2 WHERE S2.Sid = R2.Sid AND R2.Bid = B2.Bid AND B2.Cor = Verde) Alternativa 2: SELECT S.Snome FROM Sailors S WHERE S.Sid IN ( (SELECT R.Sid FROM Barcos B, Reservas R WHERE R.Bid = B.Bid AND B.Cor = Vermelho) INTERSECT (SELECT R.Sid FROM Barcos B, Reservas R WHERE R.Bid = B.Bid AND B.Cor = Verde) ) Alternativa 3: SELECT S.Snome FROM Sailors S, Barcos B, Reservas R WHERE S.Sid = R.Sid AND R.Bid = B.Bid AND B.Cor = Vermelho) INTERSECT (SELECT S.Snome FROM Sailors S, Barcos B, Reservas R WHERE S.Sid = R.Sid AND R.Bid = B.Bid AND B.Cor = Verde)

14 Exercicio 13. O objetivo deste exercicio é dar um comando SQL para retornar os nomes dos marinheiros que reservaram barcos vermelhos e não reservaram barcos verdes. Analise as tres propostas abaixo e diga para cada uma delas se é correta ou Incorreta justificando sua resposta. Alternativa 1: SELECT S.Snome FROM Sailors S, Reservas R, Barcos B WHERE S.Sid = R.Sid AND R.Bid = B.Bid AND B.Cor = Vermelho AND S.Sid NOT IN (SELECT S2.Sid FROM Sailors S2, Barcos B2, Reservas R2 WHERE S2.Sid = R2.Sid AND R2.Bid = B2.Bid AND B2.Cor = Verde) Alternativa 2: SELECT S.Snome FROM Sailors S WHERE S.Sid IN ( (SELECT R.Sid FROM Barcos B, Reservas R WHERE R.Bid = B.Bid AND B.Cor = Vermelho) EXCEPT (SELECT R.Sid FROM Barcos B, Reservas R WHERE R.Bid = B.Bid AND B.Cor = Verde) ) Alternativa 3: (SELECT S.Snome FROM Sailors S, Barcos B, Reservas R WHERE S.Sid = R.Sid AND R.Bid = B.Bid AND B.Cor = Vermelho) EXCEPT (SELECT S.Snome FROM Sailors S, Barcos B, Reservas R WHERE S.Sid = R.Sid AND R.Bid = B.Bid AND B.Cor = Verde)

15 Exercicio 14. O objetivo deste exercicio é dar um comando SQL para retornar os nomes dos marinheiros que reservaram barcos vermelhos ou verdes. Analise as duas propostas abaixo e diga para cada uma delas se é correta ou incorreta justificando sua resposta. Alternativa 1: SELECT S.Snome FROM Sailors S, Reservas R, Barcos B WHERE S.Sid = R.Sid AND R.Bid = B.Bid AND B.Cor = Vermelho OR S.Sid IN (SELECT S2.Sid FROM Sailors S2, Barcos B2, Reservas R2 WHERE S2.Sid = R2.Sid AND R2.Bid = B2.Bid AND B2.Cor = Verde) Alternativa 2: SELECT S.Snome FROM Sailors S WHERE S.Sid IN ( (SELECT R.Sid FROM Barcos B, Reservas R WHERE R.Bid = B.Bid AND B.Cor = Vermelho) UNION (SELECT R.Sid FROM Barcos B, Reservas R WHERE R.Bid = B.Bid AND B.Cor = Verde) ) Alternativa 3: (SELECT S.Snome FROM Sailors S, Barcos B, Reservas R WHERE S.Sid = R.Sid AND R.Bid = B.Bid AND B.Cor = Vermelho) UNION (SELECT S.Snome FROM Sailors S, Barcos B, Reservas R WHERE S.Sid = R.Sid AND R.Bid = B.Bid AND B.Cor = Verde)

16 Exercicio 15. a) Analise a seguinte consulta SQL e diga o que ela retorna. SELECT S.SNOME FROM SAILORS S WHERE NOT EXISTS ( ( SELECT B.BID FROM BARCOS B EXCEPT (SELECT R.BID FROM RESERVAS R WHERE R.SID = S.SID) ) b) Esta consulta é correlacionada ?

17 Exercicio 16. a) Analise a seguinte consulta SQL e diga o que ela retorna. SELECT S.SNOME FROM SAILORS S WHERE NOT EXISTS (( SELECT B.BID FROM BARCOS B WHERE NOT EXISTS ( SELECT R.BID FROM RESERVAS R WHERE R.BID = B.BID AND R.SID = S.SID) ) b) Esta consulta é correlacionada ?

18 Exercício 17 Dê comando SQL para a seguinte consulta: Encontrar os nomes dos barcos que foram reservados por todos os marinheiros com idade igual a 20 anos.


Carregar ppt "SQL Exercícios de Revisão Profa. Sandra de Amo Programa de Pós-graduação em Ciência da Computação – UFU 2012 - 2."

Apresentações semelhantes


Anúncios Google