Questão 19 - HCPA 2009/4 - ANALISTA DE SISTEMAS I (ADMINISTRADOR DE BANCO DE DADOS)

questão 19 Oracle 9i outer join

Veja abaixo a resposta correta da questão e uma breve análise sobre o conteúdo.

Na linguagem SQL do Oracle 9i, é possível utilizar o 

recurso de “outer join” em uma cláusula select. Este 

recurso expande a consulta de um join simples de duas 

ou mais tabelas, fazendo com que o resultado da query

traga as rows de duas tabelas relacionadas mesmo 

que, para um determinado campo, a query não satisfa-

ça a condição desejada na cláusula where do select. 

Assinale o comando a ser utilizado para poder realizar 

um “outer join”. 

(A) (*) 

(B) (less) 

(C) (+) 

(D) (-) 

(E) (or) 

Resposta Correta:

No Oracle 9i, o recurso de "outer join" é implementado usando o operador "(+)" na cláusula WHERE da consulta SELECT. Portanto, a alternativa correta é a (C) (+).

Explicação das alternativas:

(A) (*): O asterisco () é usado em consultas para selecionar todas as colunas de uma tabela. Não está relacionado ao "outer join".

(B) (less): Não é um operador SQL válido para "outer join" ou outra operação.

(C) (+): Este é o operador para realizar "outer join" no Oracle. Ele é colocado ao lado da coluna de uma tabela que deve retornar valores nulos se a condição de junção não for atendida.

(D) (-): Não é um operador SQL válido para "outer join" ou outra operação.

(E) (or): O "or" é usado em cláusulas WHERE para combinar condições. Não está relacionado ao "outer join".

Oracle 12c

No Oracle 12c, o uso do operador "(+)" para "outer join" é mantido, então a resposta para essa questão seria a mesma.

Qual o assunto e o nível de dificuldade da questão?

O assunto da questão está relacionado à linguagem SQL, especificamente ao uso do recurso de "outer join" em consultas SELECT no Oracle 9i. Esse assunto se enquadra em SQL avançado e é considerado de nível intermediário em termos de dificuldade, pois requer conhecimento sobre como utilizar o operador "(+)" para realizar "outer join" entre tabelas e entender como ele funciona para expandir os resultados da consulta. Embora não seja um conceito extremamente complexo, é necessário compreender os fundamentos de junções em SQL e a sintaxe específica do Oracle.

Mais exemplos de uso:

Aqui estão alguns exemplos de como usar o operador "(+)" para realizar "outer join" no Oracle SQL:

Exemplo de Inner Join:

Suponha que temos duas tabelas, "employees" e "departments", e queremos encontrar todos os funcionários juntamente com o departamento em que trabalham, mesmo que alguns funcionários não tenham sido atribuídos a nenhum departamento:

SELECT e.employee_id, e.employee_name, d.department_name

FROM employees e

INNER JOIN departments d ON e.department_id = d.department_id;

Exemplo de Left Outer Join:

Agora, queremos incluir todos os funcionários, mesmo aqueles que não estão atribuídos a nenhum departamento. Para isso, usamos um "left outer join":

SELECT e.employee_id, e.employee_name, d.department_name

FROM employees e

LEFT OUTER JOIN departments d ON e.department_id = d.department_id;

O operador "(+)" não é necessário no Oracle 9i, mas é comummente usado em versões mais antigas.

Exemplo de Right Outer Join:

O "right outer join" é semelhante, mas garante que todos os registros da tabela à direita sejam incluídos na saída:

SELECT e.employee_id, e.employee_name, d.department_name

FROM employees e

RIGHT OUTER JOIN departments d ON e.department_id = d.department_id;

Exemplo de Full Outer Join:

O "full outer join" retorna todos os registros quando há uma correspondência em qualquer uma das tabelas. Se não houver correspondência, os campos da tabela que faltarão na outra terão valores nulos:

SELECT e.employee_id, e.employee_name, d.department_name

FROM employees e

FULL OUTER JOIN departments d ON e.department_id = d.department_id;

Esses são exemplos básicos de como usar os diferentes tipos de "outer join" no Oracle SQL. O operador "(+)" é utilizado nas versões mais antigas do Oracle para indicar a tabela à esquerda em um "outer join".

Como seria isso no PostgreSQL?

No PostgreSQL, os "outer joins" são realizados de forma um pouco diferente em comparação com o Oracle SQL. O PostgreSQL utiliza a sintaxe ANSI padrão para realizar "outer joins". Aqui estão os exemplos anteriores adaptados para o PostgreSQL:

Exemplo de Inner Join:

SELECT e.employee_id, e.employee_name, d.department_name

FROM employees e

INNER JOIN departments d ON e.department_id = d.department_id;

Exemplo de Left Outer Join:

SELECT e.employee_id, e.employee_name, d.department_name

FROM employees e

LEFT OUTER JOIN departments d ON e.department_id = d.department_id;

Exemplo de Right Outer Join:

SELECT e.employee_id, e.employee_name, d.department_name

FROM employees e

RIGHT OUTER JOIN departments d ON e.department_id = d.department_id;

Exemplo de Full Outer Join:

SELECT e.employee_id, e.employee_name, d.department_name

FROM employees e

FULL OUTER JOIN departments d ON e.department_id = d.department_id;

No PostgreSQL, não é necessário usar operadores especiais como o "(+)" do Oracle SQL para realizar "outer joins". A sintaxe ANSI padrão é usada em todas as versões do PostgreSQL para realizar "inner joins", "left outer joins", "right outer joins" e "full outer joins".

No PostgreSQL a palavra outer sendo declarada ou não tem o mesmo resultado correto?

Sim, no PostgreSQL, a palavra-chave "OUTER" é opcional ao realizar "outer joins". A sintaxe padrão do PostgreSQL para "outer joins" é usar apenas "LEFT JOIN", "RIGHT JOIN" ou "FULL JOIN".

Por exemplo, as consultas abaixo produzem o mesmo resultado:

Utilizando a palavra-chave "OUTER":

SELECT *

FROM tabela_a

LEFT OUTER JOIN tabela_b ON tabela_a.id = tabela_b.id;

Sem utilizar a palavra-chave "OUTER":

SELECT *

FROM tabela_a

LEFT JOIN tabela_b ON tabela_a.id = tabela_b.id;

Ambas as consultas realizam um "left outer join" entre as tabelas "tabela_a" e "tabela_b". O resultado será o mesmo independentemente de utilizar ou não a palavra-chave "OUTER" no PostgreSQL.

Forma antiga do Oracle Pedida na questão

No Oracle, a palavra-chave "OUTER" não é reconhecida como parte da sintaxe de "outer joins". No Oracle, os "outer joins" são realizados usando o operador (+) nas colunas das tabelas que participam da junção.

Por exemplo, suponha que queremos fazer um "outer join" entre as tabelas "tabela_a" e "tabela_b" na coluna "id":

SELECT *

FROM tabela_a, tabela_b

WHERE tabela_a.id(+) = tabela_b.id;

Neste exemplo, o (+) na coluna "id" da tabela_a indica um "outer join" à direita (right outer join).

Portanto, no Oracle, a palavra-chave "OUTER" não faz parte da sintaxe para realizar "outer joins". O uso de (+) é específico do Oracle para indicar operações de "outer join".

Essa é uma forma antiga de realizar "outer joins" no Oracle, conhecida como sintaxe de join externo implícito.

A sintaxe do operador "+" para "outer joins" é uma forma mais antiga e específica do Oracle. Embora ainda seja suportada em versões mais recentes do Oracle por motivos de compatibilidade com versões anteriores, não é considerada a prática recomendada.

Forma recomendada

No Oracle, a forma recomendada de realizar "outer joins" é usando a sintaxe de "ANSI join" com as palavras-chave "LEFT JOIN", "RIGHT JOIN" ou "FULL JOIN".

Aqui está como seria a consulta utilizando a sintaxe de "ANSI join" para realizar um "outer join" entre as tabelas "tabela_a" e "tabela_b" na coluna "id":

SELECT *

FROM tabela_a

LEFT JOIN tabela_b ON tabela_a.id = tabela_b.id;

Neste exemplo, o "LEFT JOIN" indica que queremos todos os registros da tabela_a e os registros correspondentes da tabela_b, se houver correspondência. Se não houver correspondência, as colunas da tabela_b serão preenchidas com NULL.

Agora, se quisermos um "outer join" à direita, usamos "RIGHT JOIN", e para um "outer join" completo, usamos "FULL JOIN".

Portanto, no Oracle, a forma mais moderna e recomendada de realizar "outer joins" é usando a sintaxe de "ANSI join" com as palavras-chave "LEFT JOIN", "RIGHT JOIN" ou "FULL JOIN".

É mais provável que as questões ou exercícios atuais se concentrem na sintaxe de "ANSI join" com palavras-chave como "LEFT JOIN", "RIGHT JOIN" ou "FULL JOIN", que é mais padronizada e amplamente utilizada em bancos de dados relacionais modernos.

Quer acompanhar as novidade do site?

Leia mais em: iretoaoponto-tech.com.br/conc...

Questão 19 - HCPA 2009/4 - ANALISTA DE SISTEMAS I (ADMINISTRADOR DE BANCO DE DADOS)

Última atualização: 2024-02-23

Quer acompanhar as novidade do site?
Veja também:

Como remover caracteres especiais no mysql?

remover caracteres especiais mysql

Como alterar nome da tabela no MySQL?

Alterar nome de tabela mysql

Questão 19 - HCPA 2020 - ANALISTA DE TI (ADMINISTRAÇÃO DE BANCO DE DADOS)

questão 19 comando operação oracle

Questão 11 - HCPA 2011 - ANALISTA DE SISTEMAS I (ADMINISTRADOR DE BANCO DE DADOS E SEGURANÇA DA INFORMAÇÃO)

questão 11 comandos sql oracle 10g

Questão 24 - HCPA 2009/3 - ANALISTA DE SISTEMAS I (ADMINISTRADOR DE BANCO DE DADOS)

questão 24 consulta oracle DB_LINKs

O que faz nvl no postgres?

nvl postgres

Web Stories