✅ Parte 1: Preparando o Ambiente

Usaremos as mesmas tabelas VENDAS e CLIENTES da aula anterior.

CREATE TABLE CLIENTES (
    id_cliente NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY PRIMARY KEY,
    nome       VARCHAR2(100) NOT NULL,
    cidade     VARCHAR2(50),
    estado     VARCHAR2(2)
);

CREATE TABLE VENDAS (
    id          NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY PRIMARY KEY,
    produto     VARCHAR2(100) NOT NULL,
    categoria   VARCHAR2(50)  NOT NULL,
    valor       NUMBER(10,2)  NOT NULL CHECK (valor > 0),
    data_venda  DATE          DEFAULT SYSDATE,
    vendedor    VARCHAR2(100) NOT NULL,
    id_cliente  NUMBER,
    CONSTRAINT fk_cliente FOREIGN KEY (id_cliente) REFERENCES CLIENTES(id_cliente)
);

Popule as tabelas:

INSERT INTO CLIENTES (nome, cidade, estado) VALUES
  ('Ana', 'São Paulo', 'SP'),
  ('Bruna', 'Campinas', 'SP'),
  ('Carlos', 'Rio de Janeiro', 'RJ'),
  ('Daniel', 'Belo Horizonte', 'MG'); -- cliente sem vendas

INSERT INTO VENDAS (produto, categoria, valor, data_venda, vendedor, id_cliente) VALUES
  ('Notebook Dell', 'Eletrônicos', 4500.00, DATE '2025-04-01', 'Carlos', 3),
  ('Mouse Gamer', 'Acessórios', 150.00, DATE '2025-04-01', 'Ana', 1),
  ('Teclado Mecânico', 'Acessórios', 300.00, DATE '2025-04-02', 'Carlos', 3),
  ('Monitor 24"', 'Eletrônicos', 1200.00, DATE '2025-04-02', 'Bruna', 2),
  ('Fone Bluetooth', 'Acessórios', 200.00, DATE '2025-04-03', 'Ana', 1),
  ('Notebook HP', 'Eletrônicos', 4000.00, DATE '2025-04-03', 'Carlos', 3);


🔗 Parte 2: Revisando o INNER JOIN

O INNER JOIN retorna apenas registros que possuem correspondência em ambas as tabelas.

SELECT
    c.nome AS cliente,
    v.produto,
    v.valor
FROM CLIENTES c
INNER JOIN VENDAS v
    ON c.id_cliente = v.id_cliente;

🎯 Exibe somente clientes que têm vendas.


🧩 Parte 3: LEFT JOIN – Incluindo o que não tem correspondência

O LEFT JOIN retorna todos os registros da tabela à esquerda, mesmo que não tenham correspondência na tabela à direita.

SELECT
    c.nome AS cliente,
    v.produto,
    v.valor
FROM CLIENTES c
LEFT JOIN VENDAS v
    ON c.id_cliente = v.id_cliente;

📊 Saída:

🎯 Objetivo: identificar clientes sem compras.


🧠 Exemplo 1 – Clientes sem Vendas