Eesse projeto é uma série de desafios com diferentes níveis de complexidade que devem ser resolvidos cada um em seu arquivo próprio.
Caso queira testar as queries na sua maquina é preciso ter o banco de dados Northwind
para isso siga as seguintes instruções.
-
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-A
e depois clique no icone de trovão 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> npm test
Ou 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 e localhost
como host. Logo, você executaria:
MYSQL_USER=root MYSQL_PASSWORD=password HOSTNAME=localhost npm test
Usando o exemplo anterior de base, suponha que você não tenha setado uma senha para root
. Neste caso, você executaria:
MYSQL_USER=root MYSQL_PASSWORD= HOSTNAME=localhost npm test
- Exibe apenas os nomes do produtos na tabela
products
. - Exibe os dados de todas as colunas da tabela
products
. - Exibe os valores da coluna que representa a primary key da tabela
products
. - Conta quantos registros existem em
product_name
deproducts
. - Exibe os dados da tabela
products
a partir do quarto registro até o décimo terceiro, incluindo tanto um quanto o outro sem o uso dewhere
eorder by
. - Exibe os dados das colunas
product_name
eid
da tabelaproducts
de maneira que os resultados estejam em ordem alfabética dos nomes. - Mostra apenas os ids dos 5 últimos registros da tabela
products
(a ordernação é baseada na colunaid
). - Faz uma consulta que retorna três colunas. Na primeira coluna, exibe a soma de
5 + 6
(essa soma é ser realizada pelo SQL). Na segunda coluna tem a palavra "de". E por fim, na terceira coluna, exibe a soma de2 + 8
(essa soma é realizada pelo SQL). A primeira coluna é chamada de "A", a segunda coluna é chamada "Trybe" e a terceira coluna é chamada "eh". Não é usado colunas pre-existentes, apenas as que foram criadas na hora.
- Mostra todos os valores de
notes
da tabelapurchase_orders
que não são nulos. - Mostra todos os dados da tabela
purchase_orders
em ordem decrescente ordenados porcreated_by
em que ocreated_by
é maior ou igual a 3. E como critério de desempate para a ordenação, ordena também os resultados peloid
de forma crescente. - Exibe os dados de
notes
da tabelapurchase_orders
em que seu valor de "Purchase generated based on Order" está entre 30 e 39, incluindo tanto o valor de 30 quanto de 39. - Mostra as
submitted_date
depurchase_orders
em que asubmitted_date
é do dia 26 de abril de 2006. - Mostra o
supplier_id
daspurchase_orders
em que osupplier_id
seja 1 ou 3. - Mostra os
supplier_id
dapurchase_orders
em que osupplier_id
seja de 1 a 3, incluindo tanto o 1 quanto o 3. - Mostra somente as horas (sem os minutos e os segundos) da
submitted_date
de todos registros depurchase_orders
. Essa coluna é chamada desubmitted_hour
. - exibe a
submitted_date
daspurchase_orders
que estão entre2006-01-26 00:00:00
e2006-03-31 23:59:59
. - Mostra os registros das colunas
id
esupplier_id
daspurchase_orders
em que ossupplier_id
sejam tanto 1, ou 3, ou 5, ou 7. - Mostra todos os registros de
purchase_orders
que tem osupplier_id
igual a 3 estatus_id
igual a 2. - Mostra quantos pedidos foram feitos na tabela
orders
peloemployee_id
igual a 5 ou 6, e que foram enviados através do métodoshipper_id
igual a 2? a coluna é chamada de orders_count.
- Adiciona ao
order_details
uma linha com os seguintes dados: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. Obs.: oid
é incrementado automaticamente. - Adiciona, com um único
INSERT
, duas linhas aoorder_details
com os mesmos dados. Esses dados são novamenteorder_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ìd
é incrementado automaticamente). - Atualiza os dados de
discount
doorder_details
para 15. - Atualiza os dados de
discount
da tabelaorder_details
para 30 cujaunit_price
é menor que 10.0000. - Atualiza os dados de
discount
da tabelaorder_details
para 45 cujaunit_price
é maior que 10.0000 e o id é um número entre 30 a 40. - Deleta todos os dados em que a
unit_price
da tabelaorder_details
é menor que 10.0000. - Deleta todos os dados em que a
unit_price
da tabelaorder_details
é maior que 10.0000. - Deleta todos os dados da tabela
order_details
.