

Seu próximo nível começa aqui
Com a Assinatura Ilimitada, você tem tudo que precisa para sua aprovação.
Com a Assinatura Ilimitada, você combina prática, teoria e método em uma única assinatura com tudo que você precisa para sua aprovação.
Considere a instrução PL/SQL abaixo, digitada no Oracle, no qual as tabelas com os respectivos campos existem em condições ideais.
SELECT f.nome_funcionario, f.id_departamento, d.nome_departamento FROM funcionarios f, departamentos d WHERE f.id_departamento = d.id_departamento ...I... ;
Para que a consulta recupere todas as linhas da tabela funcionarios, mesmo que não haja correspondência na tabela departamentos, a lacuna I deve ser preenchida com o operador de join externa
(+)
EXTERNAL JOIN
(#)
EXT
WITH EXT OPTION
Considere a tabela Pessoa com as seguintes informações:
Pessoa | ||
id | nome | data_nasc |
1 | Maria | 2017-10-09 |
2 | João | 2019-11-14 |
3 | Ana | 2016-10-14 |
4 | Pedro | 2017-11-09 |
Considere também a seguinte instrução SQL (Structured Query Language):
SELECT nome FROM Pessoa WHERE data_nasc IN (SELECT data_nasc FROM (SELECT data_nasc FROM (SELECT data_nasc FROM Pessoa WHERE EXTRACT(YEAR FROM data_nasc) = (EXTRACT(YEAR FROM NOW()))) AS nasc WHERE EXTRACT(MONTH FROM data_nasc) = (EXTRACT(MONTH FROM NOW()))) AS nasc WHERE EXTRACT(DAY FROM data_nasc) <= 10);
Qual é o nome que resultará da execução dessa consulta, caso tenha sido executada em 20/11/2017?
Ana.
João.
Maria.
Pedro.
Considere as seguintes tabelas:
Cliente | |
cod_cliente | nome |
1 | Rodrigo |
2 | Carlos |
3 | Rosana |
Vendedor | |
cod_vendedor | nome |
1 | Verônica |
2 | Cristian |
3 | Renan |
Pedido | ||
cod_pedido | cod_vendedor | cod_cliente |
1 | 1 | 1 |
A instrução SQL que retorna as informações
Vendedor | Cliente |
Carlos | |
Rodrigo | Verônica |
Rosana | |
Cristian | |
Renan |
está corretamente representada em ?
SELECT Cliente, Vendedor FROM ((SELECT c.nome as Cliente, v.nome as Vendedor FROM Cliente c LEFT JOIN Pedido p ON p.cod_cliente = c.cod_cliente LEFT JOIN Vendedor v ON v.cod_vendedor = p.cod_vendedor)
UNION
(SELECT c.nome as Cliente, v.nome as Vendedor FROM Cliente c RIGHT JOIN Pedido p ON p.cod_cliente = c.cod_cliente RIGHT JOIN Vendedor v ON v.cod_vendedor = p.cod_vendedor)) as temp ORDER BY Cliente ASC, Vendedor ASC;
SELECT Cliente, Vendedor FROM ((SELECT c.nome as Cliente, v.nome as Vendedor FROM Cliente c RIGHT JOIN Pedido p ON p.cod_cliente = c.cod_cliente RIGHT JOIN Vendedor v ON v.cod_vendedor = p.cod_vendedor)
UNION
(SELECT c.nome as Cliente, v.nome as Vendedor FROM Cliente c RIGHT JOIN Pedido p ON p.cod_cliente = c.cod_cliente RIGHT JOIN Vendedor v ON v.cod_vendedor = p.cod_vendedor)) as temp ORDER BY Cliente ASC, Vendedor ASC;
SELECT Cliente, Vendedor FROM ((SELECT c.nome AS Cliente, v.nome AS Vendedor FROM Cliente c LEFT JOIN Pedido p ON p.cod_cliente = c.cod_cliente LEFT JOIN Vendedor v ON v.cod_vendedor = p.cod_vendedor)
UNION
(SELECT c.nome AS Cliente, v.nome AS Vendedor FROM Cliente c LEFT JOIN Pedido p ON p.cod_cliente = c.cod_cliente LEFT JOIN Vendedor v ON v.cod_vendedor = p.cod_vendedor)) AS temp ORDER BY Cliente ASC, Vendedor ASC;
SELECT Cliente, Vendedor FROM ((SELECT c.nome as Cliente, v.nome as Vendedor FROM Cliente c JOIN Pedido p ON p.cod_cliente = c.cod_cliente JOIN Vendedor v ON v.cod_vendedor = p.cod_vendedor)
UNION
(SELECT c.nome as Cliente, v.nome as Vendedor FROM Cliente c JOIN Pedido p ON p.cod_cliente = c.cod_cliente JOIN Vendedor v ON v.cod_vendedor = p.cod_vendedor ORDER BY v.nome)) as temp ORDER BY Cliente ASC, Vendedor ASC;
Com relação às Tabelas ALUNO, DISCIPLINA e NOTAS, qual comando SQL (padrão ANSI) lista as disciplinas pelo NOME com a respectiva média de NOTA na disciplina?
SELECT AVG(N.NOTA) AS MEDIA FROM NOTAS N JOIN DISCIPLINA D ON N.DISCIPLINA_ID = D.DISCIPLINA_ID GROUP BY D.NOME
SELECT D.NOME, AVG(N.NOTA) AS MEDIA FROM NOTAS N JOIN DISCIPLINA D ON N.DISCIPLINA_ID = D.DISCIPLINA_ID
SELECT D.NOME, MED(N.NOTA) AS MEDIA FROM NOTAS N JOIN DISCIPLINA D ON N.DISCIPLINA_ID = D.DISCIPLINA_ID GROUP BY D.NOME
SELECT D.NOME, SUM(N.NOTA) AS MEDIA FROM NOTAS N JOIN DISCIPLINA D ON N.DISCIPLINA_ID = D.DISCIPLINAJD AVG BY D.NOME
SELECT D.NOME, AVG(N.NOTA) AS MEDIA FROM NOTAS N JOIN DISCIPLINA D ON N.DISCIPLINA_ID = D.DISCIPLINA ID GROUP BY D.NOME
Referente ás Tabelas ALUNO, DISCIPLINA e NOTAS, qual comando SQL (padrão ANSI) lista somente os NOMES dos alunos que não fizeram a disciplina “BD1"?
SELECT A.NOME FROM ALUNO A
EXCEPT
SELECT DISTINCT A.NOME FROM NOTAS N,
ALUNO A, DISCIPLINA D WHERE
N.ALUNO_ID=A.ALUNO_ID
AND D.NOME='BD1'
SELECT A.NOME
FROM NOTAS N, ALUNO A, DISCIPLINA D
WHERE N.ALUNO_ID=A.ALUNO_ID
AND N.DISCIPLINA_ID=D.DISCIPLINAJD AND
D.NOME='BD1'
SELECT A.NOME FROM ALUNO A
INTERSECT
SELECT DISTINCT A.NOME FROM NOTAS N,
ALUNO A, DISCIPLINA D WHERE
N.ALUNO_ID=A.ALUNO_ID
AND N.DISCIPLINA_ID =D.DISCIPLINA_ID AND
D.NOME='BD1'
SELECT A.NOME FROM ALUNO A
UNION
SELECT DISTINCT A.NOME FROM NOTAS N,
ALUNO A, DISCIPLINA D WHERE
N.ALUNO_ID=A.ALUNO_ID
AND N.DISCIPLINA_ID=D.DISCIPLINA_ID AND
D.NOME='BD1'
SELECT A.NOME FROM ALUNO A
EXCEPT
SELECT DISTINCT A.NOME FROM NOTAS N,
ALUNO A, DISCIPLINA D WHERE
N.ALUNO_ID=A.ALUNO_ID
AND N.DISCIPLINA_ID=D.DISCIPLINA_ID AND
D.NOME='BD1'
Em um banco de dados relacional, existem as seguintes tabelas: PEÇA, com campos CODPC e NOME, sendo que CODPC é chave primária; PROJETO, com campos CODPR e DESCR, sendo que CODPR é chave primária; e RELC, com campos CDPC e CDPJ, sendo que a chave primária dessa tabela é composta por CDPC+CDPJ e CDPC é também chave estrangeira ligada a tabela PEÇA e CDPJ é chave estrangeira ligada a tabela PROJETO.
A consulta SQL que fornece NOME dos elementos de PEÇA que não estão associadas a nenhum elemento de PROJETO (ou seja, peças que não estão associadas a nenhum projeto) é:
SELECT NOME FROM PEÇA WHERE EXISTS (SELECT DESCR FROM PROJETO WHERE EXISTS (SELECT CDPC FROM RELC WHERE (PEÇA.CODPC = RELC.CDPC) AND (PROJETO.CODPR=RELC.CDPJ)))
SELECT NOME FROM PEÇA WHERE NOT
EXISTS (SELECT DESCR FROM PROJETO
WHERE EXISTS (SELECT CDPC FROM RELC
WHERE (PEÇA.CODPC = RELC.CDPC) AND
(PROJETO.CODPR = RELC.CDPJ)))
SELECT NOME FROM PEÇA WHERE EXISTS (SELECT DESCR FROM PROJETO WHERE EXISTS (SELECT CDPC FROM RELC WHERE (PEÇA.CODPC = RELC.CDPC) AND EXISTS (PROJETO.CODPR=RELC.CDPJ)))
SELECT NOME FROM PEÇA WHERE NOT
EXISTS (SELECT DESCR FROM PROJETO WHERE NOT EXISTS (SELECT CDPC FROM
RELC WHERE (PEÇA.CODPC = RELC.CDPC)
AND (PROJETO.CODPR=RELC.CDPJ)))
SELECT NOME FROM PEÇA WHERE EXISTS
(SELECT DESCR FROM PROJETO WHERE
NOT EXISTS (SELECT CDPC FROM RELC
WHERE (PEÇA.CODPC = RELC.CDPC) AND
(PROJETO.CODPR=RELC.CDPJ)))
Considere a seguinte consulta SQL válida para determinado banco de dados relacional:

A sequência correta é
Considerando as Tabelas ALUNO, DISCIPLINA e NOTAS, qual comando SQL (padrão ANSI) calcula, corretamente, somente a média de NOTA do aluno ‘VINÍCIUS’ ?
SELECT MED(N.NOTA) FROM NOTAS N JOIN ALUNO A ON N.ALUNO_ID=A.ALUNO_ID
SELECT AVG(N.NOTA) FROM NOTAS N JOIN ALUNO A ON N.ALUNO_ID=A.ALUNO_ID WHERE A.NOME=VINÍCIUS'
SELECT MED(N.NOTA) FROM NOTAS N JOIN ALUNO A ON N.ALUNO_ID=A.ALUNO_ID WHERE A.NOME=VINÍCIUS'
SELECT AVG(N.NOTA) FROM NOTAS N JOIN ALUNO A ON N.ALUNO_ID=A.ALUNO_ID
SELECT AVG(N.NOTA) FROM NOTAS N WHERE N.NOME=VINICIUS
Sem realizar junções, indique a alternativa que informa corretamente a quantidade mínima de instruções SELECT para responder a seguinte consulta SQL: quais são os nomes, salários e diferenças salariais das funcionárias que trabalham no departamento de compras, e têm salário maior do que a média salarial do seu departamento.
0, pois não é possível escrever esta consulta sem junção.
2 instruções SELECT.
3 instruções SELECT.
4 instruções SELECT.
5 instruções SELECT.
Sendo NOTAS uma tabela, assinale a opção que apresenta o resultado que é retornado pelo seguinte comando SQL (padrão ANSI): SELECT MAX( TRUNC(4.56)) FROM NOTAS
3
4
4.5
4.56
5

O resultado do comando

corresponde à(ao)
Analise as tabelas e o comando SQL a seguir:
Tabela 1
a | b |
1 | 9000 |
3 | 8000 |
5 | 7000 |
7 | 6000 |
Tabela 2
c | d |
2 | ABC |
3 | DAF |
5 | GAA |
6 | JHL |
7 | MOA |
9 | PAR |
SELECT * FROM tabela1 RIGTH OUTER JOIN tabela2 ON
tabela1.a = tabela2.c
WHERE tabela1.b > 6500 AND tabela2.d LIKE ‘_A_’
ORDER BY tabela1.a ASC;
Esse comando produz a seguinte saída:
a | b | c | d |
3 | 8000 | 3 | DAF |
5 | 7000 | 5 | GAA |
a | b | c | d |
3 | 8000 | 3 | DAF |
5 | 7000 | 5 | GAA |
NULL | NULL | 9 | PAR |
a | b | c | d |
1 | 9000 | NULL | NULL |
3 | 8000 | 3 | DAF |
5 | 7000 | 5 | GAA |
NULL | NULL | 9 | PAR |
a | b | c | d |
1 | 9000 | NULL | NULL |
3 | 8000 | 3 | DAF |
5 | 7000 | 5 | GAA |
7 | 6000 | 7 | MOA |
a | b | c | d |
1 | 9000 | NULL | NULL |
NULL | NULL | 2 | ABC |
3 | 8000 | 4 | DAF |
5 | 7000 | 5 | GAA |
NULL | NULL | 6 | JHL |
7 | 6000 | 7 | MOA |
NULL | NULL | 9 | PAR |
Considere as seguintes tabelas de um banco de dados hipotético.

Fonte: Anderson, Maia. 2016
E considerando que um DBA (Administrador de Banco de dados) digitou o seguinte código, escrito na linguagem SQL:
SELECT nomecliente, prazoentrega
FROM cliente, pedidos
WHERE cliente.codcliente = pedidos.codcliente
ORDER BY prazoentrega desc;
A opção correta que corresponde ao resultado da consulta SQL escrita pelo DBA se encontra em qual das afirmativas abaixo:
Mostrar os códigos de clientes e seus respectivos prazos de entrega, ordenados do menor para o maior;
Mostrar os clientes e seus respectivos prazos de entrega, ordenados do maior para o menor;
Mostrar os clientes e seus respectivos pedidos, ordenados do maior para o menor;
Mostrar os clientes e seus respectivos códigos de pedidos, ordenados do menor para o maior;
Mostrar os códigos de clientes e códigos de pedidos, ordenados do menor para o maior.
Sejam as tabelas a seguir, escritas segundo o modelo relacional de dados.
PE (numpe, descr-pe, valor-pe) PROJETO (numpr, decr-pr, orc-pr) ALOCADO (numepe, numepr, data), em que os campos numpe e numpr são chaves primárias de suas respectivas tabelas (PE e PROJETO); os campos numepe e numepr compõem a chave primária de ALOCADO, sendo que numepe é chave estrangeira associada à tabela PE e numepr é chave estrangeira associada à tabela PROJETO. |
A consulta SQL que define o numpe que está alocado em todo o projeto da tabela PROJETO é
SELECT numpe FROM PE WHERE EXISTS
(SELECT * FROM PROJETOWHERE NOT EXISTS ( SELECT ALOCADO.numepe
FROM ALOCADO WHERE (PE.numpe = ALOCADO.numepe) AND
(PROJETO.numpr = ALOCADO.numepr))).
SELECT numpe FROM PE WHERE NOT EXISTS
(SELECT * FROM PROJETO
WHERE NOT EXISTS ( SELECT ALOCADO.numepe
FROM ALOCADO WHERE (PE.numpe = ALOCADO.numepe)
AND (PROJETO.numpr = ALOCADO.numepr))).
SELECT numpe FROM PE WHERE EXISTS
(SELECT * FROM PROJETO WHERE EXISTS ( SELECT ALOCADO.numepe
FROM ALOCADO WHERE (PE.numpe = ALOCADO.numepe) AND
(PROJETO.numpr = ALOCADO.numepr))).
SELECT numpe FROM PE WHERE NOT EXISTS
(SELECT * FROM PROJETO
WHERE EXISTS ( SELECT ALOCADO.numepe
FROM ALOCADO WHERE (PE.numpe = ALOCADO.numepe) AND
(PROJETO.numpr = ALOCADO.numepr))).
Um desenvolvedor da Casan pediu ajuda para o administrador de banco de dados para a construção de um SQL que apresente o nome e o endereço de clientes da empresa que estão acima da média de consumo de água. O DBA solucionou esse problema por meio de uma subquery. Sabendo que as estruturas das tabelas são as apresentadas em (1) e (2), assinale a alternativa que apresenta corretamente o código da subquery utilizada pelo DBA.
CLIENTES | |||||
cpf | nome | endereco | telefone | UF | cidade |
(1) | |||||
CONSUMO_CLIENTES | ||
cpf | data | valor_consumo |
(2) | ||
SELECT c.nome, c.endereco
FROM CLIENTES c
WHERE c.cpf = c.cpf
AND c.valor_consumo > (SELECT AVG(valor_consumo)
FROM CONSUMO_CLIENTES);
SELECT c.nome, c.endereco
FROM CLIENTES c, CONSUMO_CLIENTES cc
WHERE cc.valor_consumo > (SELECT AVG(valor_consumo)
FROM CONSUMO_CLIENTES);
SELECT c.nome, c.endereco
FROM CLIENTES c, CONSUMO_CLIENTES cc
WHERE c.cpf = cc.cpf
AND cc.valor_consumo > (SELECT AVG(valor_consumo)
FROM CONSUMO_CLIENTES);
SELECT c.nome, c.endereco
FROM CLIENTES c, CONSUMO_CLIENTES cc
WHERE (SELECT AVG(valor_consumo)
FROM cc);
SELECT c.nome, c.endereco
FROM CLIENTES c
WHERE (SELECT AVG(valor_consumo)
FROM CONSUMO_CLIENTES);
Seja a tabela a seguir, escrita segundo o modelo relacional de dados.
FUNC (codigo, nome, logradouro, salario), em que código é a chave primária da tabela FUNC |
.
A consulta que retorna todos os dados de funcionários de FUNC que ganham mais de mil reais, ordenada por nome, é
SELECT (SALARIO > 1000) FROM FUNC GROUP BY nome.
SELECT (SALARIO > 1000) FROM FUNC ORDER BY nome.
SELECT * FROM FUNC WHERE (SALARIO>1000) ORDER BY nome.
SELECT * FROM FUNC WHERE (SALARIO>1000) GROUP BY nome.
Ao ser executado um comando SQL foram exibidos os seguintes dados:
Órgão | Total |
PRODATER | 200000 |
SEMAE | 900000 |
SEMDUH | 2500000 |
SEMEC | 1000000 |
Pode-se concluir, corretamente, que o comando executado foi
SELECT SiglaOrgao as Órgão, AVG(ValorObra) as Total from obra GROUP BY SiglaOrgao;
SELECT SiglaOrgao as Órgão, SUM(ValorObra) as Total from obra GROUP BY SiglaOrgao;
SELECT SiglaOrgao as "Órgão", COUNT(ValorObra) as "Total" from obra GROUP BY SiglaOrgao;
SELECT SiglaOrgao as Órgão, SUM(ValorObra) as Total from obra ORDER BY SiglaOrgao;
SELECT SiglaOrgao as Órgão, SUM(ValorObra) as Total from obra;
Utilizar uma instrução SELECT na cláusula WHERE de outra instrução SELECT, recebe o nome de:
View.
Join.
Crosstab.
Subquery.
Nos bancos de dados SQL, para exibir todos os registros cadastrados em uma tabela chamada clientes utiliza-se a instrução:
SHOW ALL clientes;
SELECT * TO clientes;
SELECT ALL clientes;
SHOW * FROM clientes;
SELECT * FROM clientes;
Ao ser executado um comando SQL foram exibidos os seguintes dados:
Nome do órgão | Descrição da obra | Valor |
SERVIÇO MUNICIPAL DE ÁGUAS E ESGOTOS DE TERESINA | Estação de tratamento de água | 100000 |
SERVIÇO MUNICIPAL DE ÁGUAS E ESGOTOS DE TERESINA | Estação de tratamento de esgotos | 800000 |
EMPRESA TERESINENSE DE PROCESSAMENTO DE DADOS | Reforma do Data Center | 200000 |
SECRETARIA DE DESENVOLVIMENTO URBANO | Construção de moradias populares | 2000000 |
SECRETARIA DE DESENVOLVIMENTO URBANO | Correção de buracos no asfalto | 500000 |
SECRETARIA MUNICIPAL DE EDUCAÇÃO | Construção de escola | 1000000 |
O comando executado foi:
SELECT orgao.NomeOrgao as "Nome do órgão", obra.DescricaoObra as "Descrição da obra", obra.ValorObra as Valor FROM orgao, obra WHERE orgao.SiglaOrgao = obra.SiglaOrgao;
SELECT NomeOrgao as "Nome do órgão", DescricaoObra as "Descrição da obra", ValorObra as Valor FROM orgao AND obra WHERE orgao.SiglaOrgao LIKE obra.SiglaOrgao;
SELECT orgao.NomeOrgao, obra.DescricaoObra, obra.ValorObra FROM obra, orgao WHERE obra.SiglaOrgao = orgao.SiglaOrgao;
SELECT orgao.NomeOrgao as "Nome do órgão", obra.DescricaoObra as "Descrição da obra", obra.ValorObra as Valor FROM orgao, obra WHERE orgao.SiglaOrgao AND obra.SiglaOrgao;
SELECT orgao.NomeOrgao as Nome do órgão, obra.DescricaoObra as Descrição da obra, obra.ValorObra as Valor FROM orgao, obra WHERE orgao.SiglaOrgao = obra.SiglaOrgao;