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;

Video 01

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 )

Imagem do Twitter

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

Foto do Facebook

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

Foto do Google+

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

Conectando a %s

WikiDBA

by Virendra Yaduvanshi - Microsoft SQL Server Database Architect | Consultant | Blogger | Specialist | DBA | Speaker

Blog - Fabiano Neves Amorim

SELECT * FROM [Coisas Da Minha Cabeça] WHERE dbo.fn_TempoParaPost() < dbo.fn_TempoLivre()

ROMANO DBA

Administração de Bancos de Dados

Tércio Costa, Oracle Developer, OCE SQL

Guia de estudos para certificação ORACLE SQL Expert(1Z0-047) e PL/SQL(1Z0-144)

Strate SQL

Data Adventures with an Architect

%d blogueiros gostam disto: