Baixe o app para aproveitar ainda mais
Prévia do material em texto
PERGUNTA 1 1. Um banco de dados é um conjunto de componentes definidos de diversas formas via comandos de DDL. Por exemplo, dentre os componentes existem as tabelas, os procedimentos armazenados e as visões, dentre outros, cada um com suas finalidades. Sobre as visões, qual das sentenças a seguir representa uma das vantagens de usar estes componentes em um banco de dados? Permite que consultas mais complexas sejam manipuladas de forma mais simples Definem os perfis de usuários que podem inserir dados no banco de dados Permite combinar dados de tabelas diferentes via chave estrangeira Permite armazenar dados para uma consulta mais simples São funções que permitem contabilizar ou totalizar valores 1 pontos PERGUNTA 2 1. O uso de agrupamentos é um recurso utilizado ao criar consultas com SELECT para sumarizar dados e realizar contabilizações ou totalizações, e a cláusula usada é o GROUP BY. Uma demanda comum é, ao realizar agrupamentos, realizar algum filtro sobre os campos calculados. Por exemplo, ao avaliar os clientes e o total de compras calculado via uma função SUM, pode-se querer filtrar apenas os clientes com este volume de compras acima de R$500,00. A palavra chave usada na cláusula que permite realizar este tipo de filtro sobre campos calculados por funções de agregação é a: INNER ORDER WHERE FROM HAVING 1 pontos PERGUNTA 3 1. Uma cláusula “group by”, parte do comando SELECT, permite criar agrupamentos, isto é, vários registros com os mesmos valores são combinados em uma linha e os valores dos outros campos podem ser resumidos através de funções de agregação, gerando cálculo de totais, contagens, médias e outros. Em um sistema de livraria, existe uma tabela LIVRO que contém os seguintes campos: LIVRO (COD_LIVRO, TITULO, AUTOR, VALOR) Para recuperar a lista dos autores com o total de títulos de sua autoria presentes na livraria e o valor médio dos valores de seus títulos, a consulta deve ser: SELECT TITULO, SUM(*), AVG(VALOR) FROM LIVRO GROUP BY TITULO SELECT AUTOR, COUNT(*), AVG(VALOR) FROM LIVRO GROUP BY AUTOR SELECT TITULO, COUNT(*), AVG(VALOR) FROM LIVRO GROUP BY TITULO SELECT AUTOR, SUM(*), MEDIA(VALOR) FROM LIVRO GROUP BY AUTOR SELECT AUTOR, COUNT(*), MEDIA(VALOR) FROM LIVRO GROUP BY AUTOR 1 pontos PERGUNTA 4 1. Dados em tabelas diferentes podem compor um conjunto de resultados em um comando de SELECT através das junções. Alguns tipos de junções são as junções internas e as junções externas, estas últimas podem ser pela esquerda ou pela direita. Em um sistema de uma universidade existe o cadastro de Alunos e o de Cursos, onde em aluno pode conter apenas um curso e em curso pode conter vários cursos. Em uma consulta foi feita uma junção (join) entre as tabelas Alunos e Cursos e na consulta SELECT, Alunos e Cursos estão escritas nesta ordem (Alunos primeiro, antes de Cursos). O resultado da consulta está expresso na tabela a seguir: Matrícula Nome Cod_Curso Dcr_Curso 322871 Joana Vieira 2 Engenharia Elétrica 322609 Márcio Nogueira 2 Engenharia Elétrica 212320 Cristiano Azevedo 12 Direito 212201 Lúcia Vergamini 12 Direito NULL NULL 4 Gestão Ambiental 2. Quadro - Resultado de consulta com junção entre Alunos e Cursos Fonte: Elaborado pelo autor (2019). Qual foi a junção realizada nesta consulta? Full Join Inner Join Left Outer Join Join Right Outer Join 1 pontos PERGUNTA 5 1. As cláusulas WHERE, ORDER BY, GROUP BY, JOIN e outras são exemplos de partes de um SELECT e cada uma fornece algum recurso que traduz alguma necessidade ao se realizar consultas sobre os dados. Ao consultar as tabelas de CARRO e FABRICANTE em um sistema de locadoras, foi realizada a seguinte consulta: SELECT F.FABRICANTE, COUNT(*), AVG(C.VLR_LOCACAO) FROM CARRO as C INNER JOIN FABRICANTE as F ON (C.COD_FABRICANTE = F.COD_FABRICANTE) WHERE ANO > 2015 AND AR_COND = ‘S’ GROUP BY FABRICANTE Considerando esta consulta, analise e assinale nas sentenças a seguir (V) para a(s) verdadeira(s) e (F) para a(s) falsa(s). I. ( ) Os carros do ano 2015 serão considerados na consulta II. ( ) Será mostrada a contagem de carros conforme condições e agrupados por fabricante III. ( ) Apenas carros com ar condicionado serão contabilizados IV. ( ) Apenas carros que tiverem um fabricante cadastrado serão considerados A partir das associações feitas anteriormente, assinale a alternativa que apresenta a sequência correta: F, V, F, F. F, V, V, V. V, V, F, V. V, V, V, V. F, F, V, F. 1 pontos PERGUNTA 6 1. O comando SELECT é bastante versátil e por meio das suas cláusulas de WHERE, ORDER BY, GROUP BY, JOIN permite especificar filtros, ordenações, agrupamentos e junções respectivamente. Estes e outros recursos oferecem suporte ao usuário para escrever suas consultas. Em relação a algumas das cláusulas, comandos e palavras chave para escrita dos comandos, realize a associação entre os itens a seguir e as afirmações na sequência: I. HAVING II. DESC III. AVG IV. LEFT Associe as funções de agregação com as afirmações sobre estes comandos: ( ) Permite especificar qual o tipo de junção deve ser executada ( ) Estabelece ordem decrescente na cláusula ORDER BY ( ) Função de agregação que pode ser usada com GROUP BY ( ) Permite editar filtros em consultas com GROUP BY Assinale a alternativa que apresenta a sequência correta: II, III, I, IV III, I, IV, II IV, II, III, I I, III, II, IVI I, IV, II, III 1 pontos PERGUNTA 7 1. As funções de agregação permitem extrair informações úteis a partir de um determinado conjunto de resultados, elas sumarizam os valores de determinados campos em um único valor e elas podem ser usadas em todos os dados de um conjunto de resultados ou então podem ser combinadas com as cláusulas GROUP BY. Em um sistema, existe um cadastro de clientes com os seguintes dados: CODIGO NOME CONTATO DATA_NASC SEXO BAIRRO 1 Adriana Araújo 71 982213455 1987-02-03 F Barra 2 Renato Nogueira 11 933321999 1977-07-09 M Morumbi 3 Viviane Sales 11 987712022 1995-11-02 F Vila Madalena 4 Marcela Campos 71 973514498 1980-01-19 F Barra 5 Rodrigo Gonçalves 21 986121942 1992-05-10 M Centro 6 Jorge Marinho 11 995439812 1990-06-07 M Morumbi 7 Rodrigo Vieira 71 972318872 1985-08-27 M Centro 8 Vanessa Aquino 21 933211346 1972-02-15 F Centro 2. Para extrair nesta tabela a data de nascimento do cliente mais velho, a cláusula SELECT deve apresentar a seguinte função de agregação: COUNT(DATA_NASC) MAX(DATA_NASC) SUM(DATA_NASC) MIN(DATA_NASC) AVG(DATA_NASC) 1 pontos PERGUNTA 8 1. A criação de consultas em um banco de dados através do comando SELECT pode utilizar diversos recursos, ordenação, agrupamentos, filtros e outros. Um destes recursos, que permite consultas mais avançadas, é o uso de subconsultas em que um comando de SELECT pode conter um outro comando SELECT em alguma de suas outras cláusulas. Em um sistema de uma loja, imagine que existe uma tabela de COMPRAS com os seguintes dados. NOME DATA VLR_COMPRA Renato Nogueira 12/03/2019 35.60 Renato Nogueira 21/03/2019 120.70 Renato Nogueira 25/04/2019 81.50 Rodrigo Gonçalves 14/03/2019 57.80 Rodrigo Gonçalves 04/04/2019 31.00 Vanessa Aquino 16/03/2019 23.70 Vanessa Aquino 10/04/2019 92.50 2. Fonte: Elaborado pelo Autor (2019) Para avaliar o volume de vendas dos clientes, o setor de marketing solicitou uma listagem com os clientes e o seu volume total de compras e ordenados pelo volume de compras em ordem decrescente. A consulta que reflete esta necessidade do setor de marketing é SELECT * FROM(SELECT NOME, AVG(VLR_COMPRA) as TOTAL FROM COMPRAS) AS VOLUME_COMPRAS ORDER BY TOTAL DESC SELECT * FROM (SELECT NOME, SUM(VLR_COMPRA) as TOTAL FROM COMPRAS) AS VOLUME_COMPRAS ORDER BY VLR_COMPRA ASC SELECT * FROM (SELECT NOME, SUM(VLR_COMPRA) as TOTAL FROM COMPRAS) AS VOLUME_COMPRAS ORDER BY VLR_COMPRA DESC SELECT * FROM (SELECT NOME, SUM(VLR_COMPRA) as TOTAL FROM COMPRAS) AS VOLUME_COMPRAS ORDER BY TOTAL DESC SELECT * FROM (SELECT NOME, AVG(VLR_COMPRA) as TOTAL FROM COMPRAS) AS VOLUME_COMPRAS ORDER BY VLR_COMPRA DESC 1 pontos PERGUNTA 9 1. O banco de dados serve de fonte para atender às diversas demandas de setores informatizados por um determinado sistema, por exemplo, um setor de recursos humanos pode recuperar o total da folha de pagamento, um setor de vendas pode requisitar a quantidade de produtos vendidos por categoria e um setor de marketing pode requisitar alguns relatórios sobre os clientes. Em um sistema de locação de automóveis, a tabela de cliente apresenta o seguinte formato e com uma breve amostra de dados. Cod Nome Sexo Idade Cidade 2 Ademar M 22 São Paulo 1 Fabrício M 41 Salvador 5 Joelma F 60 Rio de Janeiro 4 Carlos M 21 São Paulo 3 Adriana F 30 Curitiba 2. O setor de marketing está avaliando as regiões onde a empresa atua e o volume de clientes em cada região. Daí, surgiu a necessidade de recuperar as cidades nesta tabela e para cada cidade, o total de clientes existentes. A consulta que melhor atende à esta necessidade é: SELECT CIDADE, COUNT(COD) FROM CLIENTE ORDER BY CIDADE SELECT CIDADE, SUM(NOME) FROM CLIENTE GROUP BY CIDADE SELECT CIDADE, SUM(COD) FROM CLIENTE GROUP BY CIDADE SELECT CIDADE, NOME FROM CLIENTE ORDER BY CIDADE SELECT CIDADE, COUNT(COD) FROM CLIENTE GROUP BY CIDADE 1 pontos PERGUNTA 10 1. Em um servidor de dados, os dados estão armazenados em tabelas e pelas questões de normalização, cada tabela trata especificamente dados relacionados com suas respectivas entidades. Quando ocorre a necessidade por informações mais abrangentes, os dados de tabelas diferentes precisam compor um resultado conjunto e o mecanismo que permite combinar dados de várias tabelas são as junções que podem ser de vários tipos. Considerando uma parte do modelo de um sistema de clínica médica, referente aos médicos e especialidades, tem-se as seguintes tabelas: MEDICO (COD_MEDICO, CRM, NOME, CONTATO, COD_ESPECIALIDADE) ESPECIALIDADE (COD_ESPECIALIDADE, DCR_ESPECIALIDADE) Todo médico está associado a uma especialidade, mas na clínica podem existir especialidades que não possuem médicos. A consulta que recupera todas as especialidades com os médicos relacionados, recuperando mesmo as especialidades sem médico cadastrado é: SELECT * FROM ESPECIALIDADE as E RIGHT OUTER JOIN MEDICO as M ON M.COD_ESPECIALIDADE = E.COD_ESPECIALIDADE SELECT * FROM MEDICO as M FULL JOIN ESPECIALIDADE as E ON M.COD_ESPECIALIDADE = E.COD_ESPECIALIDADE SELECT * FROM MEDICO as M INNER JOIN ESPECIALIDADE as E ON M.COD_ESPECIALIDADE = E.COD_ESPECIALIDADE SELECT * FROM MEDICO as M LEFT OUTER JOIN ESPECIALIDADE as E ON M.COD_ESPECIALIDADE = E.COD_ESPECIALIDADE SELECT * FROM MEDICO as M RIGHT OUTER JOIN ESPECIALIDADE as E ON E.COD_ESPECIALIDADE = M.COD_ESPECIALIDADE
Compartilhar