Buscar

Banco de Dados - Aula 6 -10

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Continue navegando