diff --git a/Captura de tela 2026-05-15 103223.png b/Captura de tela 2026-05-15 103223.png new file mode 100644 index 0000000..b792648 Binary files /dev/null and b/Captura de tela 2026-05-15 103223.png differ diff --git a/Captura de tela 2026-06-23 154645.png b/Captura de tela 2026-06-23 154645.png new file mode 100644 index 0000000..329c602 Binary files /dev/null and b/Captura de tela 2026-06-23 154645.png differ diff --git a/Ecercicio.modulo1.txt b/Ecercicio.modulo1.txt new file mode 100644 index 0000000..b904771 --- /dev/null +++ b/Ecercicio.modulo1.txt @@ -0,0 +1,89 @@ +Ecercicio +Roteiro sugerido +1:explicar o que é uma entidade; + é algo que existe no mundo real e que precisa ser representada representado em um sistema + +2. listar as entidades do negócio; + cliente/vendedor/pedido/ produto/pedido item + +3. identificar atributos de cada entidade; + Cliente; + id do cliente + tipo de pessoa (física ou jurídica) + nome social + nome fantasia + CPF ou CNPJ + Email + telefone + criado + atualizado + +Vendedor; + id do vendedor + nome do vendedor + email + telefone + ativo + Criado + atualizado + +Produto; + Id do produto + Sku(código de barra do produto) + Descrição + Valor unitário + ativo, + estoque + Criado em + Atualizado em + +Pedido + Id vendedor + Id clienta + Id pedido + obs + Valor total + Status + Hora e data + Quando criado + Atualizado em + +Pedido item + Id + Id produto + Ide pedido + Quantidade + Valor unitário + Valor total + Status + Criado em + Atualizado em + +4. desenhar o modelo em papel ou quadro;já +• desenhei mas não no papel, então refazer + +5. classificar os relacionamentos; + Cliente para pedido = 1:n + Vendedor para pedido =1:n + Pidido para produto = 1:n + Produto para pedido – n:n + +6. discutir obrigatoriedades e nulabilidade. + Vendedor, obrigatório = um pedido nunca poderá ser feito sem um cliente + Cliente = não é onbrigatorio = o vendedor pode ser opcional se vai ou não ser declarado + Pedido = o predido é obrigatório, é o cabeçario da compra, com dados e td la + Produto= obrigatório, é o item em questão sendo negociado + Pedido item =obrigatório = é onde fica todos os produtos da vendas + +4.7 Exercícios do módulo 1 + +1. Desenhar o modelo de dados em papel. + (feito no brwm) +2. Dizer qual é a chave primária de cada tabela. + (feito) +3. Dizer quais são as chaves estrangeiras. + (feito) +4. Classificar todos os relacionamentos como 1:1, 1:N ou N:N. + (feito) +5. Explicar, em voz alta, o papel de cada tabela. + diff --git a/Exercicios Modulos/# Exercicio modulo 6.md b/Exercicios Modulos/# Exercicio modulo 6.md new file mode 100644 index 0000000..a93b517 --- /dev/null +++ b/Exercicios Modulos/# Exercicio modulo 6.md @@ -0,0 +1,208 @@ +# Exercicio modulo 6 + +## Casos de exercício + +### Caso 1 — Descobrir o cliente de um pedido + +Pergunta: + +> O pedido 10 pertence a qual cliente? + + Resposta + >Para essa situação, meu primeiro passo é consulutar a qual cliente pertence o 'cliente_id' presente na tabela pedido, em vez de consultar as duas e comparar manualmenteirei verificar vendo quais clientes estao ligados a tabela pedidos, usando segunte Input: + + SELECT + p.id, + p.cliente_id, + c.nome_razao_social, + p.vendedor_id, + p.data_hora, + p.status, + p.observacoes, + p.valor_total + FROM pedidos p + LEFT JOIN clientes c ON c.id = p.cliente_id; + +Output + +----+------------+------------------------+-------------+---------------------+-----------+----------------------------------------------+-------------+ + | id | cliente_id | nome_razao_social | vendedor_id | data_hora | status | observacoes | valor_total | + +----+------------+------------------------+-------------+---------------------+-----------+----------------------------------------------+-------------+ + >| 10 | 2 | Mercado Bom Preco LTDA | 1 | 2026-04-01 09:15:00 | FATURADO | Pedido corporativo entregue | 1149.70 | + | 11 | 1 | Ana Lima | NULL | 2026-04-02 14:30:00 | ABERTO | Cliente iniciou compra pelo site | 339.80 | + | 12 | 3 | Carlos Souza | 2 | 2026-04-05 11:00:00 | CANCELADO | Pagamento recusado | 299.90 | + | 13 | 4 | Oficina Giro Rapido ME | 1 | 2026-04-07 16:45:00 | FATURADO | Compra com multiplos itens | 1079.50 | + | 14 | 2 | Mercado Bom Preco LTDA | NULL | 2026-04-09 08:20:00 | ABERTO | Sem vendedor vinculado | 0.00 | + | 15 | 1 | Ana Lima | NULL | 2026-04-10 10:10:00 | ABERTO | Pedido usado para exercicio de vendedor nulo | 59.90 | + +----+------------+------------------------+-------------+---------------------+-----------+----------------------------------------------+-------------+ + +--Utilizando esse comando de interseccao consegui descobri que o pedido 10 pertense ao 'cliente Mercado Bom Preco LTDA'. + +### Caso 2 — Validar se um pedido possui vendedor + +Pergunta: + +> O pedido 15 foi registrado sem vendedor? + +Resposta +> Como o usuario não sabia qual o cliente do pedido 10, ja consultei junto quais pedidos tinham ou nao vendedores registrado, assim a tabela acima ja prova que o pedido 15 nao possui nenhum vendedor registrado. Utilizando do mesmo Input; + + SELECT + p.id, + p.cliente_id, + c.nome_razao_social, + p.vendedor_id, + p.data_hora, + p.status, + p.observacoes, + p.valor_total + FROM pedidos p + LEFT JOIN clientes c ON c.id = p.cliente_id; + +Output + + +----+------------+------------------------+-------------+---------------------+-----------+----------------------------------------------+-------------+ + | id | cliente_id | nome_razao_social | vendedor_id | data_hora | status | observacoes | valor_total | + +----+------------+------------------------+-------------+---------------------+-----------+----------------------------------------------+-------------+ + | 10 | 2 | Mercado Bom Preco LTDA | 1 | 2026-04-01 09:15:00 | FATURADO | Pedido corporativo entregue | 1149.70 | + | 11 | 1 | Ana Lima | NULL | 2026-04-02 14:30:00 | ABERTO | Cliente iniciou compra pelo site | 339.80 | + | 12 | 3 | Carlos Souza | 2 | 2026-04-05 11:00:00 | CANCELADO | Pagamento recusado | 299.90 | + | 13 | 4 | Oficina Giro Rapido ME | 1 | 2026-04-07 16:45:00 | FATURADO | Compra com multiplos itens | 1079.50 | + | 14 | 2 | Mercado Bom Preco LTDA | NULL | 2026-04-09 08:20:00 | ABERTO | Sem vendedor vinculado | 0.00 | + >| 15 | 1 | Ana Lima | NULL | 2026-04-10 10:10:00 | ABERTO | Pedido usado para exercicio de vendedor nulo | 59.90 | + +----+------------+------------------------+-------------+---------------------+-----------+----------------------------------------------+-------------+ +--Em destaque na tabela filtrada se prova que o pedido 15 esta sem nenhum vendedor cadastrado. + +### Caso 3 — Identificar os itens de um pedido + +Pergunta: + +> Quais produtos fazem parte do pedido 20? + +Resposta ( não possui pedido 20, usasei o 15) +> nessa situação utilizei o um comando que comapara o id de um produto que esteja presente no na tabela de pedidos_itens, assim sabendo qual era o produto de um pedido. +> Input: +SELECT + p.id AS pedido, + pr.descricao, + pi.criado_em + FROM pedido_itens pi + INNER JOIN produtos pr ON pr.id = pi.produto_id + LEFT JOIN pedidos p ON p.id = pi.pedido_id + WHERE p.id = '10'; +Output + +--------+-----------+---------------------+ + | pedido | descricao | criado_em | + +--------+-----------+---------------------+ +> | 15 | Mouse USB | 2026-07-21 10:00:21 | + +--------+-----------+---------------------+ + + (exemplo 2 com o pedido 10) + +--------+----------------------+---------------------+ + | pedido | descricao | criado_em | + +--------+----------------------+---------------------+ + | 10 | Monitor 24 Polegadas | 2026-07-21 10:00:21 | + | 10 | Cabo HDMI 2m | 2026-07-21 10:00:21 | + | 10 | Mouse USB | 2026-07-21 10:00:21 | + | 10 | Headset Corporativo | 2026-07-21 10:00:21 | + +--------+----------------------+---------------------+ +--como o exemplo do pedido 15 continha apenas um pedido, fiz mais um teste com o pedido 10 para demonstrar como sairio o resuktado com mais produtos + + ### Caso 4 — Encontrar produtos que nunca foram vendidos + +Pergunta: + +> Existem produtos cadastrados que nunca apareceram em pedidos? + +Resposta +> Para essa situação é necessario filtrar produtos que nunca apareceram vinculados em nenhum pedido_intes, para consultar usei o seguinte Input: + SELECT + pr.id AS produto_id, + pr.sku, + pr.descricao, + pr.valor_unitario, + pr.estoque_atual + FROM produtos pr + LEFT JOIN pedido_itens pi ON pi.produto_id = pr.id + WHERE pi.id IS NULL; + + +------------+---------+--------------------------+----------------+---------------+ + | produto_id | sku | descricao | valor_unitario | estoque_atual | + +------------+---------+--------------------------+----------------+---------------+ +> | 7 | SKU-007 | Base Notebook Ergonomica | 129.90 | 18.00 | + +------------+---------+--------------------------+----------------+---------------+ + +--Na filtragem se mostra que o unico produto cadastrado que nunca foi vendido é o produto 'Base Notebook Ergonomica'. + +5. ### Caso 5 — Encontrar possíveis inconsistências + +Pergunta: + +> Existe pedido com valor total zero e itens cadastrados? + +Resposta + +> aqui nessa parte é possivel fazer direto, mas preferi dividir em duas parte para ser mais intendivel, primeiro consultei se realmente existe algum pedido realmente zerado, para isso usei apenas o Input : + +SELECT * FROM pedidos; + +Autput + +----+------------+-------------+---------------------+-----------+----------------------------------------------+-------------+---------------------+---------------------+ + | id | cliente_id | vendedor_id | data_hora | status | observacoes | valor_total | criado_em | atualizado_em | + +----+------------+-------------+---------------------+-----------+----------------------------------------------+-------------+---------------------+---------------------+ + | 10 | 2 | 1 | 2026-04-01 09:15:00 | FATURADO | Pedido corporativo entregue | 1149.70 | 2026-07-21 10:00:21 | 2026-07-21 10:00:21 | + | 11 | 1 | NULL | 2026-04-02 14:30:00 | ABERTO | Cliente iniciou compra pelo site | 339.80 | 2026-07-21 10:00:21 | 2026-07-21 10:00:21 | + | 12 | 3 | 2 | 2026-04-05 11:00:00 | CANCELADO | Pagamento recusado | 299.90 | 2026-07-21 10:00:21 | 2026-07-21 10:00:21 | + | 13 | 4 | 1 | 2026-04-07 16:45:00 | FATURADO | Compra com multiplos itens | 1079.50 | 2026-07-21 10:00:21 | 2026-07-21 10:00:21 | +> | 14 | 2 | NULL | 2026-04-09 08:20:00 | ABERTO | Sem vendedor vinculado | 0.00 | 2026-07-21 10:00:21 | 2026-07-21 10:00:21 | + | 15 | 1 | NULL | 2026-04-10 10:10:00 | ABERTO | Pedido usado para exercicio de vendedor nulo | 59.90 | 2026-07-21 10:00:21 | 2026-07-21 10:00:21 | + +----+------------+-------------+---------------------+-----------+----------------------------------------------+-------------+---------------------+---------------------+ + + > com esse comando descobrimos que realmente existe um pedido zerado que esta aberto, entao agora posso usar o id dele para filtrar informaçoes desse pedido, se fizesse direto traria informaçao de vario pedidos junto, mas separado, posso trazer a informacao apenas do pedido em questao. Agora usando o imput: + + SELECT + pi.pedido_id, + pi.produto_id, + pr.descricao, + pr.valor_unitario, + pi.valor_total, + pi.quantidade + pi.quantidade + INNER JOIN produtos pr ON pr.id = pi.produto_id + WHERE pi.pedido_id = '14'; + + Inpiut + +-----------+------------+-----------+----------------+-------------+------------+ + | pedido_id | produto_id | descricao | valor_unitario | valor_total | quantidade | + +-----------+------------+-----------+----------------+-------------+------------+ +> | 14 | 1 | Mouse USB | 59.90 | 59.90 | 1.00 | + +-----------+------------+-----------+----------------+-------------+------------+ +> Fazendo essa filtagem, é possivel ver uma incoerencia com o valor total entre o pedido_itens e pedidos, onde em um apresenta zerado e o outro apresenta o valor de 59.90, ha algumas possiveis causas, como erro de cadastro do produto, entretando, esse produto aparece em outro pedidos que não estao zerado, como o caso do pedido 15 + + +----+------------+-------------+---------------------+-----------+----------------------------------------------+-------------+---------------------+---------------------+ + | 15 | 1 | NULL | 2026-04-10 10:10:00 | ABERTO | Pedido usado para exercicio de vendedor nulo | 59.90 | 2026-07-21 10:00:21 | 2026-07-21 10:00:21 | + +----+------------+-------------+---------------------+-----------+----------------------------------------------+-------------+---------------------+---------------------+ + +> entao para essa situação sera necessario atualizar o valor, é posivel alterar manualmente na base de dados, mas nessa situação atualizemos usando o seguinte Input: + +UPDATE pedidos +SET valor_total = 59.90 +WHERE id = 14; + +Output + +----+------------+-------------+---------------------+-----------+----------------------------------------------+-------------+---------------------+---------------------+ + | id | cliente_id | vendedor_id | data_hora | status | observacoes | valor_total | criado_em | atualizado_em | + +----+------------+-------------+---------------------+-----------+----------------------------------------------+-------------+---------------------+---------------------+ + | 10 | 2 | 1 | 2026-04-01 09:15:00 | FATURADO | Pedido corporativo entregue | 1149.70 | 2026-07-21 10:00:21 | 2026-07-21 10:00:21 | + | 11 | 1 | NULL | 2026-04-02 14:30:00 | ABERTO | Cliente iniciou compra pelo site | 339.80 | 2026-07-21 10:00:21 | 2026-07-21 10:00:21 | + | 12 | 3 | 2 | 2026-04-05 11:00:00 | CANCELADO | Pagamento recusado | 299.90 | 2026-07-21 10:00:21 | 2026-07-21 10:00:21 | + | 13 | 4 | 1 | 2026-04-07 16:45:00 | FATURADO | Compra com multiplos itens | 1079.50 | 2026-07-21 10:00:21 | 2026-07-21 10:00:21 | +> | 14 | 2 | NULL | 2026-04-09 08:20:00 | ABERTO | Sem vendedor vinculado | 59.90 | 2026-07-21 10:00:21 | 2026-07-24 10:17:00 | + | 15 | 1 | NULL | 2026-04-10 10:10:00 | ABERTO | Pedido usado para exercicio de vendedor nulo | 59.90 | 2026-07-21 10:00:21 | 2026-07-21 10:00:21 | + +----+------------+-------------+---------------------+-----------+----------------------------------------------+-------------+---------------------+---------------------+ + +-- dessa forma o valor foi atualizado. + + +### Considerações sobre o modulo 6 + +--Esse modulo se deferencia por trazer situações praticas, ele não possui nenhum ensinamento teorico, focado apenas na aplicaçao dos conhecimentos desemvolvidos, durante os exercicios precisei fazer algumas mudanças porque durante o processo termos novos antes não apresentados foram abordados, para fechar a trilha sem lacunas no apredijagem, todos esses termos não aplicados na trilha serao aprofundados em um modulo bonus, denominado modulo 7, entao apos o execicio do modulo 6 sera enviado outro exercicio do modulo 7 que ta,bem ira conter o que foi aprendido nesse modulo para que se possa ter um controle do que o trainee ja viu. \ No newline at end of file diff --git a/Exercicios Modulos/# Modulo 7 Update e cadastros em tabelas.md b/Exercicios Modulos/# Modulo 7 Update e cadastros em tabelas.md new file mode 100644 index 0000000..99cac59 --- /dev/null +++ b/Exercicios Modulos/# Modulo 7 Update e cadastros em tabelas.md @@ -0,0 +1,84 @@ +# Modulo 7 Update e cadastros em tabelas + +## Updat de Tabelas. + +1. Nesse Momentos veremos como fazer atualização de tabelas, como por exemplo mudar o nome do usuario +> As auteraçao sao feitas com o comnado Update + + +Modelo Geral +```sql +UPDATE tabela +SET atributo = informação do tributo alterada +WHERE id do iten a ser alterado; +``` + + ATENCAO: Aqui é importante lembra de você especificar o qaul item sera mudado usando o WHERE, se a caso você não o coloque, todos sofreram a mudança e nao somente um item, veremos no emplo abaixo + +Exemplo 1.0 +```sql +UPDATE pedidos +SET valor_total = 59.90 +WHERE id = 14; +``` + Nessa situação especifiquemos que queremos mudar apenas o item 14, se por algum acaso esquecermos do 'WHERE' todos os intem terao o valor total = 59.90 + Tambem é possivel atualizar usando outra tabela, para isso utiliza-se o FROM , contudo é necessaio fazer a relaçao usando o WHERE. + +Ecemplo 2.0 +```Sql +UPDATE pedidos p +SET valor_total = 12.00 +FROM pedido_itens pi +WHERE p.id = pi.pedido_id; +``` +Essas são apenas alguns exemplo de aplicaçao de atualizacao em tabelas. + +2. Novos cadastros em tabelas + +Para o cadastro de alguma entidade a alguma tabela se usa a função INSERT INTO , logo na mesma linha deve vim a tabela +seguesse esse padrao, a funçao e a tabela, somente assim vocÇe podera abrir a cchete dos atributos a serem preenchidos, lembre-se +a ordem que se estiver dentro da cochete sera a ordem seguida no 'VOLUES' tal esse que adiciona as informação desejada de um atributo. + +# exemplo 1 + +```SQL +INSERT INTO tabela ( + id, + sku, + descricao, + Valor_unitario, + estoque_atual, + ativo +) VALUES + (1, 'SKU-001', 'Cafe nao amargo', 67.00, 1, 1); +``` +nesse exemplo é um cadastro de produto, dentro do cochete você indica os atributos, e a ordem deles, no VOLUES você dara os valores + +### Exercicios Modulo 7 + +No sistema Simples web tem uma pagina especifica para o usuario, como aqui o objetivo é aprender a cadastrar se deve fazer manualmente, Boa Sorte :D + +#### caso 1 + +cliente: +> Ola , eu preciso cadastrar 3 novo cliente, (informação) + +#### caso 2 +cliente: +> Ola, preciso cadastrar 2 itens novos da loja, pode me ajudar, o xml da nota esta na area de trabalho. + +#### caso 3 +cliente: +> Ola, to com dificuldade de emitir 3 pedido para um cliente, pode me ajudar? (informaçao) + +#### caso 4 +cliente: +> Boa Tarde, eu cadastrei um iten de uma nota mais na hora de escriturar coloquei o valor errado, consegue arrumar para mim, eu nao consegui. + +#### caso 5 +cliente: +> oiii, eu estou com umpoblema, eu estou mandando os xml para uma cliente mais o email nao esta indo, o email dela é esse (josue.jose@gmail.com'), o nome do cliente é Josue jose jave. + +#### caso 6 +cliente: +> Ola, eu fiz um chamado mais tarde para você e você cadasrou o nome do produto errado, pode arrumar? \ No newline at end of file diff --git a/Exercicios Modulos/## Exercicios Modulos 7.md b/Exercicios Modulos/## Exercicios Modulos 7.md new file mode 100644 index 0000000..d239ec2 --- /dev/null +++ b/Exercicios Modulos/## Exercicios Modulos 7.md @@ -0,0 +1,104 @@ +## Exercicios Modulos 7 + +#### caso 1 + +cliente: +> Ola , eu preciso cadastrar 3 novo cliente, (informação) +Aqui para nao cadastrar cada um dos clientes separados, deixaremos mais pratico e fazeremos o cadastro dos 3. + +Input +```sql +INSERT INTO clientes ( + id, + tipo_pessoa, + nome_razao_social, + nome_fantasia, + cpf_cnpj, + email, + telefone +) VALUES + (5, 'FISICA', 'Jose da Silva', NULL, '333.333.666-63', 'jose.silva@gmail.com', (11) 98888-0001), + (6, 'JURIDICA', 'cafeteria Control Cafe', 'Control Cafe', '12.345.678/0001-90', 'empresa@controlcafe.com', (11) 3333-0002), + (7, 'FISICA', 'Josue jose jave', NULL, '666.777.333-67', 'josue.jave@gmail.com', (11) 98888-0003); +``` +dessa forma todos os clientes foram cadastrados de forma simplificada e rapida + +#### caso 2 +cliente: +> Ola, preciso cadastrar 2 itens novos da loja, pode me ajudar, o xml da nota esta na area de trabalho. +```sql +INSERT INTO produtos ( + sku, + descricao, + valor_unitario, + estoque_atual, + ativo +) VALUES + ('SKU-008', 'Mause de fio', 35.00, 12, 1), + ('SKU-009', 'Cadeira GAYmer', 67.90, 5, 1); +``` + +#### caso 3 +cliente: +> Ola, to com dificuldade de emitir 3 pedido para um cliente, pode me ajudar? (informaçao) + +```sql +INSERT INTO pedidos ( + cliente_id, + vendedor_id, + data_hora, + status, + observacoes, + valor_total + )VALUES + (6, NULL, '2026-04-10 10:10:00', 'ABERTO', 'pagado no cartao', 154.08), + (7, NULL, '2026-04-10 10:10:00', 'FATURADO', 'o cliente tem olhos azuls', 967.8), + (6, NULL, '2026-04-10 10:10:00', 'CANCELADO', 'Nao quis o cupom fiscal', 00.00); +``` +```sql +INSERT INTO pedido_itens ( + pedido_id, + produto_id, + quantidade, + valor_unitario, + valor_total +) VALUES + (16, 1, 2, 59.90, 119.8), + (16, 8, 1, 35.00, 35.00), + (17, 9, 1, 67.90, 67.90), + (17, 3, 1, 899.90, 899.90), + (18, 6, 1, 39.90, 39.90); +``` + +#### caso 4 +cliente: +> Boa Tarde, eu cadastrei um iten de uma nota mais na hora de escriturar coloquei o valor errado, consegue arrumar para mim, eu nao consegui. +--O item sera o mause de fil com o valor de 35.00 +```sql +UPDATE produtos +SET valor_unitario = 25.00 +WHERE sku = 'SKU-008'; +``` + +#### caso 5 +cliente: +> oiii, eu estou com umpoblema, eu estou mandando os xml para uma cliente mais o email nao esta indo, o email dela é esse (josue.jose@gmail.com'), o nome do cliente é Josue jose jave. +nessa situacao o ideal sera consultar o cadastro do cliente, ao fazer isso se nota que o usuario esta com outro email cadastrato, entao se pode alterar para o correto + +```sql +UPDATE cliente +SET email = 'josue.jose@gmail.com' +WHERE id = 7; +``` + +#### caso 6 +cliente: +> Ola, eu fiz um chamado mais tarde para você e você cadastrou o nome do produto errado, pode arrumar? +o produto em questao sera o mesmo, 'mause de fio' mas ela quer que seja mause COM fio + +```sql +UPDATE produtos +SET descricao = 'Mause Com Fio' +WHERE sku = 'SKU-008'; +``` + diff --git "a/Exercicios Modulos/## Exerc\303\255cios do m\303\263dulo 5.md" "b/Exercicios Modulos/## Exerc\303\255cios do m\303\263dulo 5.md" new file mode 100644 index 0000000..9fff350 --- /dev/null +++ "b/Exercicios Modulos/## Exerc\303\255cios do m\303\263dulo 5.md" @@ -0,0 +1,159 @@ +## Exercícios do módulo 5 + +1. Listar clientes pessoa jurídica. +2. Listar produtos ativos ordenados por descrição. +3. Listar pedidos com nome do cliente. +4. Listar pedidos com ou sem vendedor. +5. Listar produtos nunca vendidos. +6. Listar vendedores sem pedidos. +7. Listar total de itens por pedido. + + +1. + SELECT id, nome_razao_social, tipo_pessoa, cpf_cnpj + FROM clientes + WHERE tipo_pessoa = 'JURIDICA'; + +# Saida de dados: ++----+------------------------+-------------+--------------------+ +| id | nome_razao_social | tipo_pessoa | cpf_cnpj | ++----+------------------------+-------------+--------------------+ +| 2 | Mercado Bom Preco LTDA | JURIDICA | 12.345.678/0001-90 | +| 4 | Oficina Giro Rapido ME | JURIDICA | 98.765.432/0001-10 | ++----+------------------------+-------------+--------------------+ + +2. + SELECT id, sku, descricao, valor_unitario, estoque_atual, ativo + FROM produtos + WHERE ativo ='1' + ORDER BY descricao ASC; + +# Saida de dados: ++----+---------+--------------------------+----------------+---------------+-------+ +| id | sku | descricao | valor_unitario | estoque_atual | ativo | ++----+---------+--------------------------+----------------+---------------+-------+ +| 7 | SKU-007 | Base Notebook Ergonomica | 129.90 | 18.00 | 1 | +| 6 | SKU-006 | Cabo HDMI 2m | 39.90 | 200.00 | 1 | +| 4 | SKU-004 | Headset Corporativo | 179.90 | 50.00 | 1 | +| 3 | SKU-003 | Monitor 24 Polegadas | 899.90 | 35.00 | 1 | +| 1 | SKU-001 | Mouse USB | 59.90 | 120.00 | 1 | +| 2 | SKU-002 | Teclado Mecanico | 249.90 | 80.00 | 1 | ++----+---------+--------------------------+----------------+---------------+-------+ + +3. + SELECT + p.id, + p.cliente_id, + c.nome_razao_social, + p.status, + p.observacoes, + p.valor_total + FROM pedidos p + INNER JOIN clientes c ON c.id = p.cliente_id; + +# Saida de dados: ++----+------------+------------------------+-----------+----------------------------------------------+-------------+ +| id | cliente_id | nome_razao_social | status | observacoes | valor_total | ++----+------------+------------------------+-----------+----------------------------------------------+-------------+ +| 10 | 2 | Mercado Bom Preco LTDA | FATURADO | Pedido corporativo entregue | 1149.70 | +| 11 | 1 | Ana Lima | ABERTO | Cliente iniciou compra pelo site | 339.80 | +| 12 | 3 | Carlos Souza | CANCELADO | Pagamento recusado | 299.90 | +| 13 | 4 | Oficina Giro Rapido ME | FATURADO | Compra com multiplos itens | 1079.50 | +| 14 | 2 | Mercado Bom Preco LTDA | ABERTO | Sem vendedor vinculado | 0.00 | +| 15 | 1 | Ana Lima | ABERTO | Pedido usado para exercicio de vendedor nulo | 59.90 | ++----+------------+------------------------+-----------+----------------------------------------------+-------------+ + +4. + SELECT + p.id, + p.vendedor_id, + v.nome, + p.status, + p.observacoes, + p.valor_total + FROM pedidos p + LEFT JOIN vendedores v ON v.id = p.vendedor_id; + +# Saida de dados: ++----+-------------+-----------------+-----------+----------------------------------------------+-------------+ +| id | vendedor_id | nome | status | observacoes | valor_total | ++----+-------------+-----------------+-----------+----------------------------------------------+-------------+ +| 10 | 1 | Juliana Martins | FATURADO | Pedido corporativo entregue | 1149.70 | +| 11 | NULL | NULL | ABERTO | Cliente iniciou compra pelo site | 339.80 | +| 12 | 2 | Roberto Alves | CANCELADO | Pagamento recusado | 299.90 | +| 13 | 1 | Juliana Martins | FATURADO | Compra com multiplos itens | 1079.50 | +| 14 | NULL | NULL | ABERTO | Sem vendedor vinculado | 0.00 | +| 15 | NULL | NULL | ABERTO | Pedido usado para exercicio de vendedor nulo | 59.90 | ++----+-------------+-----------------+-----------+----------------------------------------------+-------------+ + +5. + SELECT + p.id, + p.sku, + p.descricao, + p.valor_unitario, + p.estoque_atual, + p.ativo, + p.criado_em, + p.atualizado_em + FROM produtos p + LEFT JOIN pedido_itens pi ON pi.produto_id = p.id + WHERE pi.id IS NULL; + +# Saida de dados: ++----+---------+--------------------------+----------------+---------------+-------+---------------------+---------------------+ +| id | sku | descricao | valor_unitario | estoque_atual | ativo | criado_em | atualizado_em | ++----+---------+--------------------------+----------------+---------------+-------+---------------------+---------------------+ +| 7 | SKU-007 | Base Notebook Ergonomica | 129.90 | 18.00 | 1 | 2026-07-21 10:00:21 | 2026-07-21 10:00:21 | ++----+---------+--------------------------+----------------+---------------+-------+---------------------+---------------------+ + +6. + SELECT + p.id, + p.cliente_id, + p.vendedor_id, + v.nome, + p.data_hora, + p.status, + p.valor_total + FROM pedidos p + LEFT JOIN vendedores v ON v.id = p.vendedor_id + WHERE v.id IS NULL; + +# Saida de dados: ++----+------------+-------------+------+---------------------+--------+-------------+ +| id | cliente_id | vendedor_id | nome | data_hora | status | valor_total | ++----+------------+-------------+------+---------------------+--------+-------------+ +| 11 | 1 | NULL | NULL | 2026-04-02 14:30:00 | ABERTO | 339.80 | +| 14 | 2 | NULL | NULL | 2026-04-09 08:20:00 | ABERTO | 0.00 | +| 15 | 1 | NULL | NULL | 2026-04-10 10:10:00 | ABERTO | 59.90 | ++----+------------+-------------+------+---------------------+--------+-------------+ + +7. Listar total de itens por pedido. + SELECT id, valor_total, criado_em, + COUNT(*) AS total + FROM pedido_itens + GROUP BY pedido_id; + +# Saida de dados: ++-----+-------------+---------------------+-------+ +| id | valor_total | criado_em | total | ++-----+-------------+---------------------+-------+ +| 100 | 899.90 | 2026-07-21 10:00:21 | 4 | +| 104 | 249.90 | 2026-07-21 10:00:21 | 3 | +| 107 | 299.90 | 2026-07-21 10:00:21 | 1 | +| 108 | 499.80 | 2026-07-21 10:00:21 | 3 | +| 111 | 59.90 | 2026-07-21 10:00:21 | 1 | +| 112 | 59.90 | 2026-07-21 10:00:21 | 1 | ++-----+-------------+---------------------+-------+ + + +# cosideracoes sobre o modulo 5 + +Esse modulo se trata de aplicar o que vimos no modulo 4, a "interacao" das tabelas, alem de filtrar informacao deles, entre tato esse modulo se apresentou simple e direto, e embora +isso seja bom, pois o foco da trilha é trinar de maneira mais pratica do que teorica, esse nodulo apresentou o que precisava saber antes das tarefas, assim como os demais e nesse +notei que quando fui resolver o ultimo exercicio do modulo 5 (exercicio 7) eu acabei travando, pois entramos em dois termos novos 'COUNT' e 'GROUP' que nao continham nenhuma +explicacao breve sobre tals, mesmo dizendo que vamos aprofundar mais para frente, uma breve espricacao para situar seria mais ideal, para alguem sem contato com esse termo se tornou +impossivel resolver sem consultar informacao externas, para mim, precisei consultar o claude para me auxiliar a entendder a funcionalidade e como aplica-lo de maneira ideal, apenas uma observacao minha. + + diff --git a/Exercicios Modulos/Exercicio Modulo 4 b/Exercicios Modulos/Exercicio Modulo 4 new file mode 100644 index 0000000..f6734e3 --- /dev/null +++ b/Exercicios Modulos/Exercicio Modulo 4 @@ -0,0 +1,24 @@ +# Trilha de Formação — Suporte Técnico com Base em Banco de Dados e SQL + +## 7.6 Exercícios do módulo 4 + +1. Dar um exemplo de conjunto usando `clientes`. +2. Dar um exemplo de subconjunto usando `produtos`. +3. Explicar, sem SQL, o que seria a interseção entre pedidos e clientes. +4. Explicar, sem SQL, o que seria a diferença entre vendedores e vendedores com pedidos. + +1. Caso o se queira saber quais produtos um determinado cliente ainda nunca havia comprado é possivel tirar por diferença + Utilizando do conjunto diferença se é visto quais produtos determinado cliente nunca eftuou uma compra. + da mesma forma, é possivel saber quais produtos ja foram vendido a tal, vendo quais produtos intersectam com o usuario. + + +2. o subconjunto é uma pequena "parte" de um conjunto , por exemplo o conjunto `produtos`, dentro dele temos um subconjunto chamado `estoque atual` , nele contem a quantidade atual dos produtos, assim podento consultar apenas o estoque, isso facilita em caso de buscas rapidas. + +3. Na imagem [conjunto produto e criente.jpeg] é uma explicação de forma visual como um `cliente` e um produto podem intersectar em algum momento, como um produto que o cliente ja tenha comprado, na imagem é possivel visualisar a area de cliente(azul) , a area de produto(vermelho), e na area central uma cololaração laranja, essa area pertence tanto a produto quanto ao cliente, essa parte é chamada de intersecção dos dois DSconjuntos. + +4. vendedores se refere a tabela, todos os vendedores(ou tambem o conjunto principal), e vendedores com pedidos se refere a um tipo conjunto de intersecção, onde vemos qual vendedores estão associados a algum pedido, isso ajuda a organizar para saber qual vendedor esta vendendo mais, e assim ele separa, e aqueles não associados(que sobraram) sao os qua nao venderam nada, alem de ajudar organizar as bonificação por venda, se tive. + + +## considereções do modulo 4 + +O modulo foi relativamente simples, ele utiliza de maneira direta e simples o conjunto, algo ja aboradado em minhas aulas, e que particularmente nunca tive dificuldade, desta forma o entendimento ficou mais claro, decidi tambem responder a questão 3 do modulo 4 atraves de uma ilustração propria, de maneira a ficar mais claro, pretento elaborar mais relações entre conjuntos a fim de descobrir maneiras eficases de se utilizar. diff --git a/Exercicios Modulos/Projeto de acompanhamento de notas escolares b/Exercicios Modulos/Projeto de acompanhamento de notas escolares new file mode 100644 index 0000000..a904761 --- /dev/null +++ b/Exercicios Modulos/Projeto de acompanhamento de notas escolares @@ -0,0 +1,15 @@ +# Analise de desempenho escolar + +## Analise e desemvollvimento de primeiro prototipo + +1. A imagem [fluxograma escola.png] faz parte de um desemvolvimento de um futuro banco de dados, decidi por assim incluir +na trilha de aprendijagem para um melhor desemvolvimento, também por se tratar de aplicar e desemvolver minhas ablidades em situações diferentes. + +2. o projeto consiste em desemvolver um banco de dados que armazene as notas dos alunos do fundamental a fim de auxiliar o controle e facilitar buscas, contudo o foco principal do projeto e fazer com que o banco ajude o professor a acompanhar o desemvolvimento do aluno, assim em caso de queda de nota de um periodo para o outro o professor percebera essa mudança, assim podendo avaliar se é um caso isolado de uma materia, se é em todas. Assim ajudando o professor que ja possui uma rotina estressante a ter uma rotina mais organizada e possibilitando enchegar dificuldades de alunos que antes passavam despercebido pela quantidade de aluno em uma sala. + +3. o fluxograma ainda não esta completo, enquanto desemvolvia acabei me perdendo nas anotação, por isso reduzi os passos para evitar colocar dados +que possam quebrar o banco, pretendo fazer um "enchugamento para visualisar os pontos que possam causar um quebra. + +4. Tambem preciso ainda arrumar alguns pontos ja vistos, como relacionamento incossistentes, adicionar uma tabela alerta para os professores notarem alguma queda de desempenho escolar(ainda nao estou me aprofundando nessa parte), e tabem a tabela histórico esta armazenando nota, ver se não esta sobressaindo, ela deve calcular a media final. + + \ No newline at end of file diff --git a/Exercicios Modulos/Relatorio de experiencia dos modulos b/Exercicios Modulos/Relatorio de experiencia dos modulos new file mode 100644 index 0000000..fbe5d00 --- /dev/null +++ b/Exercicios Modulos/Relatorio de experiencia dos modulos @@ -0,0 +1,34 @@ +# Relatorio de experiencia dos modulos da trilha SQL + +## Modulo 1 + +1. O modulo 1 foi o mais longo ate o momento por se tratar do inicio, é a introdução a +todos os termos e conceitos que serão abordados, ele tabem prepara para a criação das tabelas. +Por ser algo mais teorico do que pratico ele exerce muito mais a capacidade de memorização dos conceitos. + Sobre o modulo, achei um dos mais faceis, aborda o assunto de maneira direta, e mesmo sendo o mais teorico + dos modulos, ele não aprofunda assuntos que podem não serem trabalhado na trilha. + +## Modulo 2 + +1. Em contra partida do modulo passado, considero esse o mais dificil dentre os modulo ja feito, +nesse modulo é a criação do conteinner no docker, esse foi o que mais me debati, a interfasse ser ingles dificultou no inicio +mais nada que um pouco de pratica não resolvesse, contudo, a liguagem para subir o docker me debatia muito, no terminal, muitas veses +não consegui enterder o erro, assim precisei recorrer ao claude e chat gpt para traduzir a mesagem, ele me ajudou a entender o erro, +embora mesmo agora teria dificuldade de sobir novamente, pretendo me aprofundar mais futuramento por que claramente ainda tenho dificuldade +nessa area. + +## Modulo 3 + +1. Esse modulo vejo mais como um complemento do modulo 2, nele se é visto a alteração de tabelas, relativamente simples, mais +o que mais achei interassante são os comentario, alterar uma tabela é simples, mais o impacto que essa alteração vai causar é +o verdadeiro desafio, pois é necessario uma interpletação dos impactos de cada mudança, e interpletar antes mesmo de efetuar a mudança para +evitar que cause um poblema ao banco de dados, esse modulo foi bem direto quanto as informação ele ensina como fazer modificação nas tabelas +de forma direta, mais deixa explicito as atenção que se deve ter ao fazer cada mudança, pois cada uma vai impactar o banco de alguma forma, +e como é importante plenejar antes de agir. + +## Modulo 4 + +1. No modulo 4 é abordado os conjuntos dentro de um banco de dados, por se tratar de conjuntos, ele se associa ao conjunto classico visto na matematica +por isso esse foi um dos modulos mais faceis de se fazes, entretanto, mesmo sendo facel merece atenção, por se tratar das "interação entre conjunto", como a intersecção ou diferença vejo esse modulo importante para a aplicação no banco de dados. + +2. Nesse modulo em um dos exercicio preferi desenhar em ums dos exercicio(exercicio 3) em vez de apenas explicar o conceito, o desenho é relativamente simple, abordando apenas a intersecção entre dois comjuntos, para desenhar utilisei da ferramente paint. R \ No newline at end of file diff --git a/Exercicios Modulos/conjunto produto e clirnte.jpeg b/Exercicios Modulos/conjunto produto e clirnte.jpeg new file mode 100644 index 0000000..fae6b11 Binary files /dev/null and b/Exercicios Modulos/conjunto produto e clirnte.jpeg differ diff --git a/Exercicios Modulos/fluxograma escolar.png b/Exercicios Modulos/fluxograma escolar.png new file mode 100644 index 0000000..2e27cd2 Binary files /dev/null and b/Exercicios Modulos/fluxograma escolar.png differ diff --git a/Novos cadastros na tabela/INSERT INTO clientes.sql b/Novos cadastros na tabela/INSERT INTO clientes.sql new file mode 100644 index 0000000..c74a044 --- /dev/null +++ b/Novos cadastros na tabela/INSERT INTO clientes.sql @@ -0,0 +1,12 @@ +INSERT INTO clientes ( + id, + tipo_pessoa, + nome_razao_social, + nome_fantasia, + cpf_cnpj, + email, + telefone +) VALUES + (5, 'FISICA', 'Jose da Silva', NULL, '333.333.666-63', 'jose.silva@gmail.com', '(11) 98888-0001'), + (6, 'JURIDICA', 'cafeteria Control Cafe', 'Control Cafe', '45.678.912/0001-33', 'empresa@controlcafe.com', '(11) 3333-0002'), + (7, 'FISICA', 'Josue jose jave', NULL, '666.777.333-67', 'josue.jave@gmail.com', '(11) 98888-0003'); \ No newline at end of file diff --git a/Novos cadastros na tabela/INSERT INTO produtos +pedidos.sql b/Novos cadastros na tabela/INSERT INTO produtos +pedidos.sql new file mode 100644 index 0000000..c56d383 --- /dev/null +++ b/Novos cadastros na tabela/INSERT INTO produtos +pedidos.sql @@ -0,0 +1,34 @@ +INSERT INTO produtos ( + sku, + descricao, + valor_unitario, + estoque_atual, + ativo +) VALUES + ('SKU-008', 'Mause de fio', 35.00, 12, 1), + ('SKU-009', 'Cadeira GAYmer', 67.90, 5, 1); + +INSERT INTO pedidos ( + cliente_id, + vendedor_id, + data_hora, + status, + observacoes, + valor_total + )VALUES + (6, NULL, '2026-04-10 10:10:00', 'ABERTO', 'pagado no cartao', 154.08), + (7, NULL, '2026-04-10 10:10:00', 'FATURADO', 'o cliente tem olhos azuls', 967.8), + (6, NULL, '2026-04-10 10:10:00', 'CANCELADO', 'Nao quis o cupom fiscal', 39.90); + +INSERT INTO pedido_itens ( + pedido_id, + produto_id, + quantidade, + valor_unitario, + valor_total +) VALUES + (16, 1, 2, 59.90, 119.8), + (16, 8, 1, 35.00, 35.00), + (17, 9, 1, 67.90, 67.90), + (17, 3, 1, 899.90, 899.90), + (18, 6, 1, 39.90, 39.90); \ No newline at end of file diff --git a/Novos cadastros na tabela/UPDATE produtos.sql b/Novos cadastros na tabela/UPDATE produtos.sql new file mode 100644 index 0000000..16451d7 --- /dev/null +++ b/Novos cadastros na tabela/UPDATE produtos.sql @@ -0,0 +1,11 @@ +UPDATE produtos +SET valor_unitario = 25.00 +WHERE sku = 'SKU-008'; + +UPDATE clientes +SET email = 'josue.jose@gmail.com' +WHERE id = 7; + +UPDATE produtos +SET descricao = 'Mause Com Fio' +WHERE sku = 'SKU-008'; \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 24a5a74..223e81b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -37,7 +37,7 @@ services: PMA_ARBITRARY: 0 UPLOAD_LIMIT: 32M ports: - - "8080:80" + - "8081:81" volumes: mysql_data: diff --git a/exe_modulo.2.3.sql b/exe_modulo.2.3.sql new file mode 100644 index 0000000..e5c1c1c --- /dev/null +++ b/exe_modulo.2.3.sql @@ -0,0 +1,79 @@ +CREATE TABLE vendedores ( + id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, + nome VARCHAR(150) NOT NULL, + email VARCHAR(150) DEFAULT NULL, + telefone VARCHAR(20) DEFAULT NULL, + ativo TINYINT(1) NOT NULL DEFAULT '1', + criado_em DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + atualizado DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +); + +CREATE TABLE clientes( + id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, + tipo_pessoa ENUM('FISICA','JURIDICA') NOT NULL, + pessoa_razao_social VARCHAR(150) NOT NULL, + nome_fantasia VARCHAR(150) DEFAULT NULL, + cpf_cnpj VARCHAR(18) NOT NULL, + email VARCHAR(150) DEFAULT NULL, + telefone VARCHAR(25) DEFAULT NULL, + criado_em DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + atualizado_em DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + data_nascimento DATE DEFAULT NULL, + UNIQUE KEY uk_clientes_cpf_cnpj (cpf_cnpj) +); + +CREATE TABLE `produtos` ( + id BIGINT unsigned NOT NULL AUTO_INCREMENT, + sku VARCHAR(50) NOT NULL, + descricao VARCHAR(200) NOT NULL, + valor_unitario DECIMAL(10,2) NOT NULL, + estoque_atual DECIMAL(10,2) NOT NULL DEFAULT 0.00, + ativo TINYINT(1) NOT NULL DEFAULT 1, + criado_em DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + atualizado_em DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + categoria VARCHAR(150) DEFAULT NULL, + UNIQUE KEY uk_produtos_sku (sku) +); + +CREATE TABLE `pedidos` ( + id BIGINT unsigned NOT NULL AUTO_INCREMENT, + cliente_id BIGINT unsigned NOT NULL, + vendedor_id BIGINT unsigned NOT NULL, + data_hora DATETIME NOT NULL, + status enum('ABERTO','FATURADO','CANCELADO') NOT NULL DEFAULT 'ABERTO', + observacaos VARCHAR(250) DEFAULT NULL, + valor_total DECIMAL(12,2) NOT NULL DEFAULT 0.00, + criado_em DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + atualizado_em DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + CONSTRAINT fk_pedidos_clientes FOREIGN KEY (cliente_id) REFERENCES clientes (id), + CONSTRAINT fk_pedidos_vendedores FOREIGN KEY (vendedor_id) REFERENCES vendedores (id) +); + +CREATE TABLE `pedidos_itens` ( + id BIGINT unsigned NOT NULL AUTO_INCREMENT, + pedido_id BIGINT unsigned NOT NULL, + produto_id BIGINT unsigned NOT NULL, + quantidade DECIMAL(10,2) NOT NULL, + valor_unitario DECIMAL(10,2) NOT NULL, + valor_total DECIMAL(12,2) NOT NULL, + criado_em DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + atualizado_em DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + CONSTRAINT fk_pedido_itens_pedidos FOREIGN KEY (pedido_id) REFERENCES pedidos (id), + CONSTRAINT fk_pedido_itens_produtos FOREIGN KEY (produto_id) REFERENCES produtos (id) +); + + + +/*comando de alterçaõ de tabela*/ + +ALTER TABLE clientes +ADD COLUMN data_nascimento DATE NULL; + +ALTER TABLE produtos +ADD COLUMN categoria VARCHAR(150) NULL; + +ALTER TABLE clientes +MODIFY COLUMN telefone VARCHAR(25); + +ALTER TABLE pedidos +ADD INDEX idx_pedidos_data_hora (data_hora); \ No newline at end of file diff --git a/sql/03-exercicios.sql b/sql/03-exercicios.sql index 3f6839a..4c9dc99 100644 --- a/sql/03-exercicios.sql +++ b/sql/03-exercicios.sql @@ -1,5 +1,17 @@ USE trilha_suporte; +ALTER TABLE clientes +ADD COLUMN data_nascimento DATE NULL; + +ALTER TABLE produtos +ADD COLUMN categoria VARCHAR(150) NULL; + +ALTER TABLE clientes +MODIFY COLUMN telefone VARCHAR(25); + +ALTER TABLE pedidos +ADD INDEX idx_pedidos_data_hora (data_hora); + -- Modulo 2: reconhecimento do ambiente -- Exercicio 1: execute SHOW DATABASES; -- Exercicio 2: execute SHOW TABLES;