Escriturário Informática Parte 4 Prof. Márcio Hunecke
Informática BANCO DE DADOS SQL (LINGUAGEM SQL (SQL2008) LINGUAGEM HIVEQL (HIVE 2.2.0)) Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL, é a linguagem de pesquisa declarativa padrão para banco de dados relacional (base de dados relacional). Muitas das características originais do SQL foram inspiradas na álgebra relacional. A linguagem é um grande padrão de banco de dados. Isto decorre da sua simplicidade e facilidade de uso. Ela se diferencia de outras linguagens de consulta a banco de dados no sentido em que uma consulta SQL especifica a forma do resultado e não o caminho para chegar a ele. Ela é uma linguagem declarativa em oposição a outras linguagens procedurais. Isto reduz o ciclo de aprendizado daqueles que se iniciam na linguagem. A linguagem SQL é dividida em subconjuntos de acordo com as operações que queremos efetuar sobre um banco de dados, tais como: DDL Data Definition Language são usadas para definir a estrutura de banco de dados ou esquema. Alguns exemplos: CREATE- para criar objetos no banco de dados ALTER altera a estrutura da base de dados TRUNCATE remover todos os registros de uma tabela, incluindo todos os espaços alocados para os registros são removidos DML Data Manipulation Language são utilizados para o gerenciamento de dados dentro de objetos do banco. Alguns exemplos: SELECT- recuperar dados do banco de dados INSERT inserir dados em uma tabela UPDATE atualiza os dados existentes em uma tabela DELETE exclui registros de uma tabela, DCL Data Control Language declarações. Alguns exemplos: GRANT atribui privilégios de acesso do usuário a objetos do banco de dados REVOKE remove os privilégios de acesso aos objetos obtidos com o comando GRANT TCL Transaction Control Language (Controle de Transações) são usados para gerenciar as mudanças feitas por instruções DML. COMMIT salvar o trabalho feito www.acasadoconcurseiro.com.br 3
SAVEPOINT identificar um ponto em uma transação para que mais tarde você pode efetuar um ROLLBACK ROLLBACK restaurar banco de dados ao original desde o último COMMIT Principais comandos SQL Abaixo são apresentados exemplos semelhantes aos demonstrados na aula. Na linguagem SQL dois hifens transformam o restante da linha em comentário, por isso os comandos são apresentados nessa sintaxe. 4 www.acasadoconcurseiro.com.br
Banco do Brasil - TI (Escriturário) Informática Márcio Henecke www.acasadoconcurseiro.com.br 5
Resumo dos comandos utilizados. CREATE DATABASE Utilizado para Criação de uma Base de Dados CREATE TABLE Criação de uma Tabela INSERT INTO Inserção de Dados nas Tabelas SELECT Seleção e apresentação de informações WHERE Utilização de Filtros em conjunto com o Select DISTINCT Apresentação somente registros diferentes COUNT Apresentação da quantidade de registros UPDATE Atualização de registros DELETE Exclusão de registros INNER JOIN Apresentação de registros de várias Tabelas ORDER BY Ordenação dos resultados em ordem crescente ou decrescente TRUNCATE TABLE Exclusão de todos os registros de uma tabela DELETE Exclusão de todos os registros de uma tabela DROP TABLE Exclusão completa da tabela HiveQL O Hive é um framework para soluções de Data Warehousing, que executa no ambiente do Hadoop, construído inicialmente pelo time de desenvolvimento do Facebook em 2007. Ele nasceu a partir da necessidade de gerenciar, analisar e aprender sobre o comportamento dos usuários a partir dos imensos volumes de dados gerados a cada dia no Facebook. A escolha pelo Hadoop foi incentivada pelo baixo custo, escalabilidade e evitar a dependência sobre custos de licenças e manutenção anual que são comuns nos bancos de dados do mercado. Outro ponto também que levou ao desenvolvimento do Hive foi o baixo desempenho das soluções de mercado para realizar operações de Full Scan em grandes volumes de dados. O Hive foi criado também visando aproveitar os "skills" de uso do SQL dos analistas e desenvolvedores do Facebook, que não eram na época tão proficientes em Java para usar o MapReduce. Atualmente é um projeto da Apache ( http://hive.apache.org). Como a finalidade principal do Hive é analisar dados, o mesmo deve ser capaz de se integrar com soluções de Business Intelligence existentes no mercado. Hive utiliza uma linguagem chamada HiveQL (Hive Query Language), que transforma as sentenças SQL em Jobs MapReduce executados no cluster Hadoop. O Hive não foi desenhado para executar queries em Tempo real, com tempo repostas imediatas. Foi desenhado para melhor performance analisando grandes quantidades de dados que se 6 www.acasadoconcurseiro.com.br
Banco do Brasil - TI (Escriturário) Informática Márcio Henecke encontram em clusters. Normalmente são estes tipos de queries que temos em painéis analíticos de aplicações de Business Intelligence, que usualmente utilizam operadores do tipo Somas, Contagens etc, que em ambientes usuais de data warehouse podem consumir horas para que estes tipos de query retornem resultado. Resumo das principais características da linguagem HiveQL e seus componentes Apache Hadoop conjunto de softwares livre baseados em Java para processamento de grande volume de dados. Apache Hive é um software para Data Warehouse construído na plataforma Apache Hadoop que utiliza a linguagem HiveQL para realização de consultas e análises em grandes volumes de dados. HiveQL linguagem muita parecida com SQL que sempre estará relacionada com pesquisas e consultas em grandes base de dados (Data Warehouse / Big Data) e muito utilizado em sistema de Business Intelligence (BI). www.acasadoconcurseiro.com.br 7
Questões 1. (2018 CESPE ABIN Oficial Técnico de Inteligência Área 9) Tendo como referência o código SQL precedente, julgue o item a seguir. O código em apreço realiza uma consulta que mostra o nome dos funcionários da área de INTELIGENCIA e que têm, como parte do endereço, a cidade de BRASILIA,DF. ( ) Certo ( ) Errado 2. (2018 CESPE ABIN Oficial Técnico de Inteligência Área 9) Tendo como referência o código SQL precedente, julgue o item a seguir. A palavra INTELIGENCIA está entre aspas simples por pertencer a um atributo, area, o qual tem o tipo de dados definido como caractere. ( ) Certo ( ) Errado 3. (2018 CESPE ABIN Oficial Técnico de Inteligência Área 9) Tendo como referência o código SQL precedente, julgue o item a seguir. Na cláusula WHERE, a condição de seleção area = 'INTELIGENCIA' escolhe a tupla de interesse em particular na tabela funcionario, pois area é um atributo de funcionario. ( ) Certo ( ) Errado www.acasadoconcurseiro.com.br 9
4. (2018 UECE-CEV DETRAN-CE Analista de Trânsito e Transporte Tecnologia da Informação) O comando SQL, utilizado para remover completamente uma tabela chamada gerente em um banco de dados, é denominado a) DROP gerente. b) DELETE gerente. c) DELETE * FROM gerente. d) DROP TABLE gerente. 5. (2018 COPERVE UFSC UFSC Analista de Tecnologia da Informação) Considere as seguintes tabelas de um banco de dados relacional, nas quais são armazenados dados referentes aos funcionários de uma empresa de software: Programador (Cod-P, Nome, DataContrato, Cod-G) Gerente (Cod-G, Nome, DataContrato) A chave primária da tabela Programador é o atributo Cod-P, e a chave primária da tabela Gerente é o atributo Cod-G. O atributo Cod-G na tabela Programador é uma chave estrangeira para a tabela Gerente, indicando o gerente responsável pelo projeto no qual o programador está alocado. O atributo DataContrato, presente nas duas tabelas, indica a data em que o funcionário foi contratado pela empresa. Considere, ainda, a seguinte consulta sobre esse banco de dados: Buscar os nomes dos programadores que foram contratados há mais tempo pela empresa do que o gerente do projeto no qual estão alocados. A alternativa que expressa corretamente essa consulta, na linguagem SQL, é: a) SELECT p.nome FROM Programador p, Gerente g WHERE p.cod-p = g.cod-g AND g.datacontrato > p.datacontrato b) SELECT g.nome FROM Programador p, Gerente g WHERE p.cod-g = g.cod-g AND g.datacontrato > p.datacontrato c) SELECT g.nome FROM Programador p, Gerente g WHERE p.cod-p = g.cod-g AND g.datacontrato > p.datacontrato d) SELECT p.nome FROM Programador p, Gerente g WHERE p.datacontrato < g.datacontrato e) SELECT p.nome FROM Programador p, Gerente g WHERE p.cod-g = g.cod-g AND p.datacontrato < g.datacontrato 10 www.acasadoconcurseiro.com.br
Banco do Brasil - TI (Escriturário) Informática Márcio Hencke 6. (2018 COPERVE UFSC UFSC Técnico de Tecnologia da Informação) Considere o seguinte banco de dados relacional: Funcionário (Cod-F, Nome, Salário, Cod-S) Supervisor (Cod-S, Nome, Salário) A chave primária da tabela Funcionário é o atributo Cod-F e a chave primária da tabela Supervisor é o atributo Cod-S. O atributo Cod-S na tabela Funcionário é uma chave estrangeira para a tabela Supervisor, indicando o supervisor do funcionário. Esse banco de dados será utilizado na questão. Considere a seguinte consulta, formulada na linguagem SQL: SELECT Cod-F FROM Funcionário, Supervisor WHERE Funcionário.Salário > Supervisor.Salário AND Funcionário.Cod-S = Supervisor.Cod-S A alternativa que expressa corretamente a intenção dessa consulta é buscar os códigos: a) dos funcionários que recebem salários superiores ao de algum supervisor. b) dos funcionários que recebem salários superiores aos de todos os supervisores. c) dos supervisores que recebem salários superiores aos dos seus funcionários. d) dos funcionários que recebem salários inferiores aos dos seus supervisores. e) dos funcionários que recebem salários superiores aos dos seus supervisores. 7. (2018 FGV Câmara de Salvador BA Analista de Tecnologia da Informação) Considere os comandos SQL a seguir. I. select r.* FROM R where exists (select * FROM S where r.a = s.c) II. select r.* FROM R where (select count(*) FROM S where r.a = s.c) > 0 III. select r.* FROM R where r.a in (select c FROM S) IV. select r.* FROM R where exists (select 1 FROM S where r.a = s.c) V. select distinct r.* FROM R, S where r.a = s.c Sabe-se que quatro desses comandos sempre produzem resultados com conteúdos idênticos, mesmo considerando-se diferentes instâncias de R e S. O comando que NÃO faz parte desse grupo é: www.acasadoconcurseiro.com.br 11
a) I; b) II; c) III; d) IV; e) V. 8. (2018 FCC DPE-AM Analista em Gestão Especializado de Defensoria Analista de Sistema) Para apagar todos os registros da tabela copia_eleitores utiliza-se a instrução SQL a) DELETE FROM copia_eleitores; ou TRUNCATE * FROM copia_eleitores; b) DELETE RECORDS copia_eleitores; ou DROP RECORDS FROM copia_eleitores; c) DELETE * FROM copia_eleitores; ou DELETE RECORDS copia_eleitores; d) DELETE FROM copia_eleitores; ou DELETE * FROM copia_eleitores; e) DELETE RECORDS copia_eleitores; ou TRUNCATE TABLE copia_eleitores; 9. (2018 FCC DPE-AM Assistente Técnico de Defensoria Programador) Considere que exista uma tabela denominada TabProcessos que possui os seguintes campos: NroProcesso (tipo varchar), NroVara (tipo int), CPFAutor (tipo varchar). Para que seja feita uma consulta que resulte no total de processos em cada uma das varas, o comando SQL correto é a) SELECT NroVara, COUNT (NroProcesso) FROM TabProcessos; b) SELECT NroVara, COUNT (NroProcesso) FROM TabProcessos GROUP BY NroVara; c) SELECT SUM (NroProcesso) FROM TabProcessos GROUP BY NroVara; d) SELECT COUNT (NroProcesso) FROM TabProcessos HAVING NroVara; e) SELECT NroVara, SUM (NroProcesso) FROM TabProcessos GROUP BY NroVara; 10. (2018 CESPE CGM de João Pessoa PB Auditor Municipal de Controle Interno Desenvolvimento de Sistemas) ( ) Certo ( ) Errado 11. (2018 FGV SEFIN-RO Auditor Fiscal de Tributos Estaduais) Considere as tabelas de bancos de dados T1, T2 e T3, que contêm, respectivamente, 10, 500 e 2.000 registros, e o comando SQL a seguir. select count(*) FROM T1, T2, T3 Assinale a opção que apresenta o número exibido no resultado da execução desse comando. a) 10000000 b) 1000000 12 www.acasadoconcurseiro.com.br
Banco do Brasil - TI (Escriturário) Informática Márcio Hencke c) 2000 d) 500 e) 10 12. (2017 INAZ do Pará CFF Programador) Existem vários tipos de banco de dados e eles estão presentes na nossa vida há muito tempo, a lista telefônica, por exemplo, pode ser considerado um banco de dados. Porém, independente do banco de dados existe uma linguagem de programação, designada para manipular dados e é usada por um grande número de aplicativos e organizações. Essa linguagem se chama SQL(Linguagem de Consulta Estruturada). Logo, analise o seguinte comando SQL abaixo assinalando a alternativa correta. INSERT INTO NotaFiscal (NumPedido, CodCliente, valor) SELECT Codigo, CodCliente, Total FROM Pedido WHERE Situacao = F a) Serão mesclados em uma única consulta, registros da tabela NotaFiscal juntamente com registros da tabela Pedido cujos os campos situação contenham o valor F. b) Este comando está incorreto, pois não é valido usar SELECT e INSERT em conjunto na mesma instrução SQL. c) Este comando insere na tabela NotaFiscal os registros da tabela Pedido, cujos campos Situacao contenham o valor F. d) Pode-se afirmar que ocorrerá uma inserção na tabela NotaFiscal, seguida de uma consulta na tabela pedido. e) Este comando está sintaticamente correto, porém não é valido usar SELECT e INSERT ao mesmo tempo. 13. (2017 FCC TST Técnico Judiciário Programação) Para criar um banco de dados relacional chamado Tribunal e excluir uma tabela chamada Consulta, um Programador deverá escrever corretamente as expressões SQL a) CREATE DATABASE Tribunal; e DELETE TABLE Consulta; b) INSERT DATABASE Tribunal; e DELETE TABLE = Consulta; c) CREATE DATABASE Tribunal; e DROP TABLE Consulta; d) INSERT DATABASE Tribunal; e DROP TABLE Consulta; e) INSERT DATABASE Tribunal; e DROP TABLE = Consulta; 14. (2017 FGV MPE-BA Analista Técnico Tecnologia) Tabelas R e S referentes a um banco de dados relacional. www.acasadoconcurseiro.com.br 13
Considerando as tabelas R e S apresentadas anteriormente, o comando SQL select count(*) from R, (select * from S where d=2) s resulta no número: a) 0 b) 1 c) 3 d) 6 e) 9 15. (2017 FGV SEPOG RO Analista em Tecnologia da Informação e Comunicação) A consulta SQL a seguir retorna uma série de nomes da tabela usuarios: select nome from usuarios Para obter a relação de nomes em ordem alfabética reversa você deve acrescentar ao final da consulta a) sort nome. b) sort reverse nome. c) order by nome desc. d) order by nome. e) order desc by nome. 16. (2017 FCC TST Técnico Judiciário Programação) Um Programador: I. criou uma tabela e uma view em um banco de dados relacional. II. alterou a estrutura da tabela. III. incluiu registros na tabela. Os comandos SQL utilizados nas operações realizadas em I, II e III enquadram-se, correta e respectivamente, no âmbito da a) DDL DML DDL. b) DML DML DDL. c) DML DDL DDL. d) DDL DML DML. e) DDL DDL DML. Gabarito: 1. Certo 2. Certo 3. Certo 4. D 5. E 6. E 7. E 8. D 9. B 10. Errado 11. A 12. C 13. C 14. D 15. C 16. E 14 www.acasadoconcurseiro.com.br