-- Criação das tabelas
CREATE TABLE Marcas (
    id_marca INT PRIMARY KEY,
    nome VARCHAR(50)
);

CREATE TABLE Computadores (
    id_computador INT PRIMARY KEY,
    modelo VARCHAR(50),
    id_marca INT,
    FOREIGN KEY (id_marca) REFERENCES Marcas(id_marca)
);

CREATE TABLE Clientes (
    id_cliente INT PRIMARY KEY,
    nome VARCHAR(100),
    email VARCHAR(100)
);

CREATE TABLE Vendas (
    id_venda INT PRIMARY KEY,
    id_cliente INT,
    id_computador INT,
    data_venda DATE,
    FOREIGN KEY (id_cliente) REFERENCES Clientes(id_cliente),
    FOREIGN KEY (id_computador) REFERENCES Computadores(id_computador)
);

CREATE TABLE Fornecedores (
    id_fornecedor INT PRIMARY KEY,
    nome VARCHAR(100),
    id_marca INT,
    FOREIGN KEY (id_marca) REFERENCES Marcas(id_marca)
);

-- Inserção de dados
INSERT INTO Marcas (id_marca, nome) VALUES
(1, 'Dell'),
(2, 'HP'),
(3, 'Lenovo'),
(4, 'Apple'),
(5, 'Asus');

INSERT INTO Computadores (id_computador, modelo, id_marca) VALUES
(1, 'Inspiron 15', 1),
(2, 'XPS 13', 1),
(3, 'Pavilion', 2),
(4, 'ThinkPad', 3),
(5, 'MacBook Pro', 4);

INSERT INTO Clientes (id_cliente, nome, email) VALUES
(1, 'João Silva', 'joao.silva@example.com'),
(2, 'Maria Oliveira', 'maria.oliveira@example.com'),
(3, 'Carlos Souza', 'carlos.souza@example.com'),
(4, 'Ana Costa', 'ana.costa@example.com'),
(5, 'Pedro Rocha', 'pedro.rocha@example.com');

INSERT INTO Vendas (id_venda, id_cliente, id_computador, data_venda) VALUES
(1, 1, 1, '2023-01-15'),
(2, 2, 2, '2023-02-20'),
(3, 3, 3, '2023-03-25'),
(4, 4, 4, '2023-04-30'),
(5, 5, 5, '2023-05-05');

INSERT INTO Fornecedores (id_fornecedor, nome, id_marca) VALUES
(1, 'Fornecedor A', 1),
(2, 'Fornecedor B', 2),
(3, 'Fornecedor C', 3),
(4, 'Fornecedor D', 4),
(5, 'Fornecedor E', 5);

-- Listar todos os dados da tabela Computadores
SELECT * FROM Computadores;

-- Listar apenas os computadores cadastrados da marca "Dell"
SELECT c.* 
FROM Computadores c
JOIN Marcas m ON c.id_marca = m.id_marca
WHERE m.nome = 'Dell';

-- União: Clientes que compraram computadores e Fornecedores de marcas
SELECT c.nome AS Nome, 'Cliente' AS Tipo
FROM Clientes c
JOIN Vendas v ON c.id_cliente = v.id_cliente
UNION
SELECT f.nome AS Nome, 'Fornecedor' AS Tipo
FROM Fornecedores f;

-- Intersecção: Clientes que também são fornecedores
SELECT c.nome AS Nome
FROM Clientes c
JOIN Fornecedores f ON c.nome = f.nome;

-- Diferença: Clientes que compraram computadores, mas não são fornecedores
SELECT c.nome AS Nome
FROM Clientes c
JOIN Vendas v ON c.id_cliente = v.id_cliente
LEFT JOIN Fornecedores f ON c.nome = f.nome
WHERE f.id_fornecedor IS NULL;

-- Produto Cartesiano: Todas as combinações entre Clientes e Computadores
SELECT c.nome AS Cliente, co.modelo AS Computador
FROM Clientes c, Computadores co;

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: