Prévia do material em texto
Exercício 01
CREATE TABLE clientes (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(100),
email VARCHAR(100),
telefone VARCHAR(20)
);
CREATE TABLE categorias (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(50)
);
CREATE TABLE produtos (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(100),
preco DECIMAL(10,2),
id_categoria INT,
FOREIGN KEY (id_categoria) REFERENCES categorias(id)
);
CREATE TABLE pedidos (
id INT AUTO_INCREMENT PRIMARY KEY,
data_pedido DATE,
id_cliente INT,
FOREIGN KEY (id_cliente) REFERENCES clientes(id)
);
CREATE TABLE itens_pedido (
id INT AUTO_INCREMENT PRIMARY KEY,
id_pedido INT,
id_produto INT,
quantidade INT,
preco_unitario DECIMAL(10,2),
FOREIGN KEY (id_pedido) REFERENCES pedidos(id),
FOREIGN KEY (id_produto) REFERENCES produtos(id)
);
INSERT INTO clientes (nome, email, telefone) VALUES
('Ana Paula', 'ana@email.com', '11999999999'),
('Carlos Silva', 'carlos@email.com', '11988888888'),
('Fernanda Costa', 'fernanda@email.com', '11987776655');
INSERT INTO categorias (nome) VALUES
('Eletrônicos'), ('Livros'), ('Acessórios');
INSERT INTO produtos (nome, preco, id_categoria) VALUES
('Notebook', 3500.00, 1),
('Livro Python', 79.90, 2),
('Mouse Gamer', 120.00, 3),
('Cabo USB-C', 30.00, 3),
('Monitor 24', 950.00, 1);
INSERT INTO pedidos (data_pedido, id_cliente) VALUES
('2024-06-01', 1),
('2024-06-08', 2),
('2024-06-15', 3);
INSERT INTO itens_pedido (id_pedido, id_produto, quantidade, preco_unitario) VALUES
(1, 1, 1, 3500.00),
(2, 2, 2, 79.90),
(3, 3, 2, 120.00),
(1, 4, 10, 30.00);
-- Mostrar os clientes cadastrados
SELECT * FROM clientes;
-- Mostrar as categorias cadastradas
SELECT * FROM categorias;
-- Mostrar os produtos com suas categorias
SELECT
produtos.id,
produtos.nome AS nome_produto,
produtos.preco,
categorias.nome AS categoria
FROM
produtos
JOIN
categorias ON produtos.id_categoria = categorias.id;
-- Mostrar os pedidos com o nome do cliente
SELECT
pedidos.id,
pedidos.data_pedido,
clientes.nome AS cliente
FROM
pedidos
JOIN
clientes ON pedidos.id_cliente = clientes.id;
-- Mostrar os itens dos pedidos com nome do produto
SELECT
itens_pedido.id_pedido,
produtos.nome AS produto,
itens_pedido.quantidade,
itens_pedido.preco_unitario
FROM
itens_pedido
JOIN
produtos ON itens_pedido.id_produto = produtos.id;
Exercício 02
CREATE TABLE clientes (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(100),
email VARCHAR(100),
telefone VARCHAR(20)
);
CREATE TABLE categorias (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(50)
);
CREATE TABLE produtos (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(100),
preco DECIMAL(10,2),
id_categoria INT,
FOREIGN KEY (id_categoria) REFERENCES categorias(id)
);
CREATE TABLE pedidos (
id INT AUTO_INCREMENT PRIMARY KEY,
data_pedido DATE,
id_cliente INT,
FOREIGN KEY (id_cliente) REFERENCES clientes(id)
);
CREATE TABLE itens_pedido (
id INT AUTO_INCREMENT PRIMARY KEY,
id_pedido INT,
id_produto INT,
quantidade INT,
preco_unitario DECIMAL(10,2),
FOREIGN KEY (id_pedido) REFERENCES pedidos(id),
FOREIGN KEY (id_produto) REFERENCES produtos(id)
);
INSERT INTO clientes (nome, email, telefone) VALUES
('Ana Paula', 'ana@email.com', '11999999999'),
('Carlos Silva', 'carlos@email.com', '11988888888'),
('Fernanda Costa', 'fernanda@email.com', '11987776655');
INSERT INTO categorias (nome) VALUES
('Eletrônicos'), ('Livros'), ('Acessórios');
INSERT INTO produtos (nome, preco, id_categoria) VALUES
('Notebook', 3500.00, 1),
('Livro Python', 79.90, 2),
('Mouse Gamer', 120.00, 3),
('Cabo USB-C', 30.00, 3),
('Monitor 24', 950.00, 1);
INSERT INTO pedidos (data_pedido, id_cliente) VALUES
('2024-06-01', 1),
('2024-06-08', 2),
('2024-06-15', 3);
INSERT INTO itens_pedido (id_pedido, id_produto, quantidade, preco_unitario) VALUES
(1, 1, 1, 3500.00),
(2, 2, 2, 79.90),
(3, 3, 2, 120.00),
(1, 4, 10, 30.00);
-- Mostrar todos os pedidos realizados com detalhes:
SELECT
c.nome AS nome_cliente,
p.data_pedido,
pr.nome AS produto,
ip.quantidade,
ip.preco_unitario,
(ip.quantidade * ip.preco_unitario) AS valor_total_item
FROM
itens_pedido ip
JOIN pedidos p ON ip.id_pedido = p.id
JOIN clientes c ON p.id_cliente = c.id
JOIN produtos pr ON ip.id_produto = pr.id
ORDER BY p.data_pedido, c.nome;
Exercício 03
CREATE TABLE clientes (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(100),
email VARCHAR(100),
telefone VARCHAR(20)
);
CREATE TABLE categorias (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(50)
);
CREATE TABLE produtos (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(100),
preco DECIMAL(10,2),
id_categoria INT,
FOREIGN KEY (id_categoria) REFERENCES categorias(id)
);
CREATE TABLE pedidos (
id INT AUTO_INCREMENT PRIMARY KEY,
data_pedido DATE,
id_cliente INT,
FOREIGN KEY (id_cliente) REFERENCES clientes(id)
);
CREATE TABLE itens_pedido (
id INT AUTO_INCREMENT PRIMARY KEY,
id_pedido INT,
id_produto INT,
quantidade INT,
preco_unitario DECIMAL(10,2),
FOREIGN KEY (id_pedido) REFERENCES pedidos(id),
FOREIGN KEY (id_produto) REFERENCES produtos(id)
);
INSERT INTO clientes (nome, email, telefone) VALUES
('Ana Paula', 'ana@email.com', '11999999999'),
('Carlos Silva', 'carlos@email.com', '11988888888'),
('Fernanda Costa', 'fernanda@email.com', '11987776655');
INSERT INTO categorias (nome) VALUES
('Eletrônicos'), ('Livros'), ('Acessórios');
INSERT INTO produtos (nome, preco, id_categoria) VALUES
('Notebook', 3500.00, 1),
('Livro Python', 79.90, 2),
('Mouse Gamer', 120.00, 3),
('Cabo USB-C', 30.00, 3),
('Monitor 24', 950.00, 1);
INSERT INTO pedidos (data_pedido, id_cliente) VALUES
('2024-06-01', 1),
('2024-06-08', 2),
('2024-06-15', 3);
INSERT INTO itens_pedido (id_pedido, id_produto, quantidade,
preco_unitario) VALUES
(1, 1, 1, 3500.00),
(2, 2, 2, 79.90),
(3, 3, 2, 120.00),
(1, 4, 10, 30.00);
SELECT
c.nome AS nome_cliente,
SUM(ip.quantidade * ip.preco_unitario) AS total_gasto
FROM
clientes c
JOIN pedidos p ON c.id = p.id_cliente
JOIN itens_pedido ip ON p.id = ip.id_pedido
GROUP BY c.nome
ORDER BY total_gasto DESC;
Exercício 04
CREATE TABLE clientes (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(100),
email VARCHAR(100),
telefone VARCHAR(20)
);
CREATE TABLE categorias (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(50)
);
CREATE TABLE produtos (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(100),
preco DECIMAL(10,2),
id_categoria INT,
FOREIGN KEY (id_categoria) REFERENCES categorias(id)
);
CREATE TABLE pedidos (
id INT AUTO_INCREMENT PRIMARY KEY,
data_pedido DATE,
id_cliente INT,
FOREIGN KEY (id_cliente) REFERENCES clientes(id)
);
CREATE TABLE itens_pedido (
id INT AUTO_INCREMENT PRIMARY KEY,
id_pedido INT,
id_produto INT,
quantidade INT,
preco_unitario DECIMAL(10,2),
FOREIGN KEY (id_pedido) REFERENCES pedidos(id),
FOREIGN KEY (id_produto) REFERENCES produtos(id)
);
INSERT INTO clientes (nome, email, telefone) VALUES
('Ana Paula', 'ana@email.com', '11999999999'),
('Carlos Silva', 'carlos@email.com', '11988888888'),
('Fernanda Costa', 'fernanda@email.com', '11987776655');
INSERT INTO categorias (nome) VALUES
('Eletrônicos'), ('Livros'), ('Acessórios');
INSERT INTO produtos (nome, preco, id_categoria) VALUES
('Notebook', 3500.00, 1),
('Livro Python', 79.90, 2),
('Mouse Gamer', 120.00, 3),
('Cabo USB-C',30.00, 3),
('Monitor 24', 950.00, 1);
INSERT INTO pedidos (data_pedido, id_cliente) VALUES
('2024-06-01', 1),
('2024-06-08', 2),
('2024-06-15', 3);
INSERT INTO itens_pedido (id_pedido, id_produto, quantidade,
preco_unitario) VALUES
(1, 1, 1, 3500.00),
(2, 2, 2, 79.90),
(3, 3, 2, 120.00),
(1, 4, 10, 30.00);
SELECT
c.nome AS nome_categoria,
COUNT(p.id) AS quantidade_produtos
FROM
categorias c
LEFT JOIN produtos p ON c.id = p.id_categoria
GROUP BY c.nome
ORDER BY quantidade_produtos DESC;
Exercício 05
CREATE TABLE clientes (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(100),
email VARCHAR(100),
telefone VARCHAR(20)
);
CREATE TABLE categorias (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(50)
);
CREATE TABLE produtos (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(100),
preco DECIMAL(10,2),
id_categoria INT,
FOREIGN KEY (id_categoria) REFERENCES categorias(id)
);
CREATE TABLE pedidos (
id INT AUTO_INCREMENT PRIMARY KEY,
data_pedido DATE,
id_cliente INT,
FOREIGN KEY (id_cliente) REFERENCES clientes(id)
);
CREATE TABLE itens_pedido (
id INT AUTO_INCREMENT PRIMARY KEY,
id_pedido INT,
id_produto INT,
quantidade INT,
preco_unitario DECIMAL(10,2),
FOREIGN KEY (id_pedido) REFERENCES pedidos(id),
FOREIGN KEY (id_produto) REFERENCES produtos(id)
);
INSERT INTO clientes (nome, email, telefone) VALUES
('Ana Paula', 'ana@email.com', '11999999999'),
('Carlos Silva', 'carlos@email.com', '11988888888'),
('Fernanda Costa', 'fernanda@email.com', '11987776655');
INSERT INTO categorias (nome) VALUES
('Eletrônicos'), ('Livros'), ('Acessórios');
INSERT INTO produtos (nome, preco, id_categoria) VALUES
('Notebook', 3500.00, 1),
('Livro Python', 79.90, 2),
('Mouse Gamer', 120.00, 3),
('Cabo USB-C', 30.00, 3),
('Monitor 24"', 950.00, 1);
INSERT INTO pedidos (data_pedido, id_cliente) VALUES
('2024-06-01', 1),
('2024-06-08', 2),
('2024-06-15', 3);
INSERT INTO itens_pedido (id_pedido, id_produto, quantidade,
preco_unitario) VALUES
(1, 1, 1, 3500.00),
(2, 2, 2, 79.90),
(3, 3, 2, 120.00),
(1, 4, 10, 30.00);
SELECT
p.nome AS nome_produto,
p.preco,
c.nome AS nome_categoria
FROM
produtos p
JOIN categorias c ON p.id_categoria = c.id
WHERE
p.preco > (
SELECT AVG(preco) FROM produtos
)
ORDER BY p.preco DESC;