Baixe o app para aproveitar ainda mais
Prévia do material em texto
Cria a tabela pessoa com 2 campos; Mostra a tabela tbPessoa. Cria a tabela pessoa com 3 campos; Cria a tabela pessoa na forma descrita e com os campos preenchidos; Cria um identificador (ID_PESSOAS) que é a chave primária; Respondido em 14/05/2019 23:23:11 Explicação: o COMANDO CREATE TABLE cria uma tabela 3a Questão 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 TABLE PRODUTO ALTER TABLE PRODUTO ALTER SCHEMA ADD TABLE PRODUTO CREATE PRODUTO AS TABLE CREATE PRODUTO : TABLE Respondido em 14/05/2019 23:23:18 Explicação: A SOLUÇÃO SERIA CRIAR A TABELA PRODUTO COM O COMANDO CREATE TABLE 4a Questão Um DBA criou uma tabela em um Banco de Dados no postgreSQL utilizando o comando CREATE TABLE mec ( cidade varchar(80), temp_baixa int, temp_alta int, nivel_precip real, data date ) Para o comando que insere dados na tabela mec, é usada a seguinte sintaxe: INSERT ON mec(cidade, temp_baixa, temp_alta, nível_precip, data) VALUES ('Brasilia', 20, 34, 0.2, `2009-01-13'); INSERT INTO mec(cidade, temp_baixa, temp_alta, nível_precip, data) VALUES ('Brasilia', 20, 34, 0.2, `2009-01-13'); INSERT FROM mec(cidade, temp_baixa, temp_alta, nível_precip, data) VALUES ('Brasilia', 20, 34, 0.2, `2009-01-13'); INSERT OVER mec(cidade, temp_baixa, temp_alta, nível_precip, data) VALUES ('Brasilia', 20, 34, 0.2, `2009-01-13'); INSERT IN mec(cidade, temp_baixa, temp_alta, nível_precip, data) VALUES ('Brasilia', 20, 34, 0.2, `2009-01-13'); Respondido em 14/05/2019 23:23:24 Explicação: O Comando de INSERT tem como sintaxe INSERT INTO tabela VALUES (valores) 5a Questão Considere o banco de dados relacional de uma clínica médica PACIENTE (id_pac, nome_pac, sexo, fone_pac) ESPECIALIDADE (id_espec, nome_espec) MEDICO (id_med, nome_med, fone_med, id_espec) CONSULTA (id_cons, dt_cons, vl_cons, id_pac, id_med) Dê o comando correspondente de Atualizar o nome da especialidade para a especialidade de id = 1. Update ESPECIALIDADE Set nome_espec = 'Clínico Geral' Where id_espec != 1 Update ESPECIALIDADE Set nome_espec = 'Clínico Geral' Where id_espec = 1 Update ESPECIALIDADE Set nome_espec = 'Clínico Geral' Where id_espec <> 1 Update ESPECIALIDADE Set nome_espec = 'Clínico Geral' Where id_espec > 1 Update ESPECIALIDADE Set nome_espec = 'Clínico Geral' Where id_espec < 1 Respondido em 14/05/2019 23:23:34 Explicação: o comando que atualiza os dados é o de update 6a Questão Na linguagem SQL a Linguagem de Manipulação de Dados compreende os comandos para inserir, remover e modificar informações em um banco de dados. os comandos básicos da Linguagem de Definição de Dados são Sort, Insert, Undo e Store. a Linguagem de Definição de Dados fornece tabelas para criação e modificação de comandos. os comandos básicos da Linguagem de Definição de Dados são Select, Insert, Update e Delete. a Linguagem de Manipulação de Relacionamentos compreende os comandos para construir tabelas em um banco de dados. Respondido em 14/05/2019 23:23:44 Explicação: DDL (Linguagem de Definição de Dados): Permitem a criação e definição de objetos como tabelas, views e outros objetos no banco de dados (ex: Create, Alter, Drop, Rename, Truncate) DRL (Linguagem de Recuperação de Dados): É o comando mais comum do SQL. Utilizado amplamente para recuperação dos dados de uma base. (Ex: select) DML (Linguagem de Manipulação de Dados): Comandos de manipulação dos dados. Usados nas aplicações que mantém a base de informações com inserções, atualizações e deleções de dados. (Ex: Insert, Delete, Update) DCL (Linguagem de Controle de Dados): São utilizados para atribuir ou remover direitos de acesso a objetos do banco de ados e suas estruturas. (Ex: Grant, Revoke) 1a Questão Assinale a alternativa que selecione todos os clientes cujo código NÃO esteja entre 50 e 75. SELECT * FROM Cliente Where cliente_id = 50 AND 75; SELECT * FROM Cliente Where cliente_id BETWEEN 50 AND 75; SELECT * FROM Cliente Where cliente_id NOT BETWEEN 50 OR 75; SELECT * FROM Cliente Where cliente_id >= 50 AND cliente_id <=75; SELECT * FROM Cliente Where cliente_id NOT BETWEEN 50 AND 75; Respondido em 21/05/2019 14:03:09 Explicação: É necessario utilizar not between para filtrar as linhas que estão fora da faixa 2a Questão Assinale a alternativas que selecione somente a coluna nome de todos os produtos utilizando uma cláusula que pode ser usada em um comando SELECT da linguagem SQL: SELECT qtde FROM produto; SELECT nome FROM produto; SELECT * FROM produto; SELECT produto FROM nome SELECT nome, qtde FROM produto; Respondido em 21/05/2019 14:04:06 Explicação: Para selecionar somente uma coluna de uma tabela, apenas indique o nome da coluna e utiliza o comando Select nome_coluna FROM Tb_tabela; 3a Questão Abaixo segue parte do esquema do banco de dados Shark, sabendo-se que os atributos em negrito e sublinhados são chaves primárias e os atributos em itálico são chaves estrangeiras: AREA (CODAREA, NOMEAREA) LOCAL (CODLOCAL, CODAREA, NOMELOCAL) TUBARAO (IDTUBARAO, IDESPECIE, COMPRIMENTO, SEXO) CAPTURA (NUMCAPTURA, IDEMB, IDTUBARAO, CODLOCAL, LATITUDE, LONGITUDE, DATA, TEMPAGUA) Assinale a alternativa abaixo que representa um comando SQL que consulte todos os dados de capturas e de tubarões cujas datas sejam posteriores a 2009, o comprimento seja a partir de 4 metros e o sexo seja masculino (M). SELECT * FROM CAPTURA C, TUBARAO T ON C.IDTUBARAO = T.IDTUBARAO AND DATA > '31/12/2009' AND COMPRIMENTO >= 4 AND SEXO = 'M'; SELECT * FROM CAPTURA C, TUBARAO T ON C.IDTUBARAO = T.IDTUBARAO AND DATA > '31/12/2009' AND COMPRIMENTO > 4 AND SEXO = 'M'; SELECT * FROM CAPTURA C, TUBARAO T WHERE C.IDTUBARAO = T.IDTUBARAO AND DATA > '31/12/2009' AND COMPRIMENTO >= 4 AND SEXO = 'M'; SELECT * FROM CAPTURA C, TUBARAO T WHERE C.IDTUBARAO = T.IDTUBARAO AND DATA >= '31/12/2009' AND COMPRIMENTO > 4 AND SEXO = "M"; SELECT * FROM CAPTURA, TUBARAO WHERE DATA > '31/12/2009' AND COMPRIMENTO >= 4 AND SEXO = "M"; Respondido em 21/05/2019 14:05:34 Explicação: o comando exige o uso de tres condições ligadas por dois operadores AND 4a Questão Assinale a alternativa que selecione todos os clientes que terminem com o nome 'Morais' Select * From Cliente Where nome like '%Morais' Select * From Cliente Where nome like '%M%' Select * From Cliente Where nome like '%Mor' Select * From Cliente Where nome <> 'Morais' Select * From Cliente Where nome like '%M' Respondido em 21/05/2019 14:05:51 Explicação: É necessario o uso do like com o caracter curinga % 5a Questão Assinale aalternativa que Selecione todos os pedidos para o cliente cujo código seja = 150 e cujo valor total seja maior que 500. Select * FROM pedido Where cliente_id= 150 AND pedido_valor_total = 500; Select * FROM pedido Where cliente_id= 150 OR pedido_valor_total < 500; Select * FROM pedido Where pedido_valor_total > 500; Select * FROM pedido Where cliente_id= 150 AND pedido_valor_total > 500; Select * FROM pedido Where cliente_id= 150; Respondido em 21/05/2019 14:06:36 Explicação: Como temos duas condições devemos utilizar um operador lógico 6a Questão Considere o esquema de uma empresa conforme segue: Func (cod_func, nome, dta_nasc, salario, nro_depto, cod_superv) ; Depto (nro_depto, nome) ; Projeto (cod_proj, nome, duracao, nro_depto) ; Participa (cod_proj, cod_func, horas_trab). Marque a alternativa que contém o comando em SQL para recuperar o nome e o salário dos funcionários do departamento 5, com salário na faixa entre 1000 e 2000. SELECT NOME, SALARIO FROM FUNC WHERE NRO_DEPTO = 5 OR SALARIO BETWEEN 1000 AND 2000; SELECT NOME, SALARIO FROM FUNC WHERE SALARIO BETWEEN 1000 AND 2000; SELECT NOME, SALARIO FROM FUNC WHERE NRO_DEPTO = 5; SELECT NOME, SALARIO FROM FUNC WHERE SALARIO = 1000 AND NRO_DEPTO BETWEEN 1 AND 5; SELECT NOME, SALARIO FROM FUNC WHERE NRO_DEPTO = 5 AND SALARIO BETWEEN 1000 AND 2000; Respondido em 21/05/2019 14:07:21 Explicação: O comando deve ter o between para definir a faixa dos salarios e o operador AND para ligar as duas condições 1a Questão Baseado no modelo de banco de dados mostrado a seguir: CARRO(idcarro,placa,modelo,tipo,cor,ano,Km,valor,chassis,idfilial) ALUGUEL(NF,idcarro,idcliente,valor,CNH,dataIni,dataFim,idfuncionario) Mostre o tipo dos carros e quantos carros são do mesmo tipo: SELECT tipo, max(tipo) FROM carro GROUP BY tipo; SELECT tipo, count(*) FROM carro; SELECT tipo, sum(tipo) FROM carro GROUP BY sum(tipo); SELECT tipo, count(*) FROM carro GROUP BY tipo; SELECT tipo, sum(tipo) FROM carro GROUP BY tipo; Respondido em 21/05/2019 15:33:06 Explicação: Para a correta execução temos que contar utilizando count e agrupar utilizando Group By 2a Questão Em um modelo de dados que descreve a publicação acadêmica de pesquisadores de diferentes instituições em eventos acadêmicos, considere as tabelas abaixo. DEPARTAMENTO (CodDepartamento, NomeDepartamento) EMPREGADO (CodEmpregado, NomeEmpregado, CodDepartamento, Salario) Na linguagem SQL, o comando mais simples para recuperar os códigos dos departamentos cuja média salarial seja maior que 2000 é SELECT CodDepartamento, AVG (Salario) > 2000 FROM EMPREGADO GROUP BY CodDepartamento SELECT CodDepartamento FROM EMPREGADO WHERE AVG (Salario) > 2000 GROUP BY CodDepartamento SELECT CodDepartamento FROM EMPREGADO GROUP BY CodDepartamento ORDER BY AVG (Salario) > 2000 SELECT CodDepartamento FROM EMPREGADO WHERE AVG (Salario) > 2000 SELECT CodDepartamento FROM EMPREGADO GROUP BY CodDepartamento HAVING AVG (Salario) > 2000 Respondido em 21/05/2019 15:33:24 Explicação: Como temos que filtrar os grupo devemos utilizar a clausula HAVING 3a Questão O retorno do valor médio de uma coluna contendo diversos números é possibilitado pela expressão SQL SELECT column_name FROM table_name SETTING AVG SELECT AVG(column_name) FROM table_name SELECT FROM table_name AVG(column_name) SELECT AVG OF column_name FROM table_name SELECT column_name (AVG) FROM table_name Respondido em 21/05/2019 15:33:31 Explicação: A função AVG(X) retorna o valor médio da coluna x, ignorando os valores nulos. 4a Questão Considere a seguinte representação de uma tabela de um banco de dados relacional: Estoque (id, Item, Quantidade, Categoria) O comando SQL para se obter a soma dos valores do atributo Quantidade, agrupada por Categoria, apenas para as Categorias com Quantidade total superior a 50 unidades, é: SELECT GROUP (Categoria), SUM (Quantidade) FROM Estoque WHERE Quantidade > 50 SELECT Categoria, SUM(Quantidade) FROM Estoque WHERE GROUP BY Categoria HAVING SUM(Quantidade) > 50 SELECT GROUP (Categoria), COUNT (Quantidade) FROM Estoque WHERE Quantidade > 50 SELECT Categoria, SUM (*) FROM Estoque GROUP BY Categoria HAVING SUM (*) > 50 SELECT Categoria, Quantidade FROM Estoque WHERE Quantidade > 50 GROUP BY Categoria Respondido em 21/05/2019 15:33:44 Explicação: Como é necessario filtrar os grupos temos que usar a clausula HAVING 5a Questão Considere a tabela definida pelo comando SQL abaixo. Create table func ( nome varchar(50) not null, salario numeric(9,2) not null, cod_depto int null); Considere a consulta SQL abaixo: Select nome, salario from func where salario > 900 and cod_depto is not null order by salario O requisito abaixo que NÃO é atendido por esta consulta é: listar a coluna SALARIO da tabela FUNC; só considerar os registros que apresentem o atributo COD_DEPTO não nulo; listar a coluna NOME da tabela FUNC; só considerar os registros que apresentem o atributo SALARIO maior que 900; apresentar o resultado em ordem alfabética. Respondido em 21/05/2019 15:33:52 Explicação: Como a ordenação foi realizada por uma coluna numerica não apresentara a ordem alfabetica crescente no resultado 6a Questão Abaixo segue parte do esquema do banco de dados Shark, sabendo-se que os atributos em negrito e sublinhados são chaves primárias e os atributos em itálico são chaves estrangeiras: AREA (CODAREA, NOMEAREA) LOCAL (CODLOCAL, CODAREA, NOMELOCAL) TUBARAO (IDTUBARAO, IDESPECIE, COMPRIMENTO, SEXO) CAPTURA (NUMCAPTURA, IDEMB, IDTUBARAO, CODLOCAL, LATITUDE, LONGITUDE, DATA, TEMPAGUA) Assinale a alternativa abaixo que representa uma consulta que exiba todos os dados de áreas e locais ordenados decrescentemente pelo nome do local. SELECT * FROM AREA A, LOCAL L WHERE A.CODAREA = L.CODAREA ORDER NOMELOCAL ASC; SELECT * FROM AREA A, LOCAL L WHERE A.CODAREA = L.CODAREA ORDER NOMELOCAL DESC; SELECT * FROM AREA A INNER JOIN LOCAL L ON A.CODAREA = L.CODAREA ORDER NOMELOCAL DESC; SELECT * FROM AREA A INNER JOIN LOCAL L WHERE A.CODAREA = L.CODAREA ORDER BY NOMELOCAL DESC; SELECT * FROM AREA A, LOCAL L WHERE A.CODAREA = L.CODAREA ORDER BY NOMELOCAL DESC; Respondido em 21/05/2019 15:34:08 Explicação: PARA ORDENARMOS DE FORMA DESCRECENTE PRECISAMOS UTILIZAR ORDER BY DESC 1a 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 filiais e a quantidade de funcionários que cada filial possui, mostre somente filiais com mais de 10 funcionários? SELECT fi.nome Filial, count(*) QuantidadeFROM 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 RIGHT JOIN funcionário fu ON fi.idfilial=fu.idfilial GROUP BY Filial HAVING count(*) > 10; 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; Respondido em 21/05/2019 23:44:18 Explicação: O comando para produzir o resultado deve fazer uma junção interior, usando portanto INNER JOIN 2a 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 dos clientes, os códigos dos carros que o cliente alugou e o valor de cada aluguel? SELECT c.nome cliente, a.idcarro, a.valor FROM aluguel a, cliente c ON a.idcliente=c.idcliente SELECT c.nome cliente, a.idcarro, a.valor FROM aluguel a INNER JOIN cliente c SELECT c.nome cliente, a.idcarro, a.valor FROM aluguel a LEFT JOIN cliente c where a.idcliente=c.idcliente SELECT c.nome cliente, a.idcarro, a.valor FROM aluguel a RIGHT JOIN cliente c where a.idcliente=c.idcliente SELECT c.nome cliente, a.idcarro, a.valor FROM aluguel a, cliente c where a.idcliente=c.idcliente Respondido em 21/05/2019 23:44:35 Explicação: O comando exije uma junção interior, no caso foi escrita na sintaxe tradicional 3a 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 dos clientes que são cadastrados como especiais? SELECT c.nome cliente FROM cliente c INNER JOIN cliente_especial ce SELECT c.nome cliente FROM cliente c RIGHT JOIN cliente_especial ce ON c.idcliente=ce.idcliente SELECT c.nome cliente FROM cliente c INNER JOIN cliente_especial ce ON c.idcliente=ce.idcliente SELECT c.nome cliente FROM cliente c, cliente_especial ce ON c.idcliente=ce.idcliente SELECT c.nome cliente FROM cliente c LEFT JOIN cliente_especial ce ON c.idcliente=ce.idcliente Respondido em 21/05/2019 23:44:46 Explicação: Para sabermos o nome dos clientes especiais temos que fazer uma junção interior entre a tabela de clientes especiais e a de cliente. 4a Questão Abaixo segue parte do esquema do banco de dados Shark, sabendo-se que os atributos em negrito e sublinhados são chaves primárias e os atributos em itálico são chaves estrangeiras: ESPECIE (IDESPECIE, NOME_CIENTIFICO, DENTICAO, STATUS_EXTINCAO, HABITAT, TIPOREPRODUCAO) CAPTURA (NUMCAPTURA, IDEMB, IDTUBARAO, CODLOCAL, LATITUDE, LONGITUDE, DATA, TEMPAGUA) TUBARAO (IDTUBARAO, IDESPECIE, COMPRIMENTO, SEXO) Assinale a alternativa abaixo que representa uma consulta que exibe o nome científico e o sexo dos tubarões correlacionados corretamente. SELECT NOME_CIENTIFICO, SEXO FROM ESPECIE E CROSS JOIN TUBARAO T ON E.IDESPECIE = T.IDESPECIE; SELECT NOME_CIENTIFICO, SEXO FROM ESPECIE E, TUBARAO T; SELECT NOME_CIENTIFICO, SEXO FROM ESPECIE E INNER JOIN TUBARAO T ON E.IDESPECIE = T.IDESPECIE; SELECT NOME_CIENTIFICO, SEXO FROM ESPECIE E NATURAL JOIN TUBARAO T ON E.IDESPECIE = T.IDESPECIE; SELECT NOME_CIENTIFICO, SEXO FROM ESPECIE JOIN TUBARAO; Respondido em 21/05/2019 23:45:04 Explicação: A consulta deseja recuperar os seguintes campos: - nome científico: encontra-se na tabela Espécie - sexo: encontra-se na tabela Tubarão. Sendo assim temos que realizar uma junção interior. 5a 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 dos clientes que mesmo cadastrados no banco de dados da Locadora NÃO fizeram nenhum aluguel? SELECT c.nome cliente FROM aluguel a RIGHT JOIN cliente c ON a.idcliente=c.idcliente where a.idcliente IS NULL SELECT c.nome cliente FROM aluguel a INNER JOIN cliente c ON a.idcliente=c.idcliente where a.idcliente IS NULL SELECT c.nome cliente FROM aluguel a, cliente c where a.idcliente=c.idcliente SELECT c.nome cliente FROM aluguel a, cliente c ON a.idcliente=c.idcliente SELECT c.nome cliente FROM aluguel a LEFT JOIN cliente c ON a.idcliente=c.idcliente where a.idcliente IS NULL Respondido em 21/05/2019 23:45:15 Explicação: Como precisamos obter os não relacionados necessitamos fazer uma junção exterior 6a Questão Analise o modelo a seguir: Empregado (nome_empregado, rua,cidade) Trabalha (nome_empregado,nome_companhia,salario) Companhia (nome_companhia,cidade) Qual é a consulta em SQL para encontrar nome, endereço e cidade de residência de todos os empregados da XXX que ganham mais de dez mil reais? SELECT e.nome_empregado, rua, cidade FROM empregado e LEFT JOIN trabalha t ON e.nome_empregado = t.nome_empregado WHERE t.nome_companhia = 'XXX' AND t.salario > 10000; SELECT e.nome_empregado, rua, cidade FROM empregado e WHERE t.nome_companhia = 'XXX' AND t.salario > 10000; SELECT e.nome_empregado, rua, cidade FROM empregado e WHERE t.nome_companhia = 'XXX' AND t.salario < 10000; SELECT e.nome_empregado, rua, cidade FROM empregado e INNER JOIN trabalha t ON e.nome_empregado = t.nome_empregado WHERE t.nome_companhia = 'XXX' AND t.salario > 10000; SELECT e.nome_empregado, rua, cidade FROM empregado e, trabalha t ON e.nome_empregado = t.nome_empregado WHERE t.nome_companhia = 'XXX' AND t.salario > 10000; Respondido em 21/05/2019 23:45:27 Explicação: Temos que fazer uma junção interior portanto utilizamos inner join 1a 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) Qual o nome do Funcionário que tem o maior salário? SELECT nome FROM funcionario fu where salario = Max(salario); SELECT nome FROMfuncionario fu where salario = (select Max(salario) from funcionario); SELECT nome FROM funcionario fu where salario = (select sum(salario) from funcionario); SELECT nome, Max(salario) FROM funcionario; SELECT nome, Max(salario) FROM funcionario fu group by nome; Respondido em 28/05/2019 20:33:27 Explicação: Inicialmente utiliza-se uma subconsulta para obter o maior salario e a seguir o seu retorno para filtrar as linhas na consulta principal 2a Questão Dada a instrução SQL: SELECT * FROM FUNCIONARIO WHERE salario > (SELECT AVG(salario) FROM FUNCIONARIO ); É correto afirmar que serão selecionados todos os registros da tabela FUNCIONARIO cujo conteúdo do campo "salario" seja maior que a média dos salários de todos os vendedores. serão selecionados todos os registros da tabela FUNCIONARIO cujo conteúdo do campo "salario" seja maior que o número de vendedores cadastrados. se trata de um exemplo de INNER JOIN. serão selecionados todos os registros da tabela FUNCIONARIO cujo conteúdo do campo "salario" seja maior que a soma dos salários de todos os vendedores se trata de um exemplo de OUTER JOIN. Respondido em 28/05/2019 20:33:38 Explicação: O comando não realiza uma junção, ele utiliza uma subconsulta para obter a media salarial dos empregados e a seguir filtrar os dados da consulta principal 3a Questão Considere as seguintes tabelas: CLIENTE (idCli, NomeCli) PEDIDO (idPEDIDO, Data, idCli, ValorPedido) Qual alternativa apresenta os clientes que NÃO tiveram nenhum pedido? SELECT NomeCli FROM CLIENTE C RIGHT JOIN PEDIDO P ON C.idCli = P.idCli SELECT * FROM CLIENTE SELECT NomeCli FROM CLIENTE C LEFT JOIN PEDIDO P ON C.idCli = P.idCli SELECT * FROM CLIENTE WHERE idCli IN (SELECT idCli FROM PEDIDO) SELECT * FROM CLIENTE WHERE idCli NOT IN (SELECT idCli FROM PEDIDO) Respondido em 28/05/2019 20:33:47 Explicação: O comando utiliza uma subconsulta para obter o id dos clientes que fizeram pedidos e a seguir filtra os clientes que não aparecem no conjunto retornado 4a Questão Considere as seguintes tabelas de um banco de dados: 1) Fornecedor (cod_fornec, nome_fornec, telefone, cidade, UF) 2) Estado (UF, nome_estado) A expressão SQL que obtém os nomes dos estados para os quais não há fornecedores cadastrados e: 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 NOT IN (SELECT F.UF FROM Fornecedor AS F); 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.nome_estado = F.UF; SELECT E.nome_estado FROM Estado AS E WHERE E.UF IN (SELECT F.UF FROM Fornecedor AS F); Respondido em 28/05/2019 20:34:07 Explicação: A subconsulta obtem os estados dos fornecedores e a seguir a consulta principal verifica os estados que não aparecem no conjunto retornado 5a 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) Qual o código do Carro que tem o maior valor de aluguel? SELECT idCarro FROM aluguel a where valor = (select Max(valor) from aluguel); SELECT idCarro FROM aluguel a where valor = (select sum(valor) from aluguel); SELECT idCarro, Max(valor) FROM aluguel; SELECT idCarro, Max(valor) FROM aluguel a group by idcarro; SELECT idCarro FROM aluguel a where valor = Max(valor); Explicação: Para executarmos a consulta temos que primeiro obter o maior valor de aluguel em uma subconsulta e depois utilizar este valor para filtrar as linhas na consulta principal 6a Questão Em um projeto lógico de um sistema foi identificado que um projeto é de um certo tipo. Assim, as relações abaixo foram definidas: TIPO_PROJETO (ID_TIPO, NOME) PROJETO (ID_PROJETO, NOME, DESCRICAO, ID_TIPO, VALOR) Conforme a linguagem SQL e as relações dadas, escolha a opção que mostre o nome de cada tipo de projeto que não possua um projeto e que comece com a letra A. SELECT TP.NOME FROM TIPO_PROJETO TP, PROJETO P WHERE TP.ID_TIPO = P.ID_TIPO AND TP.ID_TIPO IS NULL AND TP.NOME LIKE '%A%'; SELECT TP.NOME FROM TIPO_PROJETO TP, PROJETO P WHERE ID_TIPO IS NULL AND TP.NOME LIKE '%A%'; SELECT NOME FROM TIPO_PROJETO WHERE ID_TIPO NOT IN (SELECT DISTINCT ID_TIPO FROM PROJETO) AND NOME LIKE 'A%' ; SELECT TP.NOME FROM TIPO_PROJETO TP, PROJETO P WHERE ID_TIPO IS NULL AND P.VALOR=0 AND TP.NOME LIKE 'A%'; SELECT TP.NOME FROM TIPO_PROJETO TP, PROJETO P WHERE TP.ID_TIPO = P.ID_TIPO AND P.VALOR IS NULL AND TP.NOME LIKE '%A%'; Respondido em 28/05/2019 20:34:33 Explicação: A subconsulta retorna o ID do tipos de projeto que possuem projeto e a clausula where filtrar as linhas da consulta principal que estão no conjunto retornado e ainda os nomes que não começam por A
Compartilhar