Banco de Dados I – Aula 14B

USANDO O SCHEMA HR DO ORACLE

hr

JUNÇÃO DE TABELA (SINTAXE ANTIGA)

SQL> SELECT tabela1.coluna, tabela2.coluna
  2  FROM tabela1, tabela2
  3  WHERE tabela1.coluna = tabela2.coluna;

JUNÇÃO DE TABELA (SINTAXE NOVA)

SQL> SELECT tabela1.coluna, tabela2.coluna
  2  FROM tabela1
  3    INNER JOIN tabela2
  4      ON tabela1.coluna =
  5                  tabela2.coluna;

GERANDO UM PRODUTO CARTESIANO (SINTAXE ANTIGA)

Gera-se um produto cartesiano caso uma condição de junção seja omitida.

SQL> SELECT FIRST_NAME,
  2         DEPARTMENT_NAME
  3  FROM   EMPLOYEES,
  4         DEPARTMENTS;

GERANDO UM PRODUTO CARTESIANO (SINTAXE NOVA)

SQL> SELECT FIRST_NAME,
  2         DEPARTMENT_NAME
  3  FROM   EMPLOYEES
  4         CROSS JOIN DEPARTMENTS;

GERANDO REGISTROS COM JUNÇÕES IDÊNTICAS (SINTAXE ANTIGA)

SELECT  FIRST_NAME,
        EMPLOYEES.DEPARTMENT_ID,
        DEPARTMENTS.DEPARTMENT_ID,
        DEPARTMENT_NAME
FROM    EMPLOYEES, DEPARTMENTS
WHERE   EMPLOYEES.DEPARTMENT_ID =
                  DEPARTMENTS.DEPARTMENT_ID

GERANDO REGISTROS COM JUNÇÕES IDÊNTICAS (SINTAXE NOVA)

SELECT  FIRST_NAME,
        EMPLOYEES.DEPARTMENT_ID,
        DEPARTMENTS.DEPARTMENT_ID,
        DEPARTMENT_NAME
FROM    EMPLOYEES
        INNER JOIN DEPARTMENTS
          ON EMPLOYEES.DEPARTMENT_ID =
            DEPARTMENTS.DEPARTMENT_ID

CONDIÇÕES DE PESQUISA ADICIONAIS USANDO O OPERADOR AND (SINTAXE ANTIGA)

SELECT   EMPLOYEE_ID, FIRST_NAME,
         DEPARTMENT_NAME
FROM     EMPLOYEES, DEPARTMENTS
WHERE    EMPLOYEES.DEPARTMENT_ID =
           DEPARTMENTS.DEPARTMENT_ID
         AND FIRST_NAME = 'Diana';

CONDIÇÕES DE PESQUISA ADICIONAIS USANDO O OPERADOR AND (SINTAXE NOVA)

SELECT   EMPLOYEE_ID, FIRST_NAME,
         DEPARTMENT_NAME
FROM     EMPLOYEES
         INNER JOIN DEPARTMENTS
           ON EMPLOYEES.DEPARTMENT_ID =
             DEPARTMENTS.DEPARTMENT_ID
WHERE   FIRST_NAME = 'Diana';

UNINDO MAIS DE DUAS TABELAS (SINTAXE ANTIGA)

SELECT   E.FIRST_NAME,
         J.JOB_TITLE,
         D.DEPARTMENT_NAME
FROM     EMPLOYEES E,
         JOBS J,
         DEPARTMENTS D
WHERE    E.JOB_ID = J.JOB_ID
         AND E.DEPARTMENT_ID =   D.DEPARTMENT_ID;

UNINDO MAIS DE DUAS TABELAS (SINTAXE NOVA)

SELECT   E.FIRST_NAME,
         J.JOB_TITLE,
         D.DEPARTMENT_NAME
FROM     EMPLOYEES E
         INNER JOIN JOBS J
           ON E.JOB_ID = J.JOB_ID
         INNER JOIN DEPARTMENTS D 
           ON E.DEPARTMENT_ID =   D.DEPARTMENT_ID;

JUNÇÕES NÃO-IDÊNTICAS (SINTAXE ANTIGA)

SELECT    E.FIRST_NAME, E.LAST_NAME,
          E.SALARY, J.MIN_SALARY,   J.MAX_SALARY, J.JOB_TITLE
FROM      EMPLOYEES E, JOBS J
WHERE     E.SALARY
          BETWEEN J.MIN_SALARY AND   J.MAX_SALARY;

JUNÇÕES NÃO-IDÊNTICAS (SINTAXE NOVA)

SELECT    E.FIRST_NAME, E.LAST_NAME,
          E.SALARY, J.MIN_SALARY,   J.MAX_SALARY, J.JOB_TITLE
FROM      EMPLOYEES E
            JOIN JOBS J
              ON E.SALARY BETWEEN      J.MIN_SALARY AND J.MAX_SALARY;

EXEMPLO DE JUNÇÕES EXTERNAS (SINTAXE ANTIGA)

SELECT   E.FIRST_NAME,
         D.DEPARTMENT_NAME
FROM     EMPLOYEES E,
         DEPARTMENTS D
WHERE    E.DEPARTMENT_ID(+) =
                       D.DEPARTMENT_ID;

EXEMPLO DE JUNÇÕES EXTERNAS (SINTAXE NOVA)

SELECT   E.FIRST_NAME,
         D.DEPARTMENT_NAME
FROM     EMPLOYEES E,
         LEFT JOIN DEPARTMENTS D
           ON E.DEPARTMENT_ID =
              D.DEPARTMENT_ID;

EXEMPLO DE JUNÇÕES EXTERNAS (SINTAXE ANTIGA)

SELECT   E.FIRST_NAME,
         D.DEPARTMENT_NAME
FROM     EMPLOYEES E,
         DEPARTMENTS D
WHERE    E.DEPARTMENT_ID =
           D.DEPARTMENT_ID(+);

EXEMPLO DE JUNÇÕES EXTERNAS (SINTAXE NOVA)

SELECT   E.FIRST_NAME,
         D.DEPARTMENT_NAME
FROM     EMPLOYEES E
           RIGHT JOIN DEPARTMENTS D
             ON E.DEPARTMENT_ID =
                           D.DEPARTMENT_ID;

EXEMPLO DE AUTOJUNÇÕES (SINTAXE ANTIGA)

SELECT   WORKER.FIRST_NAME
         ||' TRABALHA PARA ' ||
         MANAGER.FIRST_NAME
FROM     EMPLOYEES WORKER,
         EMPLOYEES MANAGER
WHERE    WORKER.MANAGER_ID =
                MANAGER.EMPLOYEE_ID;

EXEMPLO DE AUTOJUNÇÕES (SINTAXE NOVA)

SELECT   WORKER.FIRST_NAME
         ||' TRABALHA PARA ' ||
         MANAGER.FIRST_NAME
FROM     EMPLOYEES WORKER
           LEFT JOIN EMPLOYEES MANAGER
             ON WORKER.MANAGER_ID =
                MANAGER.EMPLOYEE_ID;
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s