Baixe o app para aproveitar ainda mais
Prévia do material em texto
1a Questão São tipos de JOIN: SELECT JOIN, INNER JOIN, LEFT JOIN e RIGHT JOIN. SELECT JOIN e INNER JOIN. INNER JOIN, LEFT JOIN e RIGHT JOIN. Apenas o INNER JOIN. Apenas o INNER JOIN e o LEFT JOIN. Gabarito Coment. 2a Questão A partir das relações abaixo, responda em SQL: quantos alunos (nota maior ou igual a 6) foram aprovados na disciplina 'Banco de Dados' com o professor 'Rui'? Use inner join. Relações: PROFESSOR (idprofessor, nomeprofessor); LECIONA (idprofessor, iddisciplina); DISCIPLINA (iddisciplina, nomedisciplina); ALUNO (matricula, nomealuno); MATRICULA (inscrição, iddisciplina, matricula, nota, período, ano) SELECT count(*) AS total FROM professor p LEFT JOIN leciona l ON p.idprofessor = l.idprofessor LEFT JOIN disciplina d ON l.iddisciplina = d.iddisciplina LEFT JOIN matricula m ON m.iddisciplina = d.iddisciplina WHERE nomeprofessor = 'Rui' OR nomedisciplina = 'Banco de Dados' SELECT count(*) AS total FROM professor p, leciona l, matricula m WHERE p.idprofessor = l.idprofessor AND m.iddisciplina = d.iddisciplina AND nomeprofessor = 'Rui' AND nomedisciplina = 'Banco de Dados' SELECT count(distinct) AS total FROM professor p INNER JOIN leciona l ON p.idprofessor = l.idprofessor INNER JOIN disciplina d ON l.iddisciplina = d.iddisciplina INNER JOIN matricula m ON m.iddisciplina = d.iddisciplina WHERE nomeprofessor = 'Rui' AND nomedisciplina = 'Banco de Dados' SELECT count(distinct) AS total FROM professor p RIGHT JOIN leciona l ON p.idprofessor = l.idprofessor RIGHT JOIN disciplina d ON l.iddisciplina = d.iddisciplina RIGHT JOIN matricula m ON m.iddisciplina = d.iddisciplina WHERE nomeprofessor = 'Rui' OR nomedisciplina = 'Banco de Dados' SELECT sum(*) AS total FROM professor p, leciona l, matricula m WHERE p.idprofessor = l.idprofessor AND m.iddisciplina = d.iddisciplina AND nomeprofessor = 'Rui' AND nomedisciplina = 'Banco de Dados' 3a Questão Qual das consultas abaixo retorna o nome e a placa de todos os veículos? SELECT placa FROM Veiculo INNER JOIN Cliente ON Cliente_cpf = cpf; SELECT v.placa, c.nome FROM Veiculo v INNER JOIN Cliente c ON v.Cliente_cpf = c.cpf; SELECT c.cpf, c.nome FROM Veiculo v INNER JOIN Cliente c ON v.Cliente_cpf = c.cpf WHERE v.placa; SELECT c.nome FROM Veiculo v INNER JOIN Cliente c ON cpf = cpf; SELECT v.placa, c.nome FROM Cliente INNER JOIN Cliente c ON v.Cliente_cpf = c.cpf; 4a Questão Em uma junção Cruzada entre três tabelas com respectivamente 10, 8 e 4 resgistros, gerará uma saída com quantos registros? 160 registros 22 registros 220 registros 320 registros 20 registros 5a Questão A operação SQL que recupera tuplas provenientes de duas tabelas é: Seleção Projeção Subtração Junção Relação Gabarito Coment. 6a Questão Considere as afirmações abaixo: 1. As relações podem ser manipuladas através de operadores relacionais. Embora não seja utilizada frequentemente, devido à sua complexidade, ela ajuda a esclarecer a manipulação relacional e estabelece os fundamentos para o aprendizado da SQL. 2. A Álgebra Relacional é um conjunto de operações usadas para manipular relações e é oriunda da Teoria dos Conjuntos da matemática. 3. A Álgebra Relacional é fechada, o que significa que os resultados de uma ou mais operações relacionais são sempre uma relação. São VERDADEIRAS: 1 e 2. Somente 1. 1 e 3. 2 e 3. 1, 2 e 3. Gabarito Coment. 7a Questão Quando dois conjuntos de dados são concatenados de acordo com uma determinada condição, representa o resultado da operação relacional: intersecção projeção união junção restrição 8a Questão Para se obter a quantidade de empregados por cargo deve-se digitar qual o select abaixo: SELECT C.DESCRICAO AS CARGO, COUNT(E.MATRICULA) AS QTDE GROUP BY C.DESCRICAO FROM CARGO C INNER JOIN EMPREGADO E ON C.CODIGO = E.CARGO; SELECT C.DESCRICAO AS CARGO, COUNT(E.MATRICULA) AS QTDE FROM CARGO C INNER JOIN EMPREGADO E ON C.CODIGO = E.CARGO GROUP BY C.DESCRICAO; SELECT C.DESCRICAO AS CARGO, COUNT(E.MATRICULA) AS QTDE FROM CARGO C INNER JOIN EMPREGADO E GROUP BY C.DESCRICAO; SELECT DESCRICAO AS CARGO, COUNT(MATRICULA) AS QTDE FROM CARGO C INNER JOIN EMPREGADO E ON CODIGO = CARGO GROUP BY DESCRICAO; SELECT C.DESCRICAO AS CARGO, SUM(E.MATRICULA) AS QTDE FROM CARGO C INNER JOIN EMPREGADO E ON C.CODIGO = E.CARGO GROUP BY C.DESCRICAO; 1a Questão Qual opção abaixo representa uma sequência de operadores de conjunto? char, date, vardate e int varchar, primary key, references e check union, union all, intersect e except foreign key, primary key, references e unique char, unique, varchar e numeric Gabarito Coment. 2a Questão Sabendo que a estrutura da tabela é: ID_EMP_MATRICULA, VC_EMP_NOME, NU_EMP_CARGO, NU_EMP_SALARIO, NU_EMP_GRATIFICACAO, NU_EMP_DESCONTO. Pede-se que, exiba a(s) matrícula(s), o(s) nome(s), o(s) salário(s) líquido(s) do(s) maior(es) salário(s) pago(s) aos empregados pela empresa, apenas dos que sejam do cargo de código 99 e que o salário líquido seja maior que 3000. Para se resolver essa consulta deve-se obrigatoriamente usar além das argumentos SELECT e FROM, usar: WHERE. WHERE, GROUP BY e HAVING. WHERE e SUBQUERY. WHERE e HAVING e SUBQUERY. WHERE, GROUP BY e SUBQUERY. Gabarito Coment. 3a Questão Com base nas tabelas empregado(mat, cpf, nome) e aluno(mat, cpf, nome), assinale a opção correta que corresponde à consulta a seguir: select cpf from empregado intersect select cpf from aluno; A consulta exibirá o cpf dos empregados que também são alunos A consulta incluirá na tabela empregado todos os cpf dos alunos A consulta exibirá o cpf de todos os empregados e de todos os alunos A consulta exibirá somente o cpf dos empregados A consulta retornará um erro Gabarito Coment. 4a Questão Uma consulta que ocorre dentro de outro comando SQL é denominada: Subconsulta Operação Não é possivel uma consulta deste tipo Consulta interna Consulta externa 5a Questão (FCC - 2009 - Análise de Sistemas - Suporte - ADAPTADA) Uma instrução Select usada na cláusula Where ou Having de outra instrução Select é Um índice. Uma subconsulta. Um join. Um crosstab. Uma visão. 6a Questão Qual dos tipos de sub-consulta que faz referência a uma coluna da tabela da consulta externa? Sub-Consulta Multi-Valorada Sub-Consulta Multi-Linhas Sub-Consulta Correlata Sub-Consulta Simple Sub-Consulta Principal 7a Questão Qual dos operadores de comparação de consultas Multi-Linhas a seguir NÃO é válido? > ALL <> ALL = ANY < ALL = 8a Questão (FGV - 2010 - DETRAN-RN - Assessor Técnico - Administração de Banco de Dados) Assinale a alternativa correta sobre fragmento de comando a seguir: (select distinct nome_cliente from contas) intersect (select distinct nome_cliente from emprestimos) Se um cliente não possui conta mas possui empréstimos no banco, aparecerá no resultado. Se um cliente tem diversas contas e empréstimos no banco, aparecerá todas as repetições no resultado. Se um cliente possui conta mas não possui empréstimos no banco, aparecerá no resultado. Se um cliente tem diversas contas e empréstimos no banco, não aparecerá no resultado. Seum cliente tem diversas contas e empréstimos no banco, aparecerá somente uma vez no resultado. 1a Questão Uma visão quando aplicada a uma base de dados, é capaz de: Permitir a criação de um conjunto de dados virtual para ser usados em consultas. Permitir a representação conceitualmente os dados de uma base de dados. Permitir a implementação de uma nova tabela com dados oriundos de outras tabelas. Permite alterar os tipos definidos nos meta-dados do SGBD. Permitir ao usuário definir os dados que deseja ver no momento da criação de uma consulta. Gabarito Coment. 2a Questão Quanto a visões, é correto afirmar: I - Pode-se fazer uma consulta a uma view com as cláusulas Having e Group By. II - Pode-se fazer subconsultas e utilizar operadores de conjunto em uma view. III - Uma visão pode permitir, com restrições que os dados da tabela sejam manipulados em comando de INSERT, UPDATE e DELETE, porém, não armazena estes dados. Apenas as afirmações II e III são corretas. Apenas as afirmações I e III são corretas. Apenas a afirmação III é correta. Todas as afirmações estão corretas. Apenas as afirmações I e II são corretas. 3a Questão Analise as afirmações abaixo: I. Quando fazemos uma consulta em uma View podemos usar todos as clausulas do comando Select, tais como : Where, Group By, Having e Order By. II. Quando fazemos uma consulta em uma View podemos utilizar os operadores relacionais ( in, between, like, is null), os operadores lógicos ( and, or not) e as funções de grupo. III. Quando fazemos uma consulta em uma View podemos fazer junções com uma tabela IV. Quando fazemos uma consulta em uma View podemos fazer subconsultas e utilizar operadores de conjunto; São VERDADEIRAS: I, II e III. I, II, e IV. I, II, III e IV. I e II. I, III e IV. 4a Questão Para criarmos um índice para a tabela Fornecedor pelo Bairro e Cidade devemos dar o seguinte comando: Create Index Fornecedor ON Forn_Bairro_Cidade(Bairro, Cidade) Create Index Forn_Bairro_Cidade ON Fornecedor(Bairro, Cidade) Create Index Forn_Bairro_Cidade ON Fornecedor BY Bairro, Cidade Create Index Forn_Bairro_Cidade From Fornecedor BY Bairro, Cidade Create Index Fornecedor BY Bairro, Cidade Gabarito Coment. 5a Questão Dentre as regras de utilização de NEXTVAL e CURRVAL, qual das opções abaixo NÃO pode ser usada? Numa cláusula SELECT em tabelas (exceção a Views) No SELECT da query principal de uma construção com subqueries Na cláusula VALUES de um comando INSERT Na cláusula SET de um comando UPDATE Na cláusula WHERE de um comando DELETE Gabarito Coment. 6a Questão São tipos de visões: Simples Abstratas Simples e Complexas Simples e Abstratas Complexas Gabarito Coment. 7a Questão 1. ______________ são objetos que apresentam auto-incremento. 2. ______________ uma pseudocoluna utilizada para extrair valores de uma sequence qualquer, sempre que for referenciada. 3. ______________ uma pseudocoluna utilizada para informar o último valor gerado por uma sequence. É sempre incrementada após um ______________ 4. Nextval e currval ___________ ser usados na cláusula VALUES de um comando INSERT 5. Nextval e currval ___________ ser usados dentro de uma subconsulta. As palavras que preenchem as lacunas corretamente estão representadas em: (1) sequences (2) currval (3) nextval e nextval (4) não podem (5) não podem (1) indices (2) nextval (3) currval e nextval (4) podem (5) não podem (1) sequences (2) nextval (3) currval e nextval (4) podem (5) podem (1) sequences (2) currval - (3) nextval e nextval (4) não podem (5) podem (1) sequences (2) nextval (3) currval e nextval (4) podem (5) não podem Gabarito Coment. 8a Questão O comando SQL para criar uma visão chamada Eye, abrangendo os atributos A1 e A2 da tabela Pen, é: COMPOSE FLASH Eye AS A1, A2 FROM Pen CREATE VIEW Eye AS SELECT A1, A2 FROM Pen CREATE DROP Eye FROM A1, A2 FROM Pen BUILD Eye AS INSERT A1, A2 FROM Pen COMPILE Eye AS INSERT A1, A2 FROM Pen 1a Questão Para iniciar uma transação no Oracle, basta usarmos um comando SQL executável e para encerrar, podemos usar qualquer dos comandos abaixo, com Exceção de: GRANT SELECT COMMIT CREATE ROLLBACK Gabarito Coment. 2a Questão Qual comando: I. Garante que os dados sejam persistidos com sucesso no banco; II. Descarta a transação. I. Rollback; II. Commit; I. Insert; e II. Delete; I. Insert; II. Cancel; I. Grant; II. Revoke; I. Commit; II. Rollback; 3a Questão A propriedade que garante que todas as operações de uma transação são refletidas corretamente no banco de dados ou nenhuma será é: Isolamento Atomicidade Consistência Durabilidade Indisivibilidade 4a Questão Uma unidade de execução de programa delimitada pelos comandos BEGIN TRANSACTION e END TRANSACTION é denominada uma: Proograma Comando Transação Seleção Operação 5a Questão A propriedade que garante a proteção de uma transação dos efeitos de atualizações executadas por outras transações simultâneas é: Durabilidade Atomicidade Persistência Isolamento Consistência Gabarito Coment. 6a Questão (CESGRANRIO - 2006 - EPE - Área Tecnologia da Informação) Para as técnicas de controle de concorrência em Bancos de Dados, assinale a afirmativa INCORRETA. O problema de espera indefinida (starvation) pode ocorrer se o esquema de espera para itens bloqueados for parcial, dando prioridade a algumas transações sobre as outras. As técnicas de controle de concorrência baseadas em ordenação por timestamp não usam bloqueios, portanto, deadlocks nunca podem ocorrer. Diz-se que uma transação segue o protocolo de bloqueio de duas fases se todas as operações (read_lock, write_lock) precedem a última operação de desbloqueio na transação Uma forma para detectar um estado de deadlock consiste em construir um grafo wait-for. O deadlock ocorre quando cada transação em um conjunto de duas ou mais transações espera por algum item que esteja bloqueado por alguma outra transação T no conjunto. Gabarito Coment. 7a Questão Qual das opções abaixo NÃO é uma propriedades desejável das transações (Propriedade ACID)? Integridade. Isolamento. Atomicidade. Durabilidade. Consistência. Gabarito Coment. 8a Questão Dentre as propriedades de uma transação, qual delas é responsável por preservar a integridade do banco de dados? Isonomia Atomicidade Isolamento Durabilidade Consistência 1a Questão As abordagens clássicas utilizadas pelo otimizador de consultas são: Custo Regras e tempo Regras e custo Regras Custo e tempo Gabarito Coment. 2a Questão Quantos acessos a disco são necessários para encontrar uma linha de uma tabela utilizando um índice hash, admitindo que não há a ocorrência de overflow de buckets? 2 log2n PR 1 2n 3a Questão Os SGBD´s possuem abordagens para otimizar as consultas em um banco de dados. Quando o SGBD não possui no dicionário de dados estatísticas sobre o objeto referenciado, o otimizador aplica regras baseadas na sintaxe dos comandos e defineo melhor caminho com o menor número de ranking da análise dos possíveis caminhos. Marque a alternativa que indica a abordagem denominada para este procedimento. Baseada em regras. Baseada em roteamento. Baseada em custo. Baseada em semântica. Baseada em processamento. Gabarito Coment. 4a Questão (CESGRANRIO - 2010 - IBGE - Analista de Sistemas - Desenvolvimento de Aplicações) Algumas regras de heurísticas vinculadas à álgebra relacional, como "execute as operações de seleção o mais cedo possível", "execute antes as projeções" e "evite os produtos cartesianos", são usualmente empregadas em sistemas gerenciadores de bancos de dados para a implementação de otimização de consultas. chaves primárias e estrangeiras. controle de concorrência. recuperação de dados após falhas. índices do tipo bit map. 5a Questão Os SGBD ́s possuem abordagens para otimizar as consultas em um banco de Se o dicionário de dados mantém estatísticas sobre o objeto referenciado, o otimizador utilizará estas estatísticas para fazer a seleção dos caminhos. Marque a alternativa que indica a abordagem denominada para este procedimento. Baseada em regras. Baseada em semântica. Baseada em roteamento. Baseada em custo. Baseada em processamento. 6a Questão O otimizador do Oracle transforma condições envolvendo certos operadores, no caso do operador BETWEEN, ao usarmos como o exemplo a construção: Salario BETWEEN 1000 AND 3000 A sua otimização resultante será: salário > 1000 AND salário < 3000 salário < 1000 OR salário > 3000 salário >= 1000 OR salário <= 3000 salário >= 1000 AND salário <= 3000 salário > 1000 OR salário < 3000 Gabarito Coment. 7a Questão O SGBD realiza a execução de comandos em 5 etapas. Marque a alternativa que nomeia a etapa onde o SGBD verifica a existência de tabelas, visões e colunas, bem como realiza verificações de tipos dos atributos e dados utilizados na consulta. Geração de Código Reescrita de consulta Analise semântica Analise sintática Otimização de consulta Gabarito Coment. 8a Questão Sobre algoritmos para o processamento de junções, assinale a alternativa verdadeira. O algoritmo Hash Join, altamente recomendável quando as tabelas envolvidas são pequenas, não possui qualquer relação com os índices hash, nem trabalha com a noção de buckets. Índices primários e secundários podem ser utilizados pelo algoritmo Nested-Loop Join com Índices, mas não o índice hash, pois não é ordenado. O algoritmo Nested-Loop Join pode produzir o menor custo de execução possível, desde que uma das duas tabelas possa ser armazenada por inteiro na memória. O algoritmo Sort Merge Join, baseado no clássico algoritmo Merge Sort, somente pode ser aplicado se as duas tabelas estiverem ordenadas por seus atributos de junção. A variação Block Nested-Loop Join do algoritmo Nested-Loop Join não deve ser utilizada na prática, pois sempre leva a uma maior leitura de páginas do disco.
Compartilhar