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.
- Praticar comandos SQL básicos e intermediários.
- Aprender a usar
SELECT,WHERE,ORDER BY,INNER JOIN,DELETEeALTER TABLE. - Simular situações reais de uma loja.
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);-- 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;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');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);-- 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;-- 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;-- 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;-- 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
);