· 5 years ago · Aug 26, 2020, 11:48 AM
11 - Criação do banco de Dados
2Representará uma pequena loja online, com caracteres maiúsculos e minúsculos, e assentos.
3
4CREATE DATABASE IF NOT EXISTS loja
5CHARACTER SET utf8
6COLLATE utf8_general_ci;
7
8USE loja;
9
102 - Criação das tabelas
11Cliente - Representa um cadastro no site
12Produto - Representa um item a venda no site
13Tabela - Conjunto de preços, e forma de pagamento
14Preco - Conjunto que representa um valor de uma tabela associado a um produto
15CREATE TABLE IF NOT EXISTS cliente (
16 id BIGINT AUTO_INCREMENT PRIMARY KEY,
17 nome VARCHAR(100) NOT NULL,
18 cpf VARCHAR(15) NOT NULL,
19 email VARCHAR(100) NOT NULL UNIQUE,
20 senha VARCHAR(25) NOT NULL,
21 nascimento DATE
22);
23
24CREATE TABLE IF NOT EXISTS produto (
25 id BIGINT AUTO_INCREMENT PRIMARY KEY,
26 nome VARCHAR(100) NOT NULL UNIQUE,
27 descricao TEXT NOT NULL
28);
29
30CREATE TABLE IF NOT EXISTS tabela (
31 id BIGINT AUTO_INCREMENT PRIMARY KEY,
32 nome VARCHAR(100) NOT NULL UNIQUE,
33 descricao VARCHAR(100),
34 parcelas INT(8) NOT NULL,
35 promocao TINYINT(1) NOT NULL
36);
37
38CREATE TABLE IF NOT EXISTS preco (
39 produto_id BIGINT NOT NULL,
40 tabela_id BIGINT NOT NULL,
41 valor DECIMAL(10, 2) NOT NULL,
42 FOREIGN KEY (produto_id) REFERENCES produto(id),
43 FOREIGN KEY (tabela_id) REFERENCES tabela(id),
44 PRIMARY KEY (produto_id, tabela_id)
45);
46
473 - Inserção de Valores
48
49INSERT INTO cliente(nome, email, senha, nascimento) VALUES
50("Fulano da Silva", "email@website.com", "1234_x", '1991-01-01'),
51("Sicrano da Silva", "mail@website.com", "543210", '1992-02-02');
52
53INSERT INTO produto(nome, descricao) VALUES
54("Mouse", "Mouse USB para computador"),
55("Teclado", "Teclado USB para computador");
56
57INSERT INTO tabela(nome, descricao, parcelas, promocao) VALUES
58("A Vista", "Pagamento em especie", 1, 1),
59("3x", "Pagamento em 3x", 3, 0);
60
61INSERT INTO preco(produto_id, tabela_id, valor) VALUES
62((SELECT produto.id FROM produto WHERE nome = "Mouse"), (SELECT tabela.id FROM tabela WHERE nome = "A Vista"), 10.99),
63((SELECT produto.id FROM produto WHERE nome = "Mouse"), (SELECT tabela.id FROM tabela WHERE nome = "3x"), 12.99),
64((SELECT produto.id FROM produto WHERE nome = "Teclado"), (SELECT tabela.id FROM tabela WHERE nome = "A Vista"), 20.99),
65((SELECT produto.id FROM produto WHERE nome = "Teclado"), (SELECT tabela.id FROM tabela WHERE nome = "3x"), 24.99);
66
674 - Seleção
68Selecionar Produtos e seus principais valores
69
70SELECT
71produto.id as id,
72produto.nome as nome,
73produto.descricao as descricao,
74precoA.valor as vista,
75precoB.valor as parcelado
76FROM produto
77LEFT JOIN preco as precoA ON precoA.produto_id = produto.id AND precoA.tabela_id = (SELECT tabela.id FROM tabela WHERE nome = "A Vista")
78LEFT JOIN preco as precoB ON precoB.produto_id = produto.id AND precoB.tabela_id = (SELECT tabela.id FROM tabela WHERE nome = "3x")