1 / 18

SQL Exercícios de Revisão

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. Exercicio 1. Considere o seguinte esquema de banco de dados: Estudante(Enum, Enome, Curso, Idade, Periodo) Aula(Did, Weekday, Sala, Horário)

olathe
Télécharger la présentation

SQL Exercícios de Revisão

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  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 NOTEXISTS 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 NOTIN 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 barco ‘103’ 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 WHERENOT EXISTS (( SELECT B.BID FROM BARCOS B WHERENOT 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.

More Related