Baixe o app para aproveitar ainda mais
Prévia do material em texto
1. Uma imobiliária possui um banco de dados com informações de clientes e imóveis. Entre as tabelas do sistema existem as tabelas abaixo: Analise a expressão da álgebra relacional: O resultado da expressão acima retorna Explicação: O produto cartesiano retornará uma combinação de todas as linhas das tabelas envolvidas, para as quais CLIENTE.estado = IMOVEL.local: A seleção atuará e retornará somente as linhas cujo estado = RJ. A projeção atuará e retornará somente as colunas nome e tipo. 2. Uma linguagem de consulta procedural, onde o objetivo fundamental é permitir a escrita de expressões relacionais é denominada de álgebra relacional. Com suas operações fundamentais é possível exprimir qualquer consulta nesta linguagem. Sendo assim, para apresentar os dados de acordo com a tabela abaixo, marque a alternativa correta que descreve a álgebra a ser utilizada. Produto.Nome Produto.Qualidade Estoque.Qtde Laranja 1 100 Laranja 2 150 Uva 1 200 Uva 2 130 Trigo 2 240 Pêssego 1 260 Pêssego 2 190 πNome, Qualidade, Qtde(σProduto.Cod_Prod = Estoque.Cod_Prod(Produto X Estoque)) σProduto.Cod_Prod = Estoque.Cod_Prod(Produto X Estoque) πNome, Qualidade, Qtde σProduto.Cod_Prod = Estoque.Cod_Prod(πNome, Qualidade, Qtde) πNome, Qualidade, Qtde(σProduto.Cod_Prod = Estoque.Cod_Prod) 3. I, III e IV. I, II e IV. II, III e IV. I e III. I e II. 4. A operação da álgebra relacional que recupera linhas em uma tabela é denominada: Seleção Projeção Diferença Junção Produto cartesiano 5. Álgebra Relacional é o conjunto de operações sobre modelos relacionais de dados. Referente as operações de álgebra relacional, relacione cada uma com os objetivos apresentados a seguir. 1. Seleção 2. Projeção 3. Produto Cartesiano 4. Junção ( ) É utilizada para selecionar um subconjunto de tuplas de uma relação. ( ) Seleciona um conjunto determinado de colunas de uma relação. ( ) É uma operação binária que combina todas as tuplas de duas relações. ( ) O resultado conterá apenas as tuplas que se relacionam de acordo com uma determinada condição. A relação correta entre as camadas e as características, de cima para baixo, é: 1, 3, 4, 2 2, 1, 4, 3 2, 1, 3, 4 1, 2, 3, 4 1, 2, 4, 3 6. 7. Considere a seguinte tabela criada: Aluno {matricula, nome, email} Marque a alternativa que representa em Álgebra Relacional, a PROJEÇÃO apenas do nome do aluno cuja matrícula é 0364. 8. Em relação a álgebra relacional, o operador de _____________ permite combinar seleções e um produto cartesiano em uma só operação. União Junção Diferença Interseção Projeção 1. Considere o modelo de banco de dados abaixo: medico (CRM, NomeMedico, Idade,Cidade,Especialidade); paciente (Ident,NomePaciente,Idade,Cidade,Doenca); consulta (Ident, CRM, Data, Hora); Qual alternativa altera a idade do paciente "Fulano de tal"?. update paciente set idade=25 where nomePaciente="Fulano de tal" insert into paciente (idade) values (25) where nomePaciente="Fulano de tal" update paciente where nomePaciente="Fulano de tal" alter paciente set idade=25 where nomePaciente="Fulano de tal" alter paciente set idade=25 2. Em um banco de dados, que comando SQL é utilizado para eliminar uma tabela? DELETE UPDATE ALTER DROP INSERT 3. São comandos da categoria de Manipulação de Dados (DML): SELECT CREATE / ALTER / DROP COMMIT / ROLLBACK INSERT / UPDATE / DELETE GRANT / REVOKE 4. Qual dos comandos SQL abaixo pode ser utilizado para incluir na definição da tabela aluno o atributo CPF com 11 caracteres? add into aluno cpf char(11); update table aluno insert cpf char(11); alter table aluno add cpf char(11); insert into aluno cpf char(11); alter table aluno insert cpf char(11); 5. (PRODEST-ES/2014) Sobre a chave primária de uma tabela de um banco de dados relacional, é correto afirmar que: não pode conter atributos do tipo textual. pode ser composta por mais de um atributo. pode conter, no máximo, três atributos. não há chave primária em tabelas com até 100 registros. não pode conter atributos do tipo numérico. 6. Marque a opção onde certamente ocorrerá um erro de execução: insert into disciplina(codigo, nome) values (1, Implementação de BD); insert into disciplina values (1, Implementação de BD), (2, Modelagem de Dados); insert from disciplina values (1, Implementação de BD); insert into disciplina(codigo, nome) values (1, Implementação de BD); insert into disciplina(codigo, nome) values (100+1, Implementação de BD); 7. Assinale a opção que possui o comando CREATE TABLE que cria corretamente a tabela "Alunos", segundo o seguinte esquema de banco de dados: Alunos(matricula, nome, endereco, cod_curso) Cursos(codigo, nome) Admitindo que os campos "matricula" e "codigo" são chaves primárias de suas tabelas e que o campo "cod_curso" é chave estrangeira da tabela "Cursos" na tabela "Alunos". create table Alunos ( matricula int not null, nome varchar(50) not null, endereco varchar(255) null, cod_curso int not null, constraint pk_alunos primary key (matricula), constraint fk_alunos_cursos foreign key (cod_curso) references Cursos(codigo) ) create table Alunos ( matricula int not null, nome varchar(50) not null, endereco varchar(255) null, cod_curso int not null, constraint pk_alunos primary key (matricula) ) create table Alunos ( matricula int not null, nome varchar(50) not null, endereco varchar(255) null, cod_curso int not null, constraint pk_alunos primary key (matricula), constraint fk_alunos_cursos foreign key (codigo) references Cursos(cod_curso) ) create table Alunos ( matricula int not null, nome varchar(50) not null, endereco varchar(255) null, cod_curso int not null, constraint fk_alunos_cursos foreign key (cod_curso) references Cursos(codigo) ) create table Alunos ( matricula int not null, nome varchar(50) not null, endereco varchar(255) null, cod_curso int not null, constraint pk_alunos primary key (nome), constraint fk_alunos_cursos foreign key (cod_curso) references Cursos(codigo) ) 8. UPDATE Anuncio SET ValorAnunciado TO ValorAnunciado*0.8 WHERE CodAnuncio = 9 UPDATE Anuncio INSERT ValorAnunciado = 108 WHERE CodAnuncio = 9 UPDATE Anuncio SET ValorAnunciado = ValorAnunciado*0.8 WHERE CodAnuncio = 9 UPDATE Anuncio INSERT ValorAnunciado TO 108 WHERE CodAnuncio = 9 UPDATE Anuncio SET ValorAnunciado = ValorAnunciado*80% WHERE CodAnuncio = 9 1. O esquema de banco de dados apresentado abaixo faz parte de um banco de dados criado a partir de um conjunto de dados públicos de captura de tubarões entre os anos de 2001 e 2013 na costa da Austrália. Os dados podem ser baixados no endereço: https://data.qld.gov.au/dataset/shark-control-program-shark-catch-statistics/resource/5c6be990-3938-4125-8cca-dac0cd734263 Características do esquema: Chave primária sublinhada e chave estrangeira em itálico. Seguem algumas tabelas do Esquema: Espécie (IDEspécie, IDOrdem. Nome_Científico,TamMaior, TamMenor, TamMédio) Tubarão (IDTubarão, IDEspécie, Comprimento, Sexo) Captura (NumCaptura, IDTubarão, IDLocal, Data, TempAgua) Local (IDLocal, CodArea, NomeLocal) Area (CodArea, NomeArea)--- Sabendo-se que um metro possui 39,3700787 polegadas, assinale a alternativa correto abaixo que consulta a data da captura, a temperatura da água e o comprimento do tubarão convertido em polegadas com o título Polegadas: SELECT DATA, TEMPAGUA, COMPRIMENTO * 39.3700787 Polegadas FROM TUBARÃO T, CAPTURA C; SELECT DATA, TEMPAGUA, (COMPRIMENTO * 39,3700787) Polegadas FROM TUBARÃO T, CAPTURA C WHERE C.IDTUBARÃO = T.IDTUBARÃO; SELECT DATA, TEMPAGUA, "COMPRIMENTO * 39,3700787" Polegadas FROM TUBARÃO T, CAPTURA C WHERE C.IDTUBARÃO = T.IDTUBARÃO; SELECT DATA, TEMPAGUA, COMPRIMENTO * 39.3700787 Polegadas FROM TUBARÃO T, CAPTURA C WHERE C.IDTUBARÃO = T.IDTUBARÃO; SELECT DATA, TEMPAGUA, COMPRIMENTO * 39,3700787 Polegadas FROM TUBARÃO T, CAPTURA C WHERE C.IDTUBARÃO = T.IDTUBARÃO; 2. Considere a seguinte consulta SQL:SELECT XXX A FROM TAB.Para que não haja repetições nos valores obtidos como resposta para o atributo A, XXX deve ser substituído por: SINGLE ALL DISTINCT LIKE IN 3. Considere a consulta a seguinte: Marque a alternativa que representa o script equivalente em SQL: SELECT * FROM aluno WHERE nome, matricula = 0364; SELECT matricula = 0364 FROM aluno WHERE nome; SELECT aluno WHERE matricula = 0364; SELECT nome FROM aluno WHERE matricula = 0364; SELECT aluno FROM nome WHERE matricula = 0364; 4. De acordo com o modelo de dados definido pelas tabelas a seguir, indique a instrução SQL adequada para: Apresentar apenas o nome completo do Empregado que atende ao Cliente ¿Ponto Quente¿. SELECT PRIM_NOME, ULT_NOME FROM EMPREGADO E, CLIENTE C WHERE C.VENDEDOR = E.ID AND C.NOME=' Ponto Quente'; SELECT PRIM_NOME, ULT_NOME FROM EMPREGADO C, CLIENTE E WHERE C.VENDEDOR = E.ID AND C.NOME=' Ponto Quente'; SELECT PRIM_NOME || || ULT_NOME FROM EMPREGADO E, CLIENTE C WHERE E.VENDEDOR = C.ID AND C.NOME=' Ponto Quente'; SELECT PRIM_NOME || || ULT_NOME FROM EMPREGADO E, CLIENTE C WHERE C.VENDEDOR = E.ID AND C.NOME= 'Ponto Quente'; SELECT PRIM_NOME, ULT_NOME FROM EMPREGADO E, CLIENTE C WHERE C.NOME='Ponto Quente'; 5. Observe a tabela abaixo, referente a um banco de dados empresa: Para gerar uma consulta SQL com todos os atributos, classificados por NOME_PACIENTE, deve-se utilizar o seguinte comando: SELECT * OVER PACIENTE ORDER BY NOME_PACIENTE; SELECT * OVER PACIENTE ASC NOME_PACIENTE; SELECT * FROM PACIENTE ASC NOME_PACIENTE; SELECT * FROM PACIENTE DESC NOME_PACIENTE; SELECT * FROM PACIENTE ORDER BY NOME_PACIENTE; 6. Considere a relação abaixo: AUTOMÓVEL (placa, fabricante, modelo, cor, data_de_fabricação) A consulta SQL que responde a questão "Liste todos os automóveis (placa, modelo, cor) fabricados pela VW ou pela Fiat" é: SELECT PLACA, MODELO, COR FROM AUTOMOVEL WHERE FABRICANTE = VW AND FABRICANTE = FIAT; SELECT PLACA, MODELO, COR FROM AUTOMOVEL WHERE FABRICANTE IS (VW, FIAT); Nenhuma das resposta acima. SELECT PLACA, MODELO, COR FROM AUTOMOVEL WHERE FABRICANTE BETWEEN VW AND FIAT; SELECT PLACA, MODELO, COR FROM AUTOMOVEL WHERE FABRICANTE IN (VW, FIAT); 7. Um programador precisa utilizar, em uma aplicação conectada a um banco de dados Oracle, uma instrução SQL para exibir apenas os nomes de funcionários da tabela func cujo campo nome se inicie pela letra P. A instrução correta que deve ser utilizada é SELECT nome FROM func LIKE nome=P%; SELECT nome FROM func WHERE nome CONTAINS P%; SELECT nome FROM func WHERE nome=P%; SELECT nome FROM func WITH P% IN nome; SELECT nome FROM func WHERE nome LIKE P%; 8. SELECT DISTINCT NOMEP "Nome do Professor" FROM PROFESSOR P , TCC T, ALUNO A; SELECT DISTINCT NOMEP "Nome do Professor" FROM PROFESSOR P , TCC T, ALUNO A WHERE P.MATP = A.MATP AND A.MATA = T.MATA; SELECT NOMEP "Nome do Professor" FROM PROFESSOR P , TCC T, ALUNO A WHERE P.MATP = A.MATP AND A.MATA = T.MATA; SELECT DISTINCT NOMEP FROM PROFESSOR P , TCC T, ALUNO A; SELECT NOMEP FROM PROFESSOR P , TCC T, ALUNO A WHERE P.MATP = A.MATP AND A.MATA = T.MATA; 1. Acerca do conjunto de operações para manipulação de dados, marque a alternativa correta: O operador AND faz a checagem de valores zerados A cláusula WHERE restringe o número de linhas no resultado da consulta A cláusula ORDER BY ordena, por padrão, os valores decrescentemente O operador LIKE é usado para operações de booleanos O operador ALIAS é usado para renomear definitivamente colunas e tabelas 2. Observe a tabela empregado: Qual a quantidade de registros retornados ao efetuarmos a consulta abaixo: 4 3 0 1 2 3. Durante uma consulta SQL, utilizando o comando select, é possível selecionar linhas que se assemelham em uma determinada porção de uma string. Qual é o operador utilizado para esse tipo de seleção? Operador de comparação (=,>,<) Operador de Intervalos (between) Operador de indisponibilidade (maybe) Operador de Listas(in) Operador de Caracteres semelhantes (like) 4. Considere a relação: PRODUTO (codigo, unidade, descrição, valor_unitário) A consulta em SQL para reponder a questão "Liste o código dos produtos com valores unitários entre R$ 500,00 e R$ 1000,00" é: SELECT CODIGO FROM PRODUTO WHERE VALOR_UNITARIO IN [500, 1000]; Nenhuma das consultas acima. SELECT CODIGO FROM PRODUTO WHERE VALOR_UNITARIO > 500; SELECT CODIGO FROM PRODUTO WHERE VALOR_UNITARIO LIKE 500 AND 1000; SELECT CODIGO FROM PRODUTO WHERE VALOR_UNITARIO BETWEEN 500 AND 1000; 5. DELETE ALL FROM ALUGUEL WHERE CODIMOVEL IS NULL DELETE FROM ALUGUEL WHERE CODIMOVEL IS NOT NULL DELETE FROM ALUGUEL WHERE CODANUNCIO IS NOT NULL DELETE ALL FROM ALUGUEL WHERE CODANUNCIO IS NULL DELETE * FROM ALUGUEL WHERE CODANUNCIO IS NULL 6. O comando SQL para excluir os registros da tabela Aluno, cujo campo nome comece com a letra M, é: DELETE FROM Aluno WHERE nome=M. DELETE FROM Aluno WHERE nome SUCH %M. DELETE FROM Aluno DELETE FROM Aluno WHERE nome LIKE M%. DELETE FROM Aluno WHERE nome LIKE G%. 7. O comando SELECT FROM WHERE corresponde as seguintes operações da álgebra relacional: Seleção e Junção Seleção e Projeção Projeção e União Seleção e Diferença União e Interseção 8. Acerca do conjunto de operações para manipulação de dados, marque a alternativa correta: O predicado LIKE é um predicado com operações de boleanos. A cláusula ORDER BY possibilita ordenar a filtragem feita por GROUP BY. Nenhuma das respostas anteriores. O Predicado BETWEEN retorna resultados entre dois valores fornecidos pelo usuário. O predicado IS NULL faz a checagem de valores zerados. 1. Considere a relação: FUNCIONARIO (matrícula, cargo, salario, admissao) A consulta SQL que mostra média dos salários dos funcionários é: SELECT SUM(SALARIO) FROM FUNCIONARIO; Nenhuma das respostas acima. SELECT SALARIO FROM FUNCIONARIO AVG; SELECT MEDIA(SALARIO) FROM FUNCIONARIO;SELECT AVG(SALARIO) FROM FUNCIONARIO; 2. Para o comando apresentado a seguir, indique a alternativa que apresenta o resultado obtido com a sua execução: SELECT ID, DESCRICAO FROM Turma ORDER BY DESCRICAO desc; Seleciona os campos ID e DESCRICAO da tabela Turma ordenando os registros por DESCRICAO em ordem decrescente Seleciona todos os campos da tabela Turma ordenando os registros por DESCRICAO em ordem decrescente Seleciona os campos ID e DESCRICAO da tabela Turma Seleciona todos os registros da tabela Turma Seleciona todos os campos e os registros da tabela turma 3. Considere a seguinte tabela de Empregados: Empregado (CodEmpregado, Nome, Salario) Escolha o comado SQL que liste o nome de todos os empregados sem repetição e em ordem decrescente: SELECT Nome FROM Empregado ORDER BY Nome SELECT Nome FROM Empregado ORDER BY DISTINCT Nome SELECT DISTINCT Nome FROM Empregado GROUP BY Nome SELECT DISTINCT Nome FROM Empregado ORDER BY Nome DESC SELECT ORDER BY Nome FROM Empregado WHERE DISTINCT Nome 4. Após a execução dos seguintes comandos em linguagem SQL: CREATE TABLE Carros (Codigo int PRIMARY KEY, Modelo varchar(30)) INSERT INTO Carros VALUES (NULL, Alfa Romeo) INSERT INTO Carros VALUES (5000, Mazda) SELECT COUNT(*) FROM Carros Será retornado o valor: NULL 0 5000 2 1 5. O esquema de banco de dados apresentado abaixo faz parte de um banco de dados criado a partir de um conjunto de dados públicos de captura de tubarões entre os anos de 2001 e 2013 na costa da Austrália. Os dados podem ser baixados no endereço: https://data.qld.gov.au/dataset/shark-control-program-shark-catch-statistics/resource/5c6be990-3938-4125-8cca-dac0cd734263 Características do esquema: Chave primária sublinhada e chave estrangeira em itálico. Seguem algumas tabelas do Esquema: Espécie (IDEspécie, IDOrdem. Nome_Científico, TamMaior, TamMenor, TamMédio) Tubarão (IDTubarão, IDEspécie, Comprimento, Sexo) Captura (NumCaptura, IDTubarão, IDLocal, Data, TempAgua) Assinale a alternativa abaixo que retorna a média de comprimento dos tubarões e a temperatura mínima e máxima da água agrupadas pelo nome científico da Espécie: SELECT Nome_Científico, SUM(Comprimento), MIN(TempAgua), MAX(TempAgua) FROM ESPÉCIE E, TUBARÃO T, CAPTURA C WHERE E.IDEspecie = T.IDEspecie AND T.IDTubarão = C.IDTubarão GROUP BY (Nome); SELECT Nome_Científico, SUM(Comprimento), MIN(TempAgua), MAX(TempAgua) FROM ESPÉCIE E, TUBARÃO T, CAPTURA C WHERE E.IDEspecie = T.IDEspecie AND T.IDTubarão = C.IDTubarão GROUP BY (Nome_Científico); SELECT Nome_Científico, AVG(Comprimento), MIN(TempAgua), MAX(TempAgua) FROM ESPÉCIE E, TUBARÃO T, CAPTURA C WHERE E.IDEspecie = T.IDEspecie AND T.IDTubarão = C.IDTubarão GROUP BY (Nome_Científico); SELECT IDEspecie, AVG(Comprimento), MAX(TempAgua), MIN(TempAgua) FROM ESPÉCIE E, TUBARÃO T, CAPTURA C WHERE E.IDEspecie = T.IDEspecie AND T.IDTubarão = C.IDTubarão GROUP BY (Nome_Científico); SELECT Nome, AVG(Comprimento), MIN(TempAgua), MAX(TempAgua) FROM ESPÉCIE E, TUBARÃO T, CAPTURA C WHERE E.IDEspecie = T.IDEspecie AND T.IDTubarão = C.IDTubarão GROUP BY (Nome_Científico); 6. II e III. I e III. I e II. I, II e III. Somente I. 7. Quando usar o Group By Quando usar a Função Where Sempre apos o comando Where Quando usar funções de Coluna Quando usar o Order By em conjunto com a função SUM Quando Usar o Order By 8. Em uma instrução SQL, para manipular dados retornados de funções agregadoras, utiliza-se a cláusula SHOW HAVING ORDER BY GROUP IN UNIQUE OUT 1. Em uma junção Cruzada entre três tabelas com respectivamente 10, 8 e 4 resgistros, gerará uma saída com quantos registros? 220 registros 320 registros 160 registros 20 registros 22 registros 2. Acerca do conjunto de operações para manipulação de dados, marque a alternativa correta: O operador LIKE é usado para operações com booleanos DESC é dispensável à cláusula ORDER BY quando se deseja ordenar decrescentemente O operador AND faz a checagem de valores zerados O operador IN pode ser usado para comparar valores na cláusula WHERE O operador ALIAS é usado para renomear definitivamente colunas e tabelas 3. Considere o seguinte comando SQL: SELECT D.NM_DEPARTAMENTO, SUM(P.SALARIO) FROM TB_DEPARTAMENTO D INNER JOIN TB_PROFESSOR P ON (D.COD_DEPARTAMENTO = P.COD_DEPARTAMENTO) É CORRETO afirmar: soma total. Se existir uma linha na tabela TB_PROFESSOR com valor NULO (NULL) para o atributo SALARIO, o resultado da consulta também será um valor NULO (NULL). A consulta irá retornar o mesmo número de linhas da tabela TB_PROFESSOR. A junção INNER JOIN não pode ser utilizada com a função de agregação SUM( ). A sintaxe do comando está incorreta, pois deveria apresentar a cláusula GROUP BY. 4. Na sintaxe ANSI da junção Interior, na sua forma padrão é: select [colunas] from tabela1 LEFT JOIN tabela2 ON ; select [colunas] from tabela1 INNER JOIN tabela2 ON ; select [colunas] from tabela1 RIGHT JOIN tabela2 ON ; select * from tabela1 LEFT JOIN tabela2; select * from tabela1 CROSS JOIN tabela2; 5. cinco quatro sete três seis 6. O comando select permite gerar produto cartesiano porque os bancos relacionais utilizam álgebra relacional. O select permite produto cartesiano mas por outra ração que não é a algebra relacional. Ambas sentenças estão erradas. Ambas sentenças estão certas. A primeira sentença está errada porém a segunda está certa. A primeira sentença está certa porém a segunda está errada. 7. SELECT fi.nome filial, count(*) FROM Filial fi INNER JOIN Carro c ON fi.idfilial=c.filial_idfilial SELECT fi.nome filial, count(*) FROM Filial fi LEFT JOIN Carro c ON fi.idfilial=c.filial_idfilial GROUP BY filial SELECT fi.nome filial, count(*) FROM Filial fi INNER JOIN Carro c SELECT fi.nome filial, count(*) FROM Filial fi RIGHTJOIN Carro c ON fi.idfilial=c.filial_idfilial GROUP BY filial SELECT fi.nome filial, count(*) FROM Filial fi INNER JOIN Carro c ON fi.idfilial=c.filial_idfilial GROUP BY filial 8. oito linhas. seis linhas. quinze linhas. cinco linhas. dez linhas. 1. Em uma junção Cruzada entre três tabelas com respectivamente 10, 8 e 4 resgistros, gerará uma saída com quantos registros? 220 registros 320 registros 160 registros 20 registros 22 registros 2. Acerca do conjunto de operações para manipulação de dados, marque a alternativa correta: O operador LIKE é usado para operações com booleanos DESC é dispensável à cláusula ORDER BY quando se deseja ordenar decrescentemente O operador AND faz a checagem de valores zerados O operador IN pode ser usado para comparar valores na cláusula WHERE O operador ALIAS é usado para renomear definitivamente colunas e tabelas 3. Considere o seguinte comando SQL: SELECT D.NM_DEPARTAMENTO, SUM(P.SALARIO) FROM TB_DEPARTAMENTO D INNER JOIN TB_PROFESSOR P ON (D.COD_DEPARTAMENTO = P.COD_DEPARTAMENTO) É CORRETO afirmar:soma total. Se existir uma linha na tabela TB_PROFESSOR com valor NULO (NULL) para o atributo SALARIO, o resultado da consulta também será um valor NULO (NULL). A consulta irá retornar o mesmo número de linhas da tabela TB_PROFESSOR. A junção INNER JOIN não pode ser utilizada com a função de agregação SUM( ). A sintaxe do comando está incorreta, pois deveria apresentar a cláusula GROUP BY. 4. Na sintaxe ANSI da junção Interior, na sua forma padrão é: select [colunas] from tabela1 LEFT JOIN tabela2 ON ; select [colunas] from tabela1 INNER JOIN tabela2 ON ; select [colunas] from tabela1 RIGHT JOIN tabela2 ON ; select * from tabela1 LEFT JOIN tabela2; select * from tabela1 CROSS JOIN tabela2; 5. cinco quatro sete três seis 6. O comando select permite gerar produto cartesiano porque os bancos relacionais utilizam álgebra relacional. O select permite produto cartesiano mas por outra ração que não é a algebra relacional. Ambas sentenças estão erradas. Ambas sentenças estão certas. A primeira sentença está errada porém a segunda está certa. A primeira sentença está certa porém a segunda está errada. 7. SELECT fi.nome filial, count(*) FROM Filial fi INNER JOIN Carro c ON fi.idfilial=c.filial_idfilial SELECT fi.nome filial, count(*) FROM Filial fi LEFT JOIN Carro c ON fi.idfilial=c.filial_idfilial GROUP BY filial SELECT fi.nome filial, count(*) FROM Filial fi INNER JOIN Carro c SELECT fi.nome filial, count(*) FROM Filial fi RIGHTJOIN Carro c ON fi.idfilial=c.filial_idfilial GROUP BY filial SELECT fi.nome filial, count(*) FROM Filial fi INNER JOIN Carro c ON fi.idfilial=c.filial_idfilial GROUP BY filial 8. oito linhas. seis linhas. quinze linhas. cinco linhas. dez linhas. 1. SELECT NOMETIPOIMOVEL, TAMANHO, NUMQUARTOS || - || NUMBANHEIROS "NUMERO QUARTOS E BANHEIROS" FROM IMOVEL , TIPOIMOVEL WHERE NOMETIPOIMOVEL = APARTAMENTO PADRÃO; SELECT NOMETIPOIMOVEL, TAMANHO, NUMQUARTOS || - || NUMBANHEIROS "NUMERO QUARTOS E BANHEIROS" FROM IMOVEL I, TIPOIMOVEL T WHERE I.CODTIPOIMOVEL = T.CODTIPOIMOVEL AND NOMETIPOIMOVEL = APARTAMENTO PADRÃO; SELECT NOMETIPOIMOVEL, TAMANHO, NUMQUARTOS , NUMBANHEIROS "NUMERO QUARTOS E BANHEIROS" FROM IMOVEL I, TIPOIMOVEL T WHERE I.CODTIPOIMOVEL = T.CODTIPOIMOVEL; SELECT NOMETIPOIMOVEL, TAMANHO, NUMQUARTOS "NUMERO QUARTOS E BANHEIROS", NUMBANHEIROS FROM IMOVEL , TIPOIMOVEL WHERE UPPER(NOMETIPOIMOVEL) = APARTAMENTO PADRÃO; SELECT NOMETIPOIMOVEL, TAMANHO, NUMQUARTOS || - || NUMBANHEIROS "NUMERO QUARTOS E BANHEIROS" FROM IMOVEL I, TIPOIMOVEL T WHERE I.CODTIPOIMOVEL = T.CODTIPOIMOVEL AND UPPER(NOMETIPOIMOVEL) = APARTAMENTO PADRÃO; 2. eM um banco de dados há três tabelas: T1, T2 e T3, com 10, 20 e 30 registros respectivamente. Cada tabela possui um atributo A, sobre o qual é definida uma chave primária. Nesse cenário, está correto concluir que o comando select T1.* from T1 cross join T2 cross join T3 produz um resultado que, além da linha de títulos, possui: 20 linhas; 6.000 linhas. 600 linhas; 10 linhas; 30 linhas; 3. SEJA O MODELO: Forncedor(cod_fornec, nome_fornec, telefone, cidade, uf) Estado(UF, nome_estado) A expressão SQL que obtém os nomes dos estados para os quais não há fornecedores cadastrados é: SELECT E.UF FROM ESTADO AS E WHERE E.nome_estado NOT IN (SELECT F.UF FROM FORNECEDOR AS F) SELECT E.nome_estado FROM Estado AS E, FROM Fornecedor AS F WHERE E.UF = F.UF SELECT E.nome_estado FROM Estado AS E WHERE E.UF IN (SELECT F.UF FROM FORNECEDOR AS F) SELECT E.nome_estado FROM Estado AS E, FROM Fornecedor as F WHERE E.nome_estado = F.UF SELECT E.nome_estado FROM Estado AS E WHERE E.UF NOT IN (SELECT F.UF FROM FORNECEDOR AS F) 4. A junção irrestrita também é conhecida como: Junção Contínua Junção Exterior Junção Interior Autojunção Junção Cruzada 5. Considere as seguintes tabelas de um banco de dados: Estado (UF, NomeEstado) Cidade (CodCidade, NomeCidade, UF) UF referencia Estado Escolha o comando SQL que liste o nome de cada estado e a quantidade de cidades cadastradas para cada um: (J) SELECT E.NomeEstado, Count(*) FROM Cidade C, Estado E WHERE C.UF = E.UF HAVING Count(*) >= 1 SELECT E.NomeEstado, Count(*) FROM Cidade C, Estado E WHERE C.UF = E.UF GROUP BY E.NomeEstado SELECT E.NomeEstado, Count(*) FROM Cidade C, Estado E GROUP BY E.NomeEstado SELECT Count(*) FROM Estado SELECT UF, Count(*) FROM Cidade GROUP BY UF 6. SELECT PNOME || || SNOME CLIENTE, VALORDIARIA, PERIODO FROM CLIENTE NATURAL JOIN ALUGUEL WHERE VALORDIARIA > (SELECT AVG(PERIODO) FROM ALUGUEL); SELECT PNOME || || SNOME CLIENTE, VALORDIARIA, PERIODO FROM CLIENTE NATURAL JOIN ALUGUEL WHERE PERIODO > (SELECT AVG(PERIODO) FROM ALUGUEL); SELECT PNOME || || SNOME CLIENTE, VALORDIARIA, PERIODO FROM CLIENTE NATURAL JOIN ALUGUEL WHERE VALORDIARIA > (SELECT AVG(VALORDIARIA) FROM ALUGUEL); SELECT PNOME || || SNOME CLIENTE, VALORDIARIA, PERIODO FROM CLIENTE NATURAL JOIN ALUGUEL WHERE VALORDIARIA*PERIODO > (SELECT AVG(VALORDIARIA) FROM ALUGUEL); SELECT PNOME || || SNOME CLIENTE, VALORDIARIA, PERIODO FROM CLIENTE NATURAL JOIN ALUGUEL WHERE PERIODO > (SELECT AVG(VALORDIARIA) FROM ALUGUEL); 7. O esquema de banco de dados apresentado abaixo faz parte de um banco de dados criado a partir de um conjunto de dados públicos de captura de tubarões entre os anos de 2001 e 2013 na costa da Austrália. Os dados podem ser baixados no endereço: https://data.qld.gov.au/dataset/shark-control-program-shark-catch-statistics/resource/5c6be990-3938-4125-8cca-dac0cd734263 Características do esquema: Chave primária sublinhada e chave estrangeira em itálico. Seguem algumas tabelas do Esquema: Nome (IDNome, IDEspécie, NomePopular) Tubarão (IDTubarão, IDEspécie, Comprimento, Sexo) Captura (NumCaptura, IDTubarão, IDLocal, Data, TempAgua) Local (IDLocal, CodArea, NomeLocal) Area (CodArea, NomeArea) Sabendo-se que a tabela nome contém nomes populares de tubarões e deseja-se listar o comprimento e o sexo de todos os tubarões que tem nome popular terminado com a letra k. Assinale a alternativa abaixo que retorna corretamente a consulta desejada: SELECT Comprimento, Sexo FROM Tubarão T, Espécie E, Nome N WHERE T.IDEspecie = N.IDEspécie AND NomePopular like %k; SELECT * FROM Tubarão T, Espécie E, Nome N WHERE T.IDEspecie = E.IDEspecie AND N.IDEspécie = E.IDEspecie AND NomePopular like %k; SELECT Comprimento, Sexo FROM Tubarão T, Espécie E, Nome N WHERE T.IDEspecie = E.IDEspecie AND N.IDEspécie = E.IDEspecie AND UPPER (NomePopular) like _k; SELECT Comprimento, Sexo FROM Tubarão T, Espécie E, Nome N WHERE T.IDEspecie = E.IDEspecie AND N.IDEspécie = E.IDEspecie AND NomePopular like %k; SELECT Comprimento, Sexo FROM Tubarão T, Espécie E, Nome N WHERE T.IDEspecie = E.IDEspecie AND N.IDEspécie = E.IDEspecie AND UPPER (NomePopular) like %k%; 1. Sobre o script abaixo: SELECT nome pessoa from Pessoa UNION ALL SELECT numero from Empregado Assinale a alternativa correta: Não existe retorno, uma vez que os dados são diferentes das colunas. Retorna os números dos empregados e os nomes das pessoas com repetição. Retorna os nomes dos empregados e os números sem repetição. O script retorna dados de diferentes tabelas semrepetição. Retorna os números dos empregados e os nomes das pessoas sem repetição. 2. (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, não aparecerá no resultado. Se um cliente tem diversas contas e empréstimos no banco, aparecerá somente uma vez 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, aparecerá todas as repetições no resultado. 3. (NCE-UFRJ - 2005 - BNDES - Análise de Sistemas - Desenvolvimento) Considere um banco de dados simplificado referente ao controle de concursos, constituído pelas tabelas Concurso, Cargo, Candidato e Inscrição, criadas pelo script SQL mostrado abaixo. create table concurso (id_concurso int not null primary key, concurso varchar(60) not null); create table cargo (id_cargo int not null primary key,cargo varchar(60) not null, id_concurso int not null, constraint ci0 foreign key (id_concurso) references concurso (id_concurso)); create table candidato (id_candidato int not null primary key, nome varchar(40) not null); A consulta SQL que produz a lista dos candidatos que se inscreveram em todos os concursos é: select nome from candidato cd where not exists (select * from concurso cc where not exists (select * from inscrição i where i.id_concurso <> cc.id_concurso and i.id_candidato <> cd.id_candidato)) select nome from candidato cd where not exists (select * from concurso cc where exists (select * from inscrição i where i.id_concurso=cc.id_concurso and i.id_candidato=cd.id_candidato)) select nome from candidato cd where not exists (select * from concurso cc where not exists (select * from inscrição i where i.id_concurso=cc.id_concurso and i.id_candidato=cd.id_candidato)) select nome from candidato cd where exists (select * from concurso cc where not exists (select * from inscrição i where i.id_concurso=cc.id_concurso and i.id_candidato=cd.id_candidato)) select nome from candidato cd where exists (select * from concurso cc where not in (select * from inscrição i where i.id_concurso=cc.id_concurso and i.id_candidato=cd.id_candidato)) 4. (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 crosstab. Uma subconsulta. Uma visão. Um índice. Um join. 5. Qual dos tipos de sub-consulta que faz referência a uma coluna da tabela da consulta externa? Sub-Consulta Principal Sub-Consulta Multi-Linhas Sub-Consulta Correlata Sub-Consulta Multi-Valorada Sub-Consulta Simple 6. Qual comando abaixo é o mais adequado para consultar os dados da última linha de uma tabela SELECT * FROM funcionarios WHERE id = LAST(id); SELECT MAX(id) FROM funcionarios WHERE id = (SELECT MAX(id) FROM funcionarios); SELECT * FROM funcionarios WHERE id = (SELECT MAX(id) FROM funcionarios); SELECT * FROM funcionarios WHERE id = (SELECT LAST(id) FROM funcionarios); SELECT MAX(id) FROM funcionarios; 7. De acordo com a tabela de banco de dados relacional abaixo: Carro(placacarro(PK),tipo,modelo,ano,chassis,km,valor,cor,filial_idfilial(FK)) -Construa uma consulta em SQL para retornar "o ano dos carros que são mais velhos que a média dos anos de todos os carros". SELECT ano FROM carro WHERE ano > AVG(ano) SELECT ano, AVG(ano) FROM carro SELECT ano FROM carro WHERE ano > (SELECT AVG(*) FROM carro) SELECT ano FROM carro WHERE ano = (SELECT AVG(ano) FROM carro) SELECT ano FROM carro WHERE ano > (SELECT AVG(ano) FROM carro) 8. Considerando-se as tabelas e o comando SQL mostrados acima, é correto concluir que o número de registros removidos da tabela Y pela execução desse comando é: 2 5 3 4 1 1. O comando SELECT FROM corresponde a seguinte operação da álgebra relacional: Interseção Seleção Junção Projeção União 2. Qual das alternativas a seguir apresenta a sintaxe correta do comando SELECT aplicando as cláusulas GROUP BY e HAVING? SELECT FROM WHERE GROUP BY HAVING SELECT FROM HAVING GROUP BY WHERE SELECT HAVING FROM WHERE GROUP BY SELECT HAVING FROM WHERE GROUP BY SELECT FROM GROUP BY WHERE HAVING 3. Sobre a cláusula WHERE do comando SELECT, é correto afirmar que: Nunca pode ser utilizado com uma junção É utilizado em todos os comandos SELECT Especifica condição de ordenação Filtra as colunas a serem exibidas no resultado Filtra as linhas a serem exibidas no resultado 4. SELECT * FROM Imovel WHERE NumBanheiros BETWEEN 2 AND 4 ORDER BY Tamanho DESC SELECT * FROM Imovel WHERE NumVagasGaragem IN(1,2,4) ORDER BY Tamanho DESC SELECT * FROM Imovel WHERE NumVagasGaragem IN(1,2,4) ORDER BY Tamanho SELECT * FROM Imovel WHERE NumBanheiros BETWEEN 2 AND 4 ORDER BY Tamanho SELECT * FROM Imovel WHERE NumQuartos BETWEEN 2 AND 4 ORDER BY Tamanho DESC 5. Ano: 2014 - Banca: CESGRANRIO - Órgão: FINEP - Prova: Analista - Desenvolvimento de Sistemas Ao implementar um sistema de gerência de fornecedores, o desenvolvedor percebeu que não existia no banco de dados relacional da empresa qualquer representação da entidade PRODUTO que aparecia em seu modelo de dados. Para corrigir essa falha, preparou um comando SQL que alteraria o esquema do banco de dados. Tal comando SQL deve ser iniciado com CREATE PRODUTO AS TABLE CREATE PRODUTO : TABLE ALTER SCHEMA ADD TABLE PRODUTO CREATE TABLE PRODUTO ALTER TABLE PRODUTO 6. Considere a seguinte consulta SQL: SELECT nome, count(*) FROM aluno GROUP BY nome Esta consulta tem como resultado. o atributo nome e o número de registros existentes para cada nome, na tabela nome. todos os atributos da tabela nome, além do atributo especial Count. o atributo nome e o número de registros existentes para cada nome, da tabela aluno. todos os atributos das tabelas nome e aluno. o atributo nome e a soma do conteúdo do atributo nome, da tabela aluno. 7. Considere a relação: FUNCIONARIO (matrícula, cargo, salario, admissao) A consulta SQL que mostra o total dos salários dos funcionários é: SELECT SALARIO FROM FUNCIONARIO WHERE SUM (SALARIO); Nenhuma das repostas acima SELECT SUM (SALARIO) FROM FUNCIONARIO WHERE SALARIO; SELECT * FROM FUNCIONARIO WHERE SUM (SALARIO); SELECT SUM (SALARIO) FROM FUNCIONARIO; 1. A cláusula having, quando usada, estabelece uma condição sobre uma agregação obtida de: sum em uma expressão create. group by em uma expressão select. group by em uma cláusula order by. Reorganiza-se automaticamente com pequenas mudançaslocais. order by em uma expressão select. 2. Considere a seguinte representação de uma tabela de um banco de dados relacional: Produto (Cod, Descricao, QtdeEstoque, Categoria) O comando SQL para se obter a soma dos valores do atributo QtdeEstoque, agrupada por Categoria, apenas para as Categorias com QtdeEstoque total superior a 20 unidades, é: SELECT GROUP (Categoria), SUM (QtdeEstoque) FROM Produto WHERE QtdeEstoque > 20 SELECT GROUP (Categoria), COUNT (QtdeEstoque) FROM Produto WHERE QtdeEstoque > 20 SELECT Categoria, Qtde FROM Produto WHERE Qtde > 20 GROUP BY Categoria SELECT Categoria, SUM (QtdeEstoque) FROM Produto GROUP BY Categoria HAVING SUM (QtdeEstoque) > 20 SELECT Categoria, COUNT (QtdeEstoque) FROM Produto WHERE Qtde > 20 GROUP BY Categoria 3. UM recurso do comando SELECT é a possibilidade de agruparmos nossos dados. Para isso usamos a cláusula: JOIN SUM GROUP BY ORDER ORDER BY 4. Considere que existe uma tabela empregados com os seguintes dados: TABELA EMPREGADOS MATRICULA NOME DATA_NASCIMENTO 122233 MARIA DA SILVA 01/01/1982 222545 JOSE DOS SANTOS 10/10/1990 142533 ANTONIO ALVES 20/05/1980 213211 JERONIMO SOUZA 15/06/2015 O comando SQL que traz todos os dados da tabela ordenados pela ordem alfabetica dos nomes dos empregados é: SELECT * FROM EMPREGADO ORDERED BY NOME ASCENDING; SELECT * FROM EMPREGADO ORDER BY NOME; SELECT NOME AND EMPREGADO FROM EMPREGADO ORDER BY NOME ASC; SELECT *.* FROMEMPREGADO ORDERED BY NOME; SELECT (MATRICULA, NOME) FROM EMPREGADO E ORDER BY Nome; 5. O esquema de banco de dados apresentado abaixo faz parte de um banco de dados criado a partir de um conjunto de dados públicos de captura de tubarões entre os anos de 2001 e 2013 na costa da Austrália. Os dados podem ser baixados no endereço: https://data.qld.gov.au/dataset/shark-control-program-shark-catch-statistics/resource/5c6be990-3938-4125-8cca-dac0cd734263 Características do esquema: Chave primária sublinhada e chave estrangeira em itálico. Seguem algumas tabelas do Esquema: Nome (IDNome, IDEspécie, NomePopular) Tubarão (IDTubarão, IDEspécie, Comprimento, Sexo) Captura (NumCaptura, IDTubarão, IDLocal, Data, TempAgua) Local (IDLocal, CodArea, NomeLocal) Area (CodArea, NomeArea) Deseja-se consultar a quantidade de tubarões do sexo feminino que foram capturados entre os anos de 2002 e 2013. Assinale a opção abaixo que realiza esta consulta: SELECT COUNT (*) QTD FROM TUBARÃO, CAPTURA WHERE SEXO = F AND DATA BETWEEN 01/01/2002 AND 31/12/2013; SELECT COUNT (TUBARÃO) QTD FROM TUBARÃO T, CAPTURA C WHERE C.IDTUBARÃO = T.IDTUBARÃO AND SEXO = F AND DATA BETWEEN 01/01/2002 AND 31/12/2013; SELECT COUNT (*) QTD FROM TUBARÃO T, CAPTURA C WHERE C.IDTUBARÃO = T.IDTUBARÃO AND SEXO = F AND DATA BETWEEN 01/01/2002 AND 31/12/2013; SELECT COUNT (tubarão) QTD FROM TUBARÃO T, CAPTURA C WHERE C.IDTUBARÃO = T.IDTUBARÃO AND SEXO = F AND DATA BETWEEN 2002 AND 2013; SELECT COUNT (*) QTD FROM TUBARÃO T, CAPTURA C WHERE C.IDTUBARÃO = T.IDTUBARÃO AND SEXO = F AND DATA BETWEEN 2002 AND 2013; 6. O esquema de banco de dados apresentado abaixo faz parte de um banco de dados criado a partir de um conjunto de dados públicos de captura de tubarões entre os anos de 2001 e 2013 na costa da Austrália. Os dados podem ser baixados no endereço: https://data.qld.gov.au/dataset/shark-control-program-shark-catch-statistics/resource/5c6be990-3938-4125-8cca-dac0cd734263 Características do esquema: Chave primária sublinhada e chave estrangeira em itálico. Seguem algumas tabelas do Esquema: Ordem (IDOrdem, NomeOrdem) Espécie (IDEspécie, IDOrdem. Nome_Científico, TamMaior, TamMenor, TamMédio) Esp_País (IDEspécie, CodPaís) País (CodPaís, NomePaís) Tubarão (IDTubarão, IDEspécie, Comprimento, Sexo) Assinale qual das alternativas abaixo representa uma consulta que retorna a quantidade de espécies de tubarões encontradas no Brasil cuja coluna é nomeada de QTD: SELECT COUNT(*) QTD FROM ESPÉCIE E, ESP_PAÍS EP, PAÍS P WHERE E.IDESPECIE = EP.IDESPÉCIE AND EP.CODPAÍS = P.CODPAÍS AND NOMEPAÍS = Brasil; SELECT COUNT(*) QTD FROM ESPÉCIE E, PAÍS P WHERE E.IDESPECIE = P.IDESPÉCIE AND NOMEPAÍS = Brasil; SELECT COUNT(*) QTD FROM ESPÉCIE E, ESP_PAÍS EP, PAÍS P WHERE E.IDESPECIE = EP.IDESPÉCIE AND EP.CODPAÍS = P.CODPAÍS AND NOMEPAÍS = "Brasil"; SELECT COUNT(*) QTD FROM ESPÉCIE E, PAÍS P WHERE NOMEPAÍS = "Brasil"; SELECT COUNT(*) QTD FROM ESPÉCIE E, ESP_PAÍS P,PAÍS P WHERE NOMEPAÍS = Brasil; 7. Qual a sintaxe SQL-SELECT errada? SELECT X.COLUNA1, AVG(Y.COLUNA2) FROM TABELA1 X INNER JOIN TABELA2 Y ON X.COLUNA3=Y.COLUNA4 GROUP BY X.COLUNA1; SELECT COLUNA1, COLUNA2 FROM TABELA1 WHERE COLUNA3 IN (1,2,3); SELECT COLUNA1, COLUNA2, COLUNA3 FROM TABELA1 ORDER BY 1 ASC, 2 DESC, 3 ASC; SELECT COUNT(*) FROM TABELA1; SELECT COLUNA1, COLUNA2 FROM TABELA1 WHERE COLUNA3 LIKE (%X%) ORDER BY 3; 1 Questão A linguagem de banco de dados que é aceita em quase todos os Sistemas de Gerenciamento de Banco de Dados (SGBDs) é a SQL. Dessa forma, utilizando esta linguagem para conseguir filtrar valores resultantes de expressões agregadas, deve-se adicionar ao comando SQL a cláusula: AVG SUM SELECT HAVING WHERE Respondido em 07/05/2020 11:15:58 Explicação: Having: A cláusula having só é usada quando se deseja especificar um critério de pesquisa para um grupo ou uma agregação. HAVING pode ser usado somente com a instrução SELECT. HAVING é usado normalmente em uma cláusula GROUP BY. SUM: A função sum(x) retorna a soma da coluna x. Where: A cláusula Where estabelece uma condição que a linha deverá obedecer para que faça parte do conjunto resposta da consulta. No caso apenas retornam as linhas cujo deste da condição de como resposta verdadeiro. Select: Comando utilizado para recuperação dos dados de uma ou mais tabelas. AVG: A função avg(x) retorna o valor médio da coluna x. Gabarito Comentado 2 Questão Dada as tabelas: Pedido(Nr_pedido, Id_cliente, valor_total, data) Cliente(Id_cliente, nome, endereço, bairro, email, telefone), assinale a instrução em SQL que lista os clientes que possuem email do gmail. select nome from cliente where email = ¿*@gmail.com select nome from cliente where email like *@gmail.com select nome from cliente where email like @gmail.com* select nome from cliente where email in *@gmail.com select nome from cliente where email like *gmail* Respondido em 07/05/2020 11:16:53 3 Questão Em relação as funções de grupo da linguagem SQL, marque a opção correta: COUNT - retornar o maior valor dentre um grupo de valores. MIN - retornar o menor valor dentre um grupo de valores. SUM - contar o número de linhas. MAX - calcular a média aritmética. AVG - somar um grupo de valores. Respondido em 07/05/2020 11:17:02 Explicação: AVG(x) - Retorna o valor médio da coluna x. SUM(x) - Retorna a soma da coluna x. MAX(x) - Retorna o valor máximo da coluna x. MIN(x) - Retorna o valor mínimo da coluna x. COUNT(x) - Retorna o número de valores não nulos da coluna x. 4 Questão Sabendo-se que existem dados de TCC cadastrados com datas de defesa que variam de 20/11/2012 até o dia de hoje, assinale qual das alternativas abaixo retornaria o mesmo resultado que o comando "SELECT * FROM TCC WHERE DTDEFESA IN ('21/11/2013', '22/11/2014');": SELECT * FROM TCC WHERE DTDEFESA => '21/11/2013' AND <= '22/11/2014'; SELECT * FROM TCC WHERE DTDEFESA BETWEEN '21/11/2013' AND'22/11/2014'; SELECT * FROM TCC WHERE DTDEFESA > '21/11/2013' AND < '22/11/2014'; SELECT * FROM TCC WHERE DTDEFESA BETWEEN ('21/11/2013'; '22/11/2014'); SELECT * FROM TCC WHERE DTDEFESA = '21/11/2013' AND '22/11/2014'; Respondido em 07/05/2020 11:19:19 5 Questão Baseado no modelo de banco de dados mostrado a seguir: FILIAL(idfilial(PK), nome, cidade,endereço,telefone) FUNCIONARIO(idfuncionario(PK),nome,endereço,telefone,salario,idfilial) CLIENTE(idcliente(PK),nome,cpf,endereço,telefone,cidade) CLIENTE_ESPECIAL(idcliente(PK),Km,desconto) CARRO(idcarro(PK),placa,modelo,tipo,cor,ano,Km,valor,chassis,idfilial) ALUGUEL(NF(PK),idcarro,idcliente,valor,CNH,dataIni,dataFim,idfuncionario) O nome das filias e a quantidade de funcionários que cada filial possui, mostre somente filias com mais de 10 funcionários? SELECT fi.nome Filial, count(*) Quantidade FROM filial fi, funcionário fu ON fi.idfilial=fu.idfilial GROUP BY Filial HAVING count(*) > 10; SELECT fi.nome Filial, count(*) Quantidade FROM filial fi LEFT JOIN funcionário fu ON fi.idfilial=fu.idfilial GROUP BY Filial HAVING count(*) > 10; SELECT fi.nome Filial, count(*) Quantidade FROM filial fi INNER JOIN funcionário fu ON fi.idfilial=fu.idfilial GROUP BY Filial HAVING count(*) > 10; SELECT fi.nome Filial, count(*) Quantidade FROM filial fi INNER JOIN funcionário fu ON fi.idfilial=fu.idfilial; SELECT fi.nome Filial, count(*) Quantidade FROM filial fi RIGHT JOIN funcionário fu ON fi.idfilial=fu.idfilial GROUP BY Filial HAVING count(*) > 10; Respondido em 07/05/2020 11:21:15 6 Questão Considere a tabela definida pelo comando SQL abaixo. Create table func ( nome varchar(50) not null, salario money not null, cod_depto int null); Considere a consulta SQL abaixo: Select nome, salario from func where salario > 900 and not cod_depto is null order by salario O requisito abaixo que não é atendido por esta consulta é: só considerar os registros que apresentem o atributo COD_DEPTO não nulo; listar a coluna SALARIO da tabela FUNC; listar a coluna NOME da tabela FUNC; apresentar o resultado em ordem alfabética. só considerar os registros que apresentem o atributo SALARIO maior que 900; Respondido em 07/05/2020 11:22:06 Gabarito Comentado 7 Questão De acordo com a estrutura das tabelas abaixo, escolha a opção que mostre o nome do empregado, o nome do seu departamento, daquele que trabalha em departamento que possua mais do que cinco empregados e cujo salário seja superior a média salarial do seu departamento, através da linguagem SQL. O banco de dados é composto por 2 tabelas: a tabela EMP que contém dados dos empregados, cuja chave primária é MATRICULA e a tabela DEPT que contém dados dos departamentos, cuja a chave primária é DEPTNO. A coluna GERENTE é chave estrangeira na tabela EMP, referente à própria tabela EMP. A coluna DEPTNO na tabela EMP é chave estrangeira, referente à tabela DEPT. ESTRUTURA DAS TABELAS DO BANCO DE DADOS TABELA EMP Name Null Type ---------------------------------------------- MATRICULA NOT NULL NUMBER(4) NOME_EMP CHAR(10) CARGO CHAR (9) GERENTE NUMBER(4) SALARIO NUMBER(7,2) COMISSAO NUMBER(7,2) DEPTNO NUMBER(2) TABELA DEPT Name Null Type ---------------------------------------------- DEPTNO NOT NULL NUMBER(2) NOME_DEPT CHAR(14) LOCALIZACAO CHAR(13) SELECT E.NOME_EMP, D.NOME_DEP FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO GROUP BY DEPTNO HAVING COUNT(*)> 5 AND E.SALARIO>(SELECT AVG(SALARIO) FROM EMP WHERE DEPTNO=E.DEPTNO); SELECT E.NOME_EMP, D.NOME_DEP FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO AND D.DEPTNO IN (SELECT DEPTNO FROM EMP GROUP BY DEPTNO HAVING COUNT(*)> 5) AND E.SALARIO>AVG(SALARIO); SELECT E.NOME_EMP, D.NOME_DEP FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO AND D.DEPTNO IN (SELECT DEPTNO FROM EMP GROUP BY DEPTNO HAVING COUNT(*)> 5) AND E.SALARIO>(SELECT AVG(SALARIO) FROM EMP WHERE DEPTNO=E.DEPTNO); SELECT E.NOME_EMP, D.NOME_DEP FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO AND D.DEPTNO IN (SELECT DEPTNO FROM EMP GROUP BY DEPTNO HAVING COUNT(*)> 5) AND E.SALARIO>(SELECT AVG(SALARIO) FROM EMP); SELECT E.NOME_EMP, D.NOME_DEP FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO AND COUNT(D.DEPTNO) > 5 AND E.SALARIO> (SELECT AVG(SALARIO) FROM EMP WHERE DEPTNO=E.DEPTNO); Respondido em 07/05/2020 11:23:04 Gabarito Comentado 8 Questão Qual o comando SQL deve ser utilizado para definir o resultado da seguinte situação: "Ao final do mês é preciso apresentar o total de vendas de clientes por venda". HAVING WHERE FROM GROUP BY ORDER BY 1a Questão Acerto: 1,0 / 1,0 A operação da álgebra relacional que recupera linhas em uma tabela é denominada: Seleção Produto cartesiano Projeção Junção Diferença Respondido em 04/05/2021 23:13:41 2a Questão Acerto: 1,0 / 1,0 Considere o modelo de banco de dados abaixo: medico (CRM, NomeMedico, Idade,Cidade,Especialidade); paciente (Ident,NomePaciente,Idade,Cidade,Doenca); consulta (Ident, CRM, Data, Hora); Qual alternativa altera a idade do paciente "Fulano de tal"?. alter paciente set idade=25 where nomePaciente="Fulano de tal" insert into paciente (idade) values (25) where nomePaciente="Fulano de tal" update paciente set idade=25 where nomePaciente="Fulano de tal" alter paciente set idade=25 update paciente where nomePaciente="Fulano de tal" Respondido em 04/05/2021 23:15:38 3a Questão Acerto: 1,0 / 1,0 Considere a seguinte consulta SQL:SELECT XXX A FROM TAB.Para que não haja repetições nos valores obtidos como resposta para o atributo A, XXX deve ser substituído por: DISTINCT SINGLE LIKE IN ALL Respondido em 04/05/2021 23:20:00 4a Questão Acerto: 1,0 / 1,0 Sabendo-se que existem dados de TCC cadastrados com datas de defesa que variam de 20/11/2012 até o dia de hoje, assinale qual das alternativas abaixo retornaria o mesmo resultado que o comando "SELECT * FROM TCC WHERE DTDEFESA IN (21/11/2013, 22/11/2014);": SELECT * FROM TCC WHERE DTDEFESA = 21/11/2013 AND 22/11/2014; SELECT * FROM TCC WHERE DTDEFESA BETWEEN 21/11/2013 AND 22/11/2014; SELECT * FROM TCC WHERE DTDEFESA => 21/11/2013 AND <= 22/11/2014; SELECT * FROM TCC WHERE DTDEFESA BETWEEN (21/11/2013; 22/11/2014); SELECT * FROM TCC WHERE DTDEFESA > 21/11/2013 AND < 22/11/2014; Respondido em 04/05/2021 23:25:52 5a Questão Acerto: 1,0 / 1,0 Considere a tabela a seguir: Qual a função a ser utilizada em um script SQL quando se desejar obter o número de cidades cadastradas? sum(reg) avg(reg) max(reg) count(cidade) count(*) Respondido em 04/05/2021 23:52:53 6a Questão Acerto: 1,0 / 1,0 Considere o seguinte comando SQL: SELECT D.NM_DEPARTAMENTO, SUM(P.SALARIO) FROM TB_DEPARTAMENTO D INNER JOIN TB_PROFESSOR P ON (D.COD_DEPARTAMENTO = P.COD_DEPARTAMENTO) É CORRETO afirmar: soma total. A junção INNER JOIN não pode ser utilizada com a função de agregação SUM( ). A consulta irá retornar o mesmo número de linhas da tabela TB_PROFESSOR.Se existir uma linha na tabela TB_PROFESSOR com valor NULO (NULL) para o atributo SALARIO, o resultado da consulta também será um valor NULO (NULL). A sintaxe do comando está incorreta, pois deveria apresentar a cláusula GROUP BY. Respondido em 04/05/2021 23:33:51 7a Questão Acerto: 1,0 / 1,0 Considere as seguintes tabelas de um banco de dados: Estado (UF, NomeEstado) Cidade (CodCidade, NomeCidade, UF) UF referencia Estado Escolha o comando SQL que liste o nome de cada estado e a quantidade de cidades cadastradas para cada um: SELECT UF, Count(*) FROM Cidade GROUP BY UF SELECT Count(*) FROM Estado (J) SELECT E.NomeEstado, Count(*) FROM Cidade C, Estado E WHERE C.UF = E.UF HAVING Count(*) >= 1 SELECT E.NomeEstado, Count(*) FROM Cidade C, Estado E WHERE C.UF = E.UF GROUP BY E.NomeEstado SELECT E.NomeEstado, Count(*) FROM Cidade C, Estado E GROUP BY E.NomeEstado Respondido em 04/05/2021 23:35:05 8a Questão Acerto: 1,0 / 1,0 Considere as seguintes tabelas de um banco de dados: - FORNECEDOR { for_codigo, for_nome, for_telefone, for_cidade, est_uf } - ESTADO { est_uf, est_nome } A instrução SQL que recupera os nomes dos estados para os quais não há fornecedores cadastrados é: SELECT e.est_uf FROM estado AS e WHERE e.est_nome NOT IN ( SELECT f.est_uf FROM fornecedor AS f ); SELECT e.est_nome FROM estado AS e WHERE e.est_uf NOT IN ( SELECT f.est_uf FROM fornecedor AS f ); SELECT e.est_nome FROM estado AS e WHERE e.est_uf IN ( select f.est_uf FROM fornecedor AS f ); SELECT e.est_nome FROM estado AS e, FROM fornecedor AS f WHERE e.est_uf = f.est_uf; SELECT e.est_nome FROM estado AS e, fornecedor AS f WHERE e.est_nome <> f.est_uf; Respondido em 05/05/2021 00:10:01 9a Questão Acerto: 1,0 / 1,0 O comando SELECT FROM corresponde a seguinte operação da álgebra relacional: Seleção Interseção Projeção União Junção Respondido em 04/05/2021 23:45:52 10a Questão Acerto: 1,0 / 1,0 Considere que existe uma tabela empregados com os seguintes dados: TABELA EMPREGADOS MATRICULA NOME DATA_NASCIMENTO 122233 MARIA DA SILVA 01/01/1982 222545 JOSE DOS SANTOS 10/10/1990 142533 ANTONIO ALVES 20/05/1980 213211 JERONIMO SOUZA 15/06/2015 O comando SQL que traz todos os dados da tabela ordenados pela ordem alfabetica dos nomes dos empregados é: SELECT * FROM EMPREGADO ORDERED BY NOME ASCENDING; SELECT * FROM EMPREGADO ORDER BY NOME; SELECT *.* FROMEMPREGADO ORDERED BY NOME; SELECT (MATRICULA, NOME) FROM EMPREGADO E ORDER BY Nome; SELECT NOME AND EMPREGADO FROM EMPREGADO ORDER BY NOME ASC; 1a Questão Acerto: 1,0 / 1,0 SELECT Imovel FROM Tamanho > 70 OR numQuartos > 1 SELECT Tamanho > 70 AND numQuartos > 1 FROM Imovel SELECT Tamanho > 70 OR numQuartos > 1 FROM Imovel SELECT * FROM Imovel WHERE Tamanho > 70 AND numQuartos >1 SELECT * FROM Imovel WHERE Tamanho > 70 OR numQuartos >1 Respondido em 27/05/2021 23:15:14 2a Questão Acerto: 1,0 / 1,0 Considere o modelo de banco de dados abaixo: medico (CRM, NomeMedico, Idade,Cidade,Especialidade); paciente (Ident,NomePaciente,Idade,Cidade,Doenca); consulta (Ident, CRM, Data, Hora); Qual alternativa altera a idade do paciente "Fulano de tal"?. insert into paciente (idade) values (25) where nomePaciente="Fulano de tal" update paciente where nomePaciente="Fulano de tal" alter paciente set idade=25 update paciente set idade=25 where nomePaciente="Fulano de tal" alter paciente set idade=25 where nomePaciente="Fulano de tal" Respondido em 27/05/2021 22:51:54 3a Questão Acerto: 0,0 / 1,0 O esquema de banco de dados apresentado abaixo faz parte de um banco de dados criado a partir de um conjunto de dados públicos de captura de tubarões entre os anos de 2001 e 2013 na costa da Austrália. Os dados podem ser baixados no endereço: https://data.qld.gov.au/dataset/shark-control-program-shark-catch-statistics/resource/5c6be990-3938-4125-8cca-dac0cd734263 Características do esquema: Chave primária sublinhada e chave estrangeira em itálico. Seguem algumas tabelas do Esquema: Ordem (IDOrdem, NomeOrdem) Espécie (IDEspécie, IDOrdem. Nome_Científico, TamMaior, TamMenor, TamMédio) Nome (IDNome, IDEspécie, NomePopular) Tubarão (IDTubarão, IDEspécie, Comprimento, Sexo) Captura (NumCaptura, IDTubarão, IDLocal, Data, TempAgua) Deseja-se exibir os nomes das ordens das Espécies de Tubarões cadastradas até o identificador de espécie de número 018103, sem que os nomes se repitam. Assinale a alternativa correta abaixo: SELECT nomeOrdem FROM Ordem O, Espécie E WHERE O.IDOrdem = E.IDordem AND E.IDEspécie <= 018013; SELECT DISTINCT nomeOrdem FROM Ordem O, Espécie E WHERE O.IDEspécie = E.IDEspécie AND E.IDEspécie <= 018013; SELECT DISTINCT nomeEspécie FROM Ordem O, Espécie E WHERE O.IDOrdem = E.IDordem AND E.IDEspécie < 018013; SELECT nomeEspécie FROM Ordem O, Espécie E WHERE O.IDOrdem = E.IDordem AND E.IDEspécie <= 018013; SELECT DISTINCT nomeOrdem FROM Ordem O, Espécie E WHERE O.IDOrdem = E.IDordem AND E.IDEspécie <= 018013; Respondido em 27/05/2021 23:15:18 4a Questão Acerto: 1,0 / 1,0 Em uma instrução SQL, o caractere utilizado para representar qualquer caractere em uma consulta é o $ # % ? & Respondido em 27/05/2021 22:51:49 5a Questão Acerto: 1,0 / 1,0 Considerando as tabelas descritas a seguir e a legenda: PK - chave primária / FK - chave estrangeira. 1 - ALUNO (matricula,nome,especializacao,nivel,idade), onde matricula é a PK; 2 - TURMA (nome_turma,horario,sala), onde nome_turma é a PK; 3 - MATRICULA (numero_aluno,nome_turma,numero_posicao), onde numero_aluno e nome_turma formam a PK, numero_aluno é FK referenciando ALUNO e nome_turma é FK referenciando TURMA. Marque a opção que contém o código em SQL para exibir o(s) nome(s) da(s) turma(s) que tem mais de 20 alunos matriculados: SELECT nome_turma,count(*) FROM TURMA t INNER JOIN MATRICULA m ON t.nome_turma = m.nome_turma WHERE count(*) > 20 SELECT t.nome_turma,count(*) FROM TURMA t INNER JOIN MATRICULA m ON t.nome_turma = m.nome_turma HAVING count(*) > 20 GROUP BY t.nome_turma SELECT * FROM TURMA t,MATRICULA m ON t.nome_turma = m.nome_turma WHERE count(*) > 20 SELECT t.nome_turma,count(*) FROM TURMA t INNER JOIN MATRICULA m ON t.nome_turma = m.nome_turma GROUP BY 1 HAVING count(*) > 20 SELECT nome_turma,count(*) FROM TURMA t INNER JOIN MATRICULA m ON t.nome_turma = m.nome_turma GROUP BY nome_turma WHERE count(*) > 20 Respondido em 27/05/2021 22:55:30 6a Questão Acerto: 1,0 / 1,0 Qual opção Representa a interpretação Correta sobre o CROSS JOIN Serve para fazer a combinação dos elementos de uma tabela com todos os elementos de outra tabela sem a necessidade de junção de chaves primárias e estrangeiras. Não se aplica aos comandos DML É um comando exclusivo da DDL É um comando que substitui o INNER JOIN Nunca é usado em Estruturas SELECT Respondido em 27/05/2021 22:58:37 7a Questão Acerto: 1,0 / 1,0 O esquema de banco de dados apresentado abaixo faz parte de um banco de dados criado a partir de um conjunto de dados públicos de captura de tubarões entre os anos de 2001 e 2013 na costa da Austrália. Os dados podem ser baixados no endereço: https://data.qld.gov.au/dataset/shark-control-program-shark-catch-statistics/resource/5c6be990-3938-4125-8cca-dac0cd734263 Características do esquema: Chave primária sublinhada e chave estrangeira em itálico. Seguem algumas tabelas do Esquema: Nome (IDNome, IDEspécie, NomePopular) Tubarão (IDTubarão, IDEspécie, Comprimento, Sexo) Captura (NumCaptura, IDTubarão, IDLocal, Data, TempAgua) Local (IDLocal,CodArea, NomeLocal) Area (CodArea, NomeArea) Sabendo-se que a tabela nome contém nomes populares de tubarões e deseja-se listar o comprimento e o sexo de todos os tubarões que tem nome popular terminado com a letra k. Assinale a alternativa abaixo que retorna corretamente a consulta desejada: SELECT Comprimento, Sexo FROM Tubarão T, Espécie E, Nome N WHERE T.IDEspecie = E.IDEspecie AND N.IDEspécie = E.IDEspecie AND UPPER (NomePopular) like %k%; SELECT Comprimento, Sexo FROM Tubarão T, Espécie E, Nome N WHERE T.IDEspecie = E.IDEspecie AND N.IDEspécie = E.IDEspecie AND UPPER (NomePopular) like _k; SELECT * FROM Tubarão T, Espécie E, Nome N WHERE T.IDEspecie = E.IDEspecie AND N.IDEspécie = E.IDEspecie AND NomePopular like %k; SELECT Comprimento, Sexo FROM Tubarão T, Espécie E, Nome N WHERE T.IDEspecie = E.IDEspecie AND N.IDEspécie = E.IDEspecie AND NomePopular like %k; SELECT Comprimento, Sexo FROM Tubarão T, Espécie E, Nome N WHERE T.IDEspecie = N.IDEspécie AND NomePopular like %k; Respondido em 27/05/2021 23:02:04 8a Questão Acerto: 1,0 / 1,0 Considerando-se as tabelas e o comando SQL mostrados acima, é correto concluir que o número de registros removidos da tabela Y pela execução desse comando é: 3 5 4 1 2 Respondido em 27/05/2021 23:02:48 9a Questão Acerto: 1,0 / 1,0 O comando SELECT FROM corresponde a seguinte operação da álgebra relacional: Projeção Interseção União Junção Seleção Respondido em 27/05/2021 23:03:15 10a Questão Acerto: 1,0 / 1,0 Considere que existe uma tabela empregados com os seguintes dados: TABELA EMPREGADOS MATRICULA NOME DATA_NASCIMENTO 122233 MARIA DA SILVA 01/01/1982 222545 JOSE DOS SANTOS 10/10/1990 142533 ANTONIO ALVES 20/05/1980 213211 JERONIMO SOUZA 15/06/2015 O comando SQL que traz todos os dados da tabela ordenados pela ordem alfabetica dos nomes dos empregados é: SELECT * FROM EMPREGADO ORDERED BY NOME ASCENDING; SELECT NOME AND EMPREGADO FROM EMPREGADO ORDER BY NOME ASC; SELECT *.* FROMEMPREGADO ORDERED BY NOME; SELECT (MATRICULA, NOME) FROM EMPREGADO E ORDER BY Nome; SELECT * FROM EMPREGADO ORDER BY NOME; -----------------------------------
Compartilhar