https://youtu.be/9yeOJ0ZMUYw?si=rcizRM1Tyo8EG73d

✅ Parte 1: Preparando o Ambiente

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
);

INSERT INTO VENDAS (produto, categoria, valor, data_venda, vendedor) 
VALUES 
    ('Notebook Dell', 'Eletrônicos', 4500.00, DATE '2025-04-01', 'Carlos'),
    ('Mouse Gamer', 'Acessórios', 150.00, DATE '2025-04-01', 'Ana'),
    ('Teclado Mecânico', 'Acessórios', 300.00, DATE '2025-04-02', 'Carlos'),
    ('Monitor 24"', 'Eletrônicos', 1200.00, DATE '2025-04-02', 'Bruna'),
    ('Fone Bluetooth', 'Acessórios', 200.00, DATE '2025-04-03', 'Ana'),
    ('Notebook HP', 'Eletrônicos', 4000.00, DATE '2025-04-03', 'Carlos'),
    ('Webcam HD', 'Acessórios', 180.00, DATE '2025-04-04', 'Bruna'),
    ('Carregador Portátil', 'Acessórios', 120.00, DATE '2025-04-04', 'Ana'),
    ('SSD 1TB', 'Componentes', 500.00, DATE '2025-04-05', 'Carlos'),
    ('Cabo HDMI', 'Acessórios', 50.00, DATE '2025-04-05', 'Bruna');

Antes de usar JOIN, precisamos de duas tabelas relacionadas.

Vamos complementar a tabela VENDAS criada anteriormente com uma nova tabela chamada CLIENTES.

-- 1. Criação da tabela de clientes
DROP TABLE CLIENTES PURGE;

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)
);

-- 2. Inserção de clientes
INSERT INTO CLIENTES (nome, cidade, estado) VALUES
    ('Ana', 'São Paulo', 'SP'),
    ('Bruna', 'Campinas', 'SP'),
    ('Carlos', 'Rio de Janeiro', 'RJ');

Agora, vamos adicionar a chave estrangeira em VENDAS, ligando cada venda a um cliente.

ALTER TABLE VENDAS ADD id_cliente NUMBER;
ALTER TABLE VENDAS ADD CONSTRAINT fk_cliente FOREIGN KEY (id_cliente) REFERENCES CLIENTES(id_cliente);

E associar cada venda ao seu respectivo cliente:

UPDATE VENDAS
SET id_cliente = CASE vendedor
    WHEN 'Ana' THEN 1
    WHEN 'Bruna' THEN 2
    WHEN 'Carlos' THEN 3
END;

🔗 Parte 2: Entendendo o INNER JOIN

O INNER JOIN combina linhas que possuem correspondência entre duas tabelas.

🧩 Exemplo 1: Juntando Vendas e Clientes

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

🎯 Objetivo: Exibir as vendas junto com o nome e cidade do cliente.

🔍 Somente registros com id_cliente existente nas duas tabelas são retornados.


📈 Parte 3: Relatórios Avançados com JOIN

📊 Exemplo 2: Vendas por Cidade