Como escrever uma query

Objetivo

A motivação para escrever esse artigo veio dos constantes processos de seleção que venho acompanhando. Recrutar desenvolvedores não é uma tarefa muito fácil, ainda mais num mercado complexo como o brasileiro.

Resolvi elaborar um teste simples baseado em query e lógica e programação… e conforme os resultados foram chegando, cheguei à conclusão que ainda existem muitas dúvidas sobre como resolver uma query. Os resultados são assustadores.

Claro que a idéia aqui não é cobrir 100% das situações… a sintaxe para linguagem SQL é bem complexa e varia muito dependendo do banco de dados utilizado, mas como sempre, os conceitos básicos são os mesmos. É nesses conceitos que vamos trabalhar aqui.

Não pretendo cobrir situações de insert, update, e outras complexidades. Apenas sintaxes para instruções do tipo select e algumas de suas variações.

Acredito que compreendendo a idéia descrita aqui seja possível resolver uns 95% das queries na vida real.

Pensando num select de forma mais estruturada

A expressão select de uma query é composta por 3 sessões principais (claro q existem outras). são elas:

SELECT
  campo1,
  campo2,
  campo3
FROM
  tabela
WHERE
  campo1 = 10
  • Campos: Colunas que são exibidas entre o select e o from. Basicamente cada valor representa uma coluna ou uma expressão que resulte no valor de uma coluna.
  • From: De onde vem as informações aqui entram as tabelas, e principalmente os joins. Pra mim essa é a sessão mais importante onde ocorrem os problemas.
  • Where: Aqui entram condições em geral para a query. Costumo pensar nessa sessão como "filtros".

Nos tópicos a seguir, vamos explorar cada uma das sessões.

Sessão "From"

A idéia principal da sessão from é listar a "origem" das informações. Pensando numa tabela só, fica tudo muito simples, porém, quando pensamos em várias tabelas fica mais complicado.

A complicação vem justamente da idéia dos "joins" ou seja, como as informações de tabelas auxiliares são trazidas pela nossa instrução. Para ilustrar a idéia, vamos usar um MER (Modelo Entidade-Relacionamento) já usado no artigo bd-idsechavescompostas

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License