

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.
Tabela I
Clientes

Tabela II
Pedidos

Tabela III
Resultado

Com base nas informações nas tabelas I e II, precedentes, assinale a opção em que são apresentados comandos SQL que permitem a obtenção do resultado demonstrado na tabela III.
SELECT Clientes.Nome, Clientes.Cidade, Pedidos.Data FROM Pedidos LEFT JOIN Clientes ON Pedidos.IdCliente=Clientes.IdCliente;
SELECT Clientes.Nome, Clientes.Cidade, Pedidos.Data FROM Pedidos, Clientes INNER JOIN Clientes ON Pedidos.IdCliente=Clientes.IdCliente;
SELECT Clientes.Nome, Clientes.Cidade, Pedidos.Data FROM Pedidos AND Clientes INNER JOIN Clientes ON Pedidos.IdCliente=Clientes.IdCliente;
SELECT Clientes.Nome, Clientes.Cidade, Pedidos.Data FROM Pedidos INNER JOIN Clientes ON Pedidos.IdCliente=Clientes.IdCliente;
SELECT Clientes.Nome, Clientes.Cidade, Pedidos.Data FROM Pedidos, Clientes LEFT JOIN Clientes ON Pedidos.IdCliente=Clientes.IdCliente;
Em um sistema de gerenciamento de banco de dados relacional compatível com SQL ANSI, você precisa selecionar dados de duas tabelas relacionadas: clientes (com colunas id_cliente, nome) e pedidos (com colunas id_pedido, id_cliente, data_pedido). O objetivo é obter uma lista completa de todos os clientes e todos os pedidos, mesmo que um cliente não tenha feito nenhum pedido ou que um pedido não esteja associado a um cliente existente (o que pode ocorrer devido a inconsistências nos dados). Para cada cliente, devem ser exibidos os pedidos associados (se houver), e para cada pedido, o cliente correspondente (se houver). Onde não houver correspondência, as colunas da tabela ausente devem exibir o valor NULL. Assinale a alternativa que atende corretamente o requisito descrito:
A cláusula INNER JOIN retornaria apenas os clientes que possuem pedidos e os pedidos que estão associados a um cliente, excluindo clientes sem pedidos e pedidos sem cliente correspondente.
A cláusula RIGHT JOIN, ao unir clientes à esquerda e pedidos à direita, retornaria todos os pedidos e os clientes correspondentes (se houver), com valores NULL nas colunas de clientes, para pedidos sem cliente correspondente.
A cláusula LEFT JOIN, ao unir clientes à esquerda e pedidos à direita, retornaria todos os clientes e os pedidos correspondentes (se houver), com valores NULL nas colunas de pedidos, para clientes sem pedidos.
A cláusula FULL OUTER JOIN retornaria todas as linhas de ambas as tabelas (clientes e pedidos). Para os clientes sem pedidos, as colunas de pedidos seriam NULL. Para os pedidos sem cliente correspondente, as colunas de clientes seriam NULL.
A cláusula JOIN, ao unir clientes à esquerda e pedidos à direita, retornaria todos os pedidos e os clientes correspondentes (se houver), com valores NULL nas colunas de clientes, para pedidos sem cliente correspondente.
Em qual dos comandos SQL abaixo o operador JOIN é utilizado?
Para combinar resultados de duas tabelas com base em uma condição.
Para excluir uma tabela.
Para alterar uma estrutura de tabela.
Para criar um índice.
Para inserir dados em uma tabela.
Sobre a instrução SELECT da linguagem SQL ANSI, qual tipo de junção (JOIN) é utilizada para combinar linhas de duas ou mais tabelas com base em uma coluna comum entre elas, retornando apenas as linhas que têm valores correspondentes em ambas as tabelas?
INNER JOIN
LEFT JOIN
RIGHT JOIN
FULL JOIN
CROSS JOIN
A respeito do comando INNER JOIN do SQL, qual a alternativa CORRETA?
Junta uma tabela a si mesma comparando uma tabela a si mesma.
Seleciona linhas de uma tabela que pode ou não ter as linhas correspondentes em outras tabelas.
Junção completa para encontrar uma linha de uma tabela que não tenha uma linha correspondente em outra tabela.
Produz um produto cartesiano das linhas em duas ou mais tabelas.
Seleciona linhas de uma tabela que tenham as linhas correspondentes em outras tabelas.
Qual alternativa contém a instrução SQL correta para apresentar a relação dos funcionários com seu respectivo cargo? A consulta deve apresentar o(s) nome(s) do(s) funcionário(s) e o nome do respectivo cargo.
select fun_nome, (select car_nome from cargo where F.car_id = nivel.car_id) cargo
from funcionario F
select fun_nome, (select car_nome from cargo where car_id = F.car_id) cargo
from funcionario F
select F.fun_nome, C.car_id cargo from funcionario F inner join cargo C
on F.car_id = C.car_id
select F.fun_nome, C.niv_nome cargo from funcionario F, cargo C
where F.car_id = C.car_id
select F.fun_nome, C.car_nome cargo from funcionario F, nivel N
where F.car_id = N.car_id
Em bancos de dados relacionais, a cláusula JOIN é utilizada para combinar registros de duas ou mais tabelas com base em uma coluna comum entre elas. Em relação aos tipos INNER JOIN, LEFT JOIN, RIGHT JOIN e CROSS JOIN no MySQL, analise as assertivas abaixo, assinalando V, se verdadeiras, ou F, se falsas.
( ) O comando INNER JOIN retorna apenas os registros que possuem correspondência em ambas as tabelas, conforme a condição estabelecida.
( ) O LEFT JOIN garante a exibição de todos os registros da tabela à esquerda, mesmo que não haja correspondência na tabela à direita.
( ) A operação CROSS JOIN pode ser usada com cláusula ON para limitar o número de combinações geradas, funcionando de forma semelhante a um INNER JOIN.
( ) O RIGHT JOIN produz os mesmos resultados que um LEFT JOIN, desde que as posições das tabelas sejam invertidas corretamente.
( ) Quando não há correspondência no RIGHT JOIN, os valores da tabela à esquerda serão substituídos por valores padrão (por exemplo, zero), e não por NULL. A ordem correta de preenchimento dos parênteses, de cima para baixo, é:
V – F – F – V – V.
F – V – V – F – F.
V – V – F – V – F.
F – V – V – F – V.
V – F – V – V – F.
Em SQL, as junções externas (LEFT OUTER JOIN, RIGHT OUTER JOIN e FULL OUTER JOIN) permitem incluir registros de uma ou de ambas as tabelas, mesmo quando não há correspondência entre as chaves de junção.
Certo
Errado
Analise as seguintes afirmações relacionadas a conceitos básicos de banco de dados e linguagem SQL.
I. Na linguagem SQL, um INNER JOIN retorna todas as tuplas comuns às duas tabelas.
II. Em uma Junção entre duas tabelas, a cláusula USING só poderá ser usada quando o nome do atributo for igual nas duas tabelas.
III. Na linguagem SQL, um RIGHT OUTER JOIN retorna todas as tuplas que não são comuns às duas tabelas.
IV. Uma Junção é usada para compor informações complexas a partir de tabelas sem nenhum tipo de relacionamento.
Indique a opção que contenha todas as afirmações verdadeiras.
I e III.
II e III.
III e IV.
I e II.
II e IV.
A Linguagem de Consulta Estruturada (SQL) é a linguagem padrão para interagir com Sistemas Gerenciadores de Bancos de Dados Relacionais (SGBDRs). O comando SELECT é usado para recuperar dados, e a cláusula JOIN é essencial para combinar registros de duas ou mais tabelas com base em colunas relacionadas, permitindo a reconstituição de informações que foram normalizadas. Acerca dos tipos de JOIN em SQL, registre V, para as afirmativas verdadeiras, e F, para as falsas:
(__)O INNER JOIN (ou simplesmente JOIN) retorna apenas as linhas que possuem valores correspondentes em ambas as tabelas que estão sendo unidas.
(__)O LEFT JOIN (ou LEFT OUTER JOIN) retorna todas as linhas da tabela à esquerda e as linhas correspondentes da tabela à direita; se não houver correspondência, colunas da tabela direita virão com valor NULL.
(__)O FULL OUTER JOIN retorna todas as linhas de ambas as tabelas; se houver correspondência, as colunas são combinadas, e se não houver, as colunas da tabela sem correspondência são preenchidas com NULL.
(__)O CROSS JOIN é usado para unir tabelas com base em uma condição de igualdade, similar ao INNER JOIN, mas otimizado para chaves estrangeiras.
Assinale a alternativa que apresenta a sequência correta, de cima para baixo:
V, V, V, F.
F, F, V, V.
F, V, V, F.
V, F, F, V.
Em SQL (ANSI), a cláusula Join (Junção) pode ser usada para combinar as tuplas de duas ou mais tabelas permitindo consultas mais complexas que levam em consideração o relacionamento entre os dados. Considerando uma tabela chamada “alunos” com os campos id_aluno, nome; e uma outra tabela chamada “matriculas” com os campos id_turma, id_aluno. Marque a alternativa que resulta corretamente nos nomes dos alunos matriculados na turma de id 14 ou que não estão matriculados em nenhuma turma.
SELECT nome FROM alunos LEFT OUTER JOIN matriculas using(id_aluno) WHERE id_turma = 14 OR id_turma IS NULL;
SELECT nome FROM alunos RIGHT OUTER JOIN matriculas using(id_aluno) WHERE id_turma = 14 OR id_turma IS NOT NULL;
SELECT nome FROM alunos JOIN matriculas on(id_ aluno) WHERE id_turma = 14 OR id_turma IS NULL;
SELECT nome FROM alunos LEFT JOIN matriculas using(id_aluno) WHERE id_turma = 14 OR id_turma IS NOT NULL;
Um supermercado que possui vendas online possui um banco de dados relacional que armazena informações sobre seus produtos, clientes e pedidos. As tabelas do banco de dados são as seguintes:
Produtos:
• produto_id (INT) - Chave primária
• nome (VARCHAR(255))
• preço (DECIMAL(10,2))
• categoria (VARCHAR(255))
Clientes:
• cliente_id (INT) - Chave primária
• nome (VARCHAR(255))
• email (VARCHAR(255))
• cidade (VARCHAR(255))
Pedidos:
• pedido_id (INT) - Chave primária
• cliente_id (INT) - Chave estrangeira para a tabela Clientes
• data_pedido (DATE)
• total (DECIMAL(10,2))
ItensPedido:
• item_pedido_id (INT) - Chave primária
• pedido_id (INT) - Chave estrangeira para a tabela Pedidos
• produto_id (INT) - Chave estrangeira para a tabela Produtos
• quantidade (INT)
• preço_unitario (DECIMAL(10,2))
Assinale a consulta SQL que utiliza o JOIN de forma mais eficaz para obter o nome do cliente, o nome do produto e a quantidade pedida para cada item em um pedido específico (pedido_id = 123).
SELECT c.nome, p.nome, ip.quantidade
FROM Clientes c, Produtos p, ItensPedido ip
WHERE c.cliente_id = ip.cliente_id AND p.produto_id = ip.produto_id AND ip.pedido_id = 123
GROUP BY c.nome, p.nome;
SELECT c.nome, p.nome, ip.quantidade
FROM Clientes c, Produtos p, ItensPedido ip
WHERE c.cliente_id = ip.cliente_id AND p.produto_id = ip.produto_id AND ip.pedido_id = 123;
SELECT c.nome, p.nome, ip.quantidade
FROM Clientes c
JOIN Produtos p ON c.cliente_id = p.cliente_id
JOIN ItensPedido ip ON ip.produto_id = p.produto_id
WHERE ip.pedido_id = 123;
SELECT c.nome, p.nome, ip.quantidade
FROM Clientes c
JOIN Produtos p ON c.cliente_id = p.cliente_id
JOIN ItensPedido ip ON ip.pedido_id = p.pedido_id
WHERE ip.pedido_id = 123;
SELECT c.nome, p.nome, ip.quantidade
FROM Clientes c
JOIN Produtos p ON c.cliente_id = p.cliente_id
JOIN ItensPedido ip ON ip.pedido_id = c.cliente_id
WHERE ip.pedido_id = 123;
Dois conjuntos de dados (A e B) são representados na Imagem 1, e o resultado de uma consulta SQL na Imagem 2.
Com relação à resposta que representa a consulta SQL da área marcada na Imagem 2, assinale a alternativa correta.

select * from A left join B on A.key = B.key where B.key is null
select * from A right join B on A.key = B.key where A.key is null
select * from A inner join B on A.key = B.key where B
select * from A full outer join B on A.key = B.key where A.key is null or B.key is null
select * from A full outer join B on A.key = B.key
Considere que você esteja trabalhando com bancos de dados que contêm informações sobre livros e autores utilizando o SGBD SQLServer.
Analise o script a seguir.
CREATE TABLE #Livros (
LivroID INT,
Titulo VARCHAR(100)
);
CREATE TABLE #Autores (
Nome VARCHAR(100),
LivroID INT
);
Avalie se os itens a seguir apresentam a escrita correta em uma consulta SQL nesse banco, que faça um JOIN entre as tabelas de livros e autores, em que cada livro é listado junto com uma lista de todos os seus autores (nomes de autores agregados em uma única String).
I. SELECT L.Titulo, STRING_AGG(A.Nome, ', ') AS
Autores FROM #Livros L
INNER JOIN #Autores A ON L.LivroID = A.LivroID
GROUP BY L.Titulo;
II. SELECT L.Titulo, GROUP_CONTACT(A.Nome, ', ') AS
Autores FROM Livros L
JOIN Autores A ON L.LivroID = A.LivroID
GROUP BY L.AutorID;
III. SELECT L.Titulo, STRING_AGG(A.Nome) AS Autores FROM
Livros L
JOIN Autores A ON L.LivroID = A.LivroID
GROUP BY L.Titulo
IV. SELECT L.Titulo, STRING_AGG(A.Nome) AS Autores FROM
#Livros L
LEFT JOIN #Autores A ON L.LivroID = A.LivroID
GROUP BY L.Titulo, A.Nome;
A escrita dessa consulta SQL está correta em
I, apenas.
IV, apenas.
I e III, apenas.
I e IV, apenas.
I, III e IV.
Leia o caso a seguir.
Durante o desenvolvimento de um sistema, um analista ficou em dúvida sobre como criar as tabelas envolvendo algumas entidades de um sistema de inscrição de palestras. Nesse sistema havia o seguinte requisito: um estudante pode realizar inscrições em várias palestras e uma palestra pode receber inscrições de vários estudantes. |
Este é um típico relacionamento
um para um (1:1).
um para muitos (1:N).
muitos para um (N:1).
muitos para muitos (M:N).
No contexto de bancos de dados relacionais, a cláusula JOIN é utilizado para combinar dados de tabelas diferentes, permitindo consultas mais complexas e abrangentes. Existem vários tipos de JOINs, como INNER JOIN, LEFT JOIN, RIGHT JOIN e FULL JOIN, cada um com suas peculiaridades e usos específicos. Considerando os tipos de JOINs existentes, analise as assertivas e assinale a alternativa correta.
I. INNER JOIN: utilizado quando se deseja obter apenas os registros que têm correspondência em ambas as tabelas.
II. LEFT JOIN: utilizado quando se deseja todos os registros da tabela à direita, independentemente de haver correspondência na tabela à esquerda.
III. RIGHT JOIN: utilizado quando se deseja todos os registros da tabela à esquerda, independentemente de haver correspondência na tabela à direita.
IV. FULL JOIN: utilizado quando se deseja todos os registros das tabelas à esquerda e à direita, com correspondências quando existirem e nulos quando não houver.
Apenas I está correta.
Apenas I e IV estão corretas.
Apenas II e III estão corretas.
Apenas II, III e IV estão corretas.
Com base nos diferentes tipos de junções (joins) disponíveis em SQL, marque a alternativa mais correta:
A junção externa esquerda (LEFT JOIN) retorna todas as linhas da tabela à esquerda e as linhas correspondentes da tabela à direita, ou NULL se não houver correspondência.
A junção interna (INNER JOIN) retorna todas as linhas de ambas as tabelas, combinando-as com base em uma condição de correspondência, mesmo que não haja correspondência em uma das tabelas.
A junção externa completa (FULL OUTER JOIN) retorna apenas as linhas que têm correspondência em ambas as tabelas.
A junção cruzada (CROSS JOIN) retorna apenas as linhas que têm correspondência em ambas as tabelas.
A cláusula ON na consulta estabelece a condição para a junção das duas tabelas, especificando que o CustomerID da tabela Customers deve corresponder ao OrderID da tabela Orders.
Certo
Errado
João está escrevendo uma consulta que envolve várias tabelas e precisa garantir que todas as suas linhas sejam incluídas no resultado, mesmo que não haja correspondências entre elas.
Para tanto, João deverá utilizar o seguinte operador de junção:
LEFT JOIN;
INNER JOIN;
RIGHT JOIN;
CROSS JOIN;
FULL OUTER JOIN.
Considere as seguintes tabelas, com suas respectivas colunas, que se relacionam pela coluna
:

Para retornar a lista, sem repetições, de Fornecedores que possuem Produtos com preços menores que 20, deve-se executar o comando SQL:
SELECT FornecedorNome
FROM Fornecedor
WHERE EXISTS (SELECT ProdutoNome FROM Produto
WHERE Produto.FornecedorID =
Fornecedor.FornecedorID AND Preco < 20)
SELECT COUNT(FornecedorID), FornecedorNome
FROM Fornecedor, Produto
GROUP BY FornecedorID
HAVING COUNT(Preco) < 20
SELECT FornecedorNome
FROM Fornecedor
INNER JOIN Produto ON Produto.FornecedorID =
Fornecedor.FornecedorID AND Preco < 20
SELECT FornecedorNome FROM Fornecedor
UNION
SELECT ProdutoNome FROM Produto
WHERE Preco < 20)
SELECT FornecedorNome
FROM Fornecedor
WHERE FornecedorID = ANY (
SELECT ProdutoID
FROM Produto WHERE Preco < 20)