Prévia do material em texto
AS1 P: Com base no DER, qual código SQL abaixo está correto para exibir a quantidade de contas por tipo de conta, exibindo o tipo e a quantidade, somente dos tipos que tiverem mais de 100 contas por tipo de conta. R: SELECT tp.nm_tipo_conta, count(*) FROM tab_tipo_conta tp JOIN tab_conta co ON co.id_tipo_conta = tp.id_tipo_conta GROUP BY tp.nm_tipo_conta HAVING count(*) > 100 ORDER BY 1 P: Com base no DER, qual código SQL abaixo está correto para exibir os correntistas que morem no município de "SÃO PAULO" e que nasceram, no município de "CARAGUATATUBA" mostrando o nome do mesmo, data de nascimento, endereço, número do endereço, número da conta, saldo e tipo de conta. R: SELECT cr.nm_nome, cr.dt_nascimento, lo.nm_nome, cr.nr_numero, mu.nm_MUNICÍPIO, mu2.nm_MUNICÍPIO, co.id_conta, co.vl_saldo, tp.nm_tipo_conta FROM tab_conta co JOIN tab_correntista cr ON cr.id_correntista = co.id_correntista JOIN tab_logradouro lo, ON cr.id_cep = lo.id_cep JOIN tab_MUNICÍPIO mu ON lo.id_MUNICÍPIO = mu.id_MUNICÍPIO JOIN tab_tipo_conta tp ON co.id_tipo_conta = tp.id_tipo_conta JOIN tab_MUNICÍPIO mu2 ON cr.id_MUNICÍPIO = mu2.id_MUNICÍPIO WHERE mu.nm_MUNICÍPIO = 'SÃO PAULO' and mu2.nm_MUNICÍPIO = 'CARAGUATATUBA' P: Com base no DER abaixo, qual código SQL está correto para selecionar o número da conta, dígito da conta, saldo, nome do banco, nome da agência, e o tipo da conta do correntista "ADALTON ISIDORO" R: SELECT co.id_conta, co.nr_digito_conta, co.vl_saldo, ba.nm_banco, ag.nm_agência, tp.nm_tipo_conta FROM tab_conta co INNER JOIN tab_banco ba ON co.id_banco = ba.id_banco INNER JOIN tab_banco_agência ag ON co.id_banco = ag.id_banco AND co.id_agência = ag.id_agência INNER JOIN tab_correntista cr ON cr.id_correntista = co.id_correntista INNER JOIN tab_tipo_conta tp ON co.id_tipo_conta = tp.id_tipo_conta WHERE cr.nm_nome = 'ADALTON ISIDORO' AS2 P: Considere a tabela T de um banco de dados relacional: T (ID, Nome, Fone) Indique a alternativa que contém a consulta SQL correta para criar uma visão V, a partir da tabela T, apenas para os Nomes começando pela letra J. R: CREATE VIEW V AS (SELECT ID, Nome, Fone FROM T WHERE Nome LIKE ‘J%’) P: Na base de dados de um sistema de controle de clientes, foi criada a tabela CLIENTES, que conta com as colunas: ID, NOME, ENDERECO, CIDADE e UF. Os valores da coluna ID não se repetem devido ser campo chave. Sobre essa tabela CLIENTES foi criada a visão VCLIENTES_RJ, que busca apresentar os clientes do estado do Rio de Janeiro. O comando de criação da visão VCLIENTES_RJ é: CREATE VIEW VCLIENTES_RJ AS SELECT ID, NOME, ENDERECO, CIDADE, UF FROM CLIENTES WHERE UF = ‘RJ’ Um usuário submeteu o seguinte comando para execução pelo gerenciador do banco de dados: UPDATE VCLIENTES_RJ SET NOME =’JOAO’ WHERE ID IN (1,2,3) AND UF = ‘SP’ O comando UPDATE acima, quando submetido para execução, resulta na atualização de: R: nenhuma linha, pois não é possível realizar atualização sobre visões. P: Qual comando é utilizado para apagar uma sequence com nome de “SQ_CLIENTE”? R: DROP SEQUENCE SQ_CLIENTE; P: Considere a instrução Oracle PL/SQL a seguir. CREATE VIEW valores (nome, minsal, maxsal, medsal) AS SELECT d.depnome, MIN(e.sal), MAX(e.sal), AVG(e.sal) FROM empregado e JOIN departamento d JOIN e.depnro=d.depnro GROUP BY d.depnome; Considere a existência das tabelas departamento e empregado, relacionadas de forma que cada departamento possa ter um ou muitos empregados ligados a ele. Na tabela departamento, existem os campos depnro (chave primária) e depnome, e na tabela empregado existem os campos empnro (chave primária), empnome, cargo, sal e depnro (chave estrangeira). Considere que, em ambas as tabelas, existem registros cadastrados relacionando adequadamente departamentos e empregados. A instrução acima: R: está correta, e a view será criada com os nomes de departamento e os valores mínimo, máximo e médio dos salários por departamento. AS3 P: O Dicionário de Dados de um Banco de Dados relacional R: armazena, entre outras informações, nomes de Tabelas e de seus atributos P: A estrutura que, além de ser organizada sob a forma de uma lista organizada de todos os elementos de Dados pertinentes ao Sistema, também constitui ponto de referência de todos os elementos desse Sistema, permitindo associar um significado a cada termo utilizado, é tecnicamente conhecida como: R: Dicionário de Dados. P: Há cinco categorias de views de Dicionário de Dados. Qual categoria é destinada a objetos pertinentes ao usuário? R: USER_. P: Observe as seguintes afirmativas: I – Dicionários de Dados auxiliam a manter a integridade de Sistemas. II – Dicionários de Dados facilitam a integração entre diferentes Sistemas. III – Dicionários de Dados determinam os requisitos do Sistema. IV – Dicionários de Dados auxiliam a tarefa de manutenção de Sistemas. R: I, II e IV. AS4 P: A linguagem PL/SQL permite o uso de comandos SELECT diretamente dentro do programa. A seguir, são apresentados trechos PL/SQL para obter o salário (coluna Salario) do empregado (tabela EMPREGADO) de matrícula (coluna Matrícula) igual a 4050. Qual dos blocos PL/SQL abaixo está correto, considerando que existe um único empregado com matrícula 4050: R: DECLARE v_sal EMPREGADO.Salario%Type; BEGIN SELECT salario INTO v_sal FROM empregado WHERE matricula=4050; END; P: Em PL-SQL (Procedural Language/Structured Query Language), quanto aos cursores explícitos, os três comandos essenciais existentes são: R: OPEN, FETCH e CLOSE P: Quais são os três tipos de blocos PL/SQL? R: Anônimo, Procedures e Functions. P: Analise o scritpt Oracle PL/SQL a seguir: DECLARE c_livroid livro.livroid%type; c_titulo livro.titulo%type; CURSOR c_livros is SELECT livroid, titulo FROM livro; BEGIN OPEN c_livros; LOOP .......; EXIT WHEN c_livros%notfound; dbms_output.put_line(c_livroid || ' ' || c_titulo); END LOOP; CLOSE c_livros; END; Para que esse script funcione corretamente, exibindo os códigos identificadores e títulos de cada livro, a linha pontilhada deve ser substituída por: R: FETCH c_livros into c_livroid, c_titulo AS5 P: Considerando o conceito de procedimentos armazenados (stored procedures), presentes em bancos de dados relacionais, é CORRETO afirmar que: R: são armazenados, de forma persistente, no banco de dados. P: Qual a diferença entre FUNCTION e STORED PROCEDURE? R: A FUNCTION retorna valor e a STORED PROCEDURE não retorna valor. P: Tendo como base a tabela TAB_EMPREGADO abaixo, assinale a alternativa que apresenta o script CORRETO para criar uma procedure com nome P_AUMENTO, para aumentar o valor dos salários do empregado com o ID do empregado e a porcentagem de aumento passando via parâmetro. R: create or replace PROCEDURE p_aumento( v_id tab_empregado.id_empregado%type, v_aumento tab_empregado.salario%type ) IS BEGIN UPDATE tab_empregado set salario = (salario + ((salario * v_aumento)/100)) where id_empregado = v_id; END p_aumento; P: Considere a tabela EMP em um banco de dados Oracle, contendo os campos ID, NOME, CARGO e SALARIO. Considere ainda que a procedure seguinte tem a intenção de reajustar o salário de todos os funcionários em 20%: CREATE OR REPLACE PROCEDURE aumento BEGIN UPDATE EMP SET SALARIO = SALARIO * 1.2; END; Para que a procedure seja considerada CORRETA, é necessário R: acrescentar a palavra-chave IS imediatamente antes da instrução BEGIN. AS6 P: Triggers são: R: Procedimentos armazenados, cuja execução é disparada antes ou depois da ocorrência de um evento em uma Tabela com o qual estão relacionados. P: Em Banco deDados, Triggers são: R: Objetos armazenados que são automaticamente executados em resposta à execução de algum evento P: O desenvolvedor precisar criar um gatilho para garantir que, no momento da inserção das informações na Tabela tb_produto, caso o campo estoque esteja vazio, seja gravado o valor 0 (Zero). Como seria a criação da trigger para atender a esse caso? R: CREATE OR REPLACE TRIGGER trg_produto_estoque BEFORE INSERT ON tb_produto FOR EACH ROW BEGIN IF :NEW.estoque IS NULL THEN :NEW.estoque := 0 END IF END P: Qual das Exceptions a seguir consiste em erro interno do PL/SQL? R: PROGRAM_ERROR.