Ao iniciar este projeto, você concorda com as diretrizes do Código de Ética e Conduta e do Manual da Pessoa Estudante da Trybe
Você já usa o GitHub diariamente para desenvolver os exercícios, certo? Agora, para desenvolver os projetos, você deverá seguir as instruções a seguir. Fique atento a cada passo, e se tiver qualquer dúvida, nos envie por Slack! #vqv 🚀
Aqui você vai encontrar os detalhes de como estruturar o desenvolvimento do seu projeto a partir desse repositório, utilizando uma branch específica e um Pull Request para colocar seus códigos.
- Habilidades
- Entregáveis
- Instruções para entregar seu projeto
- Como desenvolver
- Requisitos do projeto
- Depois de terminar o desenvolvimento (opcional)
- Revisando um pull request
- Avisos Finais
Nesse projeto, você será capaz de:
- Entender o que são bancos de dados
- Entender como a linguagem de consulta estruturada (SQL) é usada
- Compreender como as tabelas se encaixam no conceito de banco de dados
- Montar um ambiente de desenvolvimento local para praticar SQL
- Entender como usar o MySQL Workbench
- Compreender o que é uma query SQL e quais são seus tipos de comando
- Gerar valores com SELECT
- Selecionar colunas individualmente com SELECT
- Renomear e gerar colunas em uma consulta com AS
- Concatenar colunas e valores com CONCAT
- Remover dados duplicados em uma consulta com DISTINCT
- Contar a quantidade de resultados em uma consulta com COUNT
- Limitar a quantidade de resultados em uma consulta com LIMIT
- Pular resultados em uma consulta com OFFSET
- Ordernar os resultados de uma consulta com ORDER BY
- Filtrar resultados de consultas com o WHERE
- Utilizar operadores booleanos e relacionais em consultas
- Criar consultas mais dinâmicas e maleáveis com LIKE
- Fazer consultas que englobam uma faixa de resultados com INeBETWEEN
- Encontrar e separar resultados que incluem datas.
- Inserir dados em tabelas com INSERT
- Atualizar dados em tabelas com UPDATE
- Apagar dados em tabelas com DELETE
Hoje você fará um projeto com o codinome All For One em que praticará todos os conceitos de SQL já ensinados até aqui. Porém, você vai usar um banco de dados totalmente diferente, então dê tchau para o sakila e dê boas vindas ao Northwind, que será usado neste projeto. As instruções de como restaurar o banco podem ser lidas a seguir.
Temos, nesse projeto, uma série de desafios com diferentes níveis de complexidade que devem ser resolvidos cada um em seu arquivo próprio.
- 
Leia a pergunta e crie na raiz do projeto um arquivo chamado desafioN.sql, em que N é o número do desafio; 
- 
O arquivo deve conter apenas o código SQL do desafio resolvido. Não se esqueça de incluir o ponto e vírgula (";") no final de suas queries e também de colocar o nome do banco_de_dados.tabela_por_completo, como no exemplo a seguir: 
SELECT * FROM northwind.orders;- 
Faça isso até finalizar todos os desafios. 
- 
Para entregar o seu projeto você deverá criar um Pull Request neste repositório. Este Pull Request deverá conter os arquivos desafio1.sql,desafio2.sqle assim por diante até odesafio27.sql, que conterão seu códigoSQLde cada desafio, respectivamente.
- 
Não é necessário colocar USE northwindouSET SQL_SAFE_UPDATES = 0;no início dos seus arquivos.
- 
Após a execução dos teste locais, o banco de dados northwindé deletado.
Você pode adicionar outros arquivos se julgar necessário. Qualquer dúvida, procure a monitoria.
Lembre-se que você pode consultar nosso conteúdo sobre Git & GitHub e nosso Blog - Git & GitHub sempre que precisar!
- 
Projeto individual. 
- 
Será 1dia de projeto.
- 
Data de entrega para avaliação final do projeto: 04/02/2022 - 14:00h.
- Clone o repositório
- git clone https://github.com/tryber/sd-015-b-mysql-all-for-one.git.
- Entre na pasta do repositório que você acabou de clonar:
- cd sd-015-b-mysql-all-for-one
 
- Instale as dependências [Caso existam]
- npm install[exemplo]
- Crie uma branch a partir da branch master
- Verifique que você está na branch master- Exemplo: git branch
 
- Exemplo: 
- Se não estiver, mude para a branch master- Exemplo: git checkout master
 
- Exemplo: 
- Agora, crie uma branch onde você vai guardar os commitsdo seu projeto- Você deve criar uma branch no seguinte formato: nome-de-usuario-nome-do-projeto
- Exemplo: git checkout -b seunome-mysql-all-for-one
 
- Você deve criar uma branch no seguinte formato: 
- Para cada exercício você deve criar um novo arquivo sql seguindo a seguinte estrutura:
- desafio1.sql, desafio2.sql...desafioN.sql
- Adicione as mudanças ao stage do Git e faça um commit
- Verifique que as mudanças ainda não estão no stage
- Exemplo: git status(deve aparecer o arquivo que você alterou como desafio1.sql)
 
- Exemplo: 
- Adicione o novo arquivo ao stage do Git
- Exemplo:
- git add .(adicionando solução para desafio 1)
- git status(deve aparecer listado o arquivo desafio1.sql em verde)
 
 
- Exemplo:
- Faça o commitinicial- Exemplo:
- git commit -m 'iniciando o projeto MySQL All For One'(fazendo o primeiro commit)
- git status(deve aparecer uma mensagem tipo nothing to commit )
 
 
- Exemplo:
- Adicione a sua branch com o novo commitao repositório remoto
- Usando o exemplo anterior: git push -u origin seunome-mysql-all-for-one
- Crie um novo Pull Request(PR)
- Vá até a página de Pull Requests do repositório no GitHub
- Clique no botão verde "New pull request"
- Clique na caixa de seleção "Compare" e escolha a sua branch com atenção
- Clique no botão verde "Create pull request"
- Adicione uma descrição para o Pull Request e clique no botão verde "Create pull request"
- Não se preocupe em preencher mais nada por enquanto!
- Volte até a página de Pull Requests do repositório e confira que o seu Pull Request está criado
- 
Faça commitsdas alterações que você fizer no código regularmente
- 
Lembre-se de sempre após um (ou alguns) commitsatualizar o repositório remoto
- 
Os comandos que você utilizará com mais frequência são: - git status(para verificar o que está em vermelho - fora do stage - e o que está em verde - no stage)
- git add(para adicionar arquivos ao stage do Git)
- git commit(para criar um commit com os arquivos que estão no stage do Git)
- git push -u nome-da-branch(para enviar o commit para o repositório remoto na primeira vez que fizer o- pushde uma nova branch)
- git push(para enviar o commit para o repositório remoto após o passo anterior)
 
- 
Faça o download do arquivo de backup aqui clicando em "Raw", depois clicando com botão direito e selecionando "Salvar como" para salvar o arquivo em seu computador. 
- 
Abra o arquivo com algum editor de texto, e selecione todo o conteúdo do arquivo usando CTRL-A.
- 
Abra o MySQL Workbench. 
- 
Abra uma nova janela de query e cole dentro dela todo o conteúdo do arquivo northwind.sql.
- 
Selecione todo o código com o atalho CTRL-Ae depois clique no icone de raio para executar a query.
- 
Aguarde alguns segundos (espere em torno de 30 segundos antes de tentar fazer algo). 
- 
Clique no botão apontado na imagem a seguir para atualizar a listagem de banco de dados. 
- 
Verifique se o banco restaurado possui todas as seguintes tabelas: 
- 
Clique com botão direito em cada tabela e selecione "Select Rows" e certifique-se que todas as tabelas possuem registros. Caso tenha alguma faltando, faça o passo a seguir. Caso contrário, pode ir para próxima seção. 
- 
Caso existam tabelas faltando, drope o banco de dados, clicando com o botão direito em cima do banco de dados northwind e selecionando "Drop Schema", e refaça os passos novamente, dessa vez aguardando um tempo maior quando executar o script de restauração. 
Para executar localmente os testes, é preciso escrever o seguinte no seu terminal:
MYSQL_USER=<SEU_NOME_DE_PESSOA_USUARIA> MYSQL_PASSWORD=<SUA SENHA> HOSTNAME=<NOME_DO_HOST> PORT=<PORTA> npm testOu seja, suponha que para poder acessar a base de dados feita neste projeto você tenha root como seu nome de pessoa usuária, password como senha, localhost como host e 1337 como porta. Logo, você executaria:
MYSQL_USER=root MYSQL_PASSWORD=password HOSTNAME=localhost PORT=1337 npm testUsando o exemplo anterior de base, suponha que você não tenha setado uma senha para root e esteja usando a porta padrão (3306). Neste caso, você executaria:
MYSQL_USER=root MYSQL_PASSWORD= HOSTNAME=localhost PORT= npm testDica: variáveis de ambiente definidas na mesma linha do comando valem apenas para aquele comando. Se preferir, você pode exportar as variáveis de ambiente para toda a sessão (todos os comandos até você fechar aquele terminal). Por exemplo:
export MYSQL_USER=root MYSQL_PASSWORD=password HOSTNAME=localhost PORT=1337E depois disso você só precisa rodar npm test quando for testar os projetos.
USE northwind ou SET SQL_SAFE_UPDATES = 0; no início dos seus arquivos 
northwind é deletado 
Monte queries para encontrar as informações esperadas pelos desafios:
3 - Escreva uma query que exiba os valores da coluna que representa a primary key da tabela products.
5 - Monte uma query que exiba os dados da tabela products a partir do quarto registro até o décimo terceiro.
Observações técnicas
- Tanto o quarto quanto o décimo terceiro registros, precisam aparecer na consulta.
- Não use whereouorder by.
6 - Exiba os dados das colunas product_name e id da tabela products de maneira que os resultados estejam em ordem alfabética dos nomes.
7 - Mostre apenas os ids dos 5 últimos registros da tabela products (a ordernação deve ser baseada na coluna id).
8 - Faça uma consulta que retorne três colunas, respectivamente, com os nomes 'A', 'Trybe' e 'eh', e com valores referentes a soma de '5 + 6', a string 'de', a soma de '2 + 8'.
Observações técnicas
- Na primeira coluna, exiba a soma de 5 + 6(essa soma deve ser realizada pelo SQL).
- Na segunda coluna deve haver a palavra "de".
- E por fim, na terceira coluna, exiba a soma de 2 + 8(essa soma deve ser realizada pelo SQL).
- A primeira coluna deve se chamar "A", a segunda coluna deve se chamar "Trybe" e a terceira coluna deve se chamar "eh".
- Não use colunas pre-existentes, apenas o que for criado na hora.
10 - Mostre todos os dados da tabela purchase_orders em ordem decrescente, ordenados por created_by em que o created_by é maior ou igual a 3.
Observações técnicas
- Como critério de desempate para a ordenação, ordene também os resultados pelo idde forma crescente.
11 - Exiba os dados da coluna notes da tabela purchase_orders em que seu valor de Purchase generated based on Order é maior ou igual a 30 e menor ou igual a 39.
12 - Mostre as submitted_date de purchase_orders em que a submitted_date é do dia 26 de abril de 2006.
14 - Mostre os resultados da coluna supplier_id da tabela purchase_orders em que o supplier_id seja maior ou igual a 1 e menor ou igual 3.
15 - Mostre somente as horas (sem os minutos e os segundos) da coluna submitted_date de todos registros da tabela purchase_orders.
Observações técnicas
- Chame essa coluna de submitted_hour.
16 - Exiba a submitted_date das purchase_orders que estão entre 2006-01-26 00:00:00 e 2006-03-31 23:59:59.
17 - Mostre os registros das colunas id e supplier_id das purchase_orders em que os supplier_id sejam tanto 1, ou 3, ou 5, ou 7.
18 - Mostre todos os registros de purchase_orders que tem o supplier_id igual a 3 e status_id igual a 2.
19 - Mostre a quantidade de pedidos que foram feitos na tabela orders pelo employee_id igual a 5 ou 6, e que foram enviados através do método(coluna) shipper_id igual a 2.
Observações técnicas
- Chame a coluna de orders_count.
20 - Adicione à tabela order_details um registro com order_id: 69, product_id: 80, quantity: 15.0000, unit_price: 15.0000, discount: 0, status_id: 2, date_allocated: NULL, purchase_order_id: NULL e inventory_id: 129.
Observações técnicas
- Obs.: o iddeve ser incrementado automaticamente.
21 - Adicione com um único INSERT, duas linhas à tabela order_details com os mesmos dados do requisito 20.
Observações técnicas
- Esses dados são novamente order_id: 69,product_id: 80,quantity: 15.0000,unit_price: 15.0000,discount: 0,status_id: 2,date_allocated: NULL,purchase_order_id: NULL einventory_id: 129.
- O ìddeve ser incrementado automaticamente.
22 - Atualize os dados de discount do order_details para 15. (Não é necessário utilizar o SAFE UPDATE em sua query).
23 - Atualize os dados da coluna discount da tabela order_details para 30, onde o valor na coluna unit_price seja menor que 10.0000.
Observações técnicas
- Não é necessário utilizar o SAFE UPDATE em sua query.
24 - Atualize os dados da coluna discount da tabela order_details para 45, onde o valor na coluna unit_price seja maior que 10.0000 e o id seja um número entre 30 e 40.
Observações técnicas
- Não é necessário utilizar o SAFE UPDATE em sua query.
Para sinalizar que o seu projeto está pronto para o "Code Review" dos seus colegas, faça o seguinte:
- 
Vá até a página DO SEU Pull Request, adicione a label de "code-review" e marque seus colegas: - 
No menu à direita, clique no link "Labels" e escolha a label code-review; 
- 
No menu à direita, clique no link "Assignees" e escolha o seu usuário; 
- 
No menu à direita, clique no link "Reviewers" e digite students, selecione o timetryber/students-sd-015-b.
 
- 
Caso tenha alguma dúvida, aqui tem um video explicativo.
Use o conteúdo sobre Code Review para te ajudar a revisar os Pull Requests.
#VQV 🚀
Ao finalizar e submeter o projeto, não se esqueça de avaliar sua experiência preenchendo o formulário. Leva menos de 3 minutos!
Link: FORMULÁRIO DE AVALIAÇÃO DE PROJETO
O avaliador automático não necessariamente avalia seu projeto na ordem em que os requisitos aparecem no readme. Isso acontece para deixar o processo de avaliação mais rápido. Então, não se assuste se isso acontecer, ok?



