Skip to content

RicardoVCastilho/infinity-super-modulo-sql

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 

Repository files navigation

Banco de Dados - Loja 🛍️

Este projeto simula um banco de dados de uma loja, com tabelas de Produtos, Clientes e Pedidos. Nele, você poderá praticar comandos de criação de tabelas, inserção de dados, consultas, ordenações, filtros e exclusões com SQL.


🎯 Objetivos

  • Praticar comandos SQL básicos e intermediários.
  • Aprender a usar SELECT, WHERE, ORDER BY, INNER JOIN, DELETE e ALTER TABLE.
  • Simular situações reais de uma loja.

🗄️ Estrutura do Banco de Dados

🔧 Criação do Banco + tabela produtos

CREATE DATABASE loja;
USE loja;


CREATE TABLE Produtos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nome VARCHAR(100) NOT NULL,
    preco DECIMAL(10,2) NOT NULL
);

INSERT INTO Produtos (nome, preco) VALUES
('Camiseta', 39.90),
('Calça Jeans', 129.90),
('Tênis Esportivo', 249.90),
('Relógio de Pulso', 399.90),
('Bolsa Feminina', 89.90),
('Boné', 29.90),
('Jaqueta', 199.90),
('Meias (par)', 9.90),
('Óculos de Sol', 149.90),
('Carteira', 59.90);

Consultas na Tabela Produtos

-- Mostrar todos os produtos com nome e preço:
SELECT nome, preco FROM Produtos;
--  Produtos com preço maior que R$ 50,00:
SELECT nome, preco FROM Produtos WHERE preco > 50.00;
-- Produtos ordenados do mais caro para o mais barato:
SELECT nome, preco FROM Produtos ORDER BY preco DESC;
-- 3 produtos mais baratos:
SELECT nome, preco FROM Produtos ORDER BY preco ASC LIMIT 3;

Criação da tabela clientes + inserção

CREATE TABLE Clientes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nome VARCHAR(100) NOT NULL,
    cidade VARCHAR(100) NOT NULL
);

INSERT INTO Clientes (nome, cidade) VALUES
('Maria Silva', 'São Paulo'),
('João Souza', 'Rio de Janeiro'),
('Ana Lima', 'São Paulo'),
('Carlos Pereira', 'Belo Horizonte'),
('Fernanda Costa', 'São Paulo');

Criação da tabela pedidos + inserção

CREATE TABLE Pedidos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    produto VARCHAR(100) NOT NULL,
    valor DECIMAL(10,2) NOT NULL,
    id_cliente INT,
    FOREIGN KEY (id_cliente) REFERENCES Clientes(id)
);

INSERT INTO Pedidos (produto, valor, id_cliente) VALUES
('Notebook', 3500.00, 1),
('Mouse', 80.00, 2),
('Teclado', 150.00, 3),
('Monitor', 1200.00, 1),
('Cadeira Gamer', 900.00, 4),
('Headset', 250.00, 5),
('Webcam', 300.00, 3),
('Impressora', 600.00, 5);

Consultas com INNER JOIN

-- Mostrar clientes e seus pedidos:
SELECT Clientes.nome, Pedidos.produto
FROM Pedidos
INNER JOIN Clientes ON Pedidos.id_cliente = Clientes.id;
-- Mostrar pedidos feitos por clientes de São Paulo:
SELECT Clientes.nome, Pedidos.produto
FROM Pedidos
INNER JOIN Clientes ON Pedidos.id_cliente = Clientes.id
WHERE Clientes.cidade = 'São Paulo';
-- Pedidos ordenados do maior para o menor valor:
SELECT Clientes.nome, Pedidos.produto, Pedidos.valor
FROM Pedidos
INNER JOIN Clientes ON Pedidos.id_cliente = Clientes.id
ORDER BY Pedidos.valor DESC;
-- Os 3 pedidos de menor valor:
SELECT Clientes.nome, Pedidos.produto, Pedidos.valor
FROM Pedidos
INNER JOIN Clientes ON Pedidos.id_cliente = Clientes.id
ORDER BY Pedidos.valor ASC
LIMIT 3;

✍️ Alteração na Tabela Pedidos

-- Adicionar coluna status na tabela Pedidos:
ALTER TABLE Pedidos
ADD COLUMN status VARCHAR(20) DEFAULT 'Ativo';
-- Atualizar pedidos como Cancelado:
UPDATE Pedidos SET status = 'Cancelado' WHERE id = 2;
UPDATE Pedidos SET status = 'Cancelado' WHERE id = 5;

🔍 Consultas Adicionais

-- Listar todos os clientes de São Paulo:
SELECT * FROM Clientes WHERE cidade = 'São Paulo';
-- Listar pedidos com valor maior que R$ 500,00:
SELECT Clientes.nome, Pedidos.produto, Pedidos.valor
FROM Pedidos
INNER JOIN Clientes ON Pedidos.id_cliente = Clientes.id
WHERE Pedidos.valor > 500;

🗑️ Exclusões

-- Excluir pedidos com status "Cancelado":
DELETE FROM Pedidos
WHERE status = 'Cancelado';
-- Verificar quais clientes não possuem pedidos:
SELECT * FROM Clientes
WHERE id NOT IN (
    SELECT DISTINCT id_cliente FROM Pedidos
);
-- Excluir clientes que não possuem pedidos:
DELETE FROM Clientes
WHERE id NOT IN (
    SELECT DISTINCT id_cliente FROM Pedidos
);

🚨 Observação Importante

⚠️ Sempre realize uma consulta (SELECT) antes de executar comandos DELETE, para garantir que está apagando os dados corretos.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors