Aonde nenhum homem jamais esteve

By | January 1, 2008

Bom… nem tanto assim.

SQL sempre foi uma coisa que passou desapercebido por mim. Tudo que sempre precisei era resolvido com copy/paste de códigos que vinham nos arquivos INSTALL ou em algum tutorial. Eu nunca realmente me preocupei com SQL.

Mesmo para administrar o nosso antigo servidor eu deixava o Silvio (cadê a URL, Silvio?) usar o mysql pra fazer o que fosse necessário e quando precisava alterar alguma coisa eu só olhava no history dos comandos e mudava os parâmetros. Nunca me dei ao trabalho de aprender.

Mas esses dias as coisas estavam meio devagar no serviço e aproveitei o tempo pra estudar um pouco.

Sabe que é até interessante? E é mais divertido do que eu pensava e a sintaxe nem é muito complexa. Só estou tendo um pouco de dificuldade pra “pensar em SQL”. Da mesma forma que no começo é difícil pensar em shell script, em grep ou em regex eu me pego algumas vezes quebrando a cabeça pra resolver questões de lógica em SQL. Só então eu percebo que estava difícil porquê eu não estava pensando em SQL de verdade.

Passei quase uma hora pensando em como fazer uma programação de forma a selecionar um campo X numa tabela A pra complementar a informação Y que tinha na tabela A e na tabela B. Algo como:

Tabela A:

nome|sobrenome

eri|bastos

Tabela B:

nome|nascimento

eri|19800201

Basicamente eu queria extrair a informação “eri bastos 19800201”. Fiz um loop for grotesco no script pra tirar essa informação de todos os registros da tabela e estava tão ruim e tão lento que resolvi para tudo e ler um tutorial de SQL. E eis que descubro esta maravilha da natureza chamada SQL Join!! 🙂
É divertido ser newbie de novo e aprender dando cabeçada. Fazia tempo que não tinha desafios assim.

3 thoughts on “Aonde nenhum homem jamais esteve

  1. Roberto

    Interessante mesmo.

    Dê uma olhada no conceito de VIEW, que acaba por criar uma “tabela” com o select que você utilizou.

    No Oracle fica algo como:

    “Create or replace view teste as
    SELECT A1.region_name REGION, SUM(A2.Sales) SALES
    FROM Geography A1, Store_Information A2
    WHERE A1.store_name = A2.store_name
    GROUP BY A1.region_name
    /”

    E para qualquer consulta, você consegue fazer um select como se fosse uma tabela mesmo. No caso, a view ficaria com o nome “teste”.

    Lembrando que você não precisa dar um alias para a tabela, pode usar diretamente o nome dela ao invés de A1, A2…

  2. Roberto

    Outra coisa que você pode achar interessante:

    Utilizando o mesmo exemplo da tabela nome.sobrenome, que estaria dessa forma:
    “eri|bastos”
    “roberto|junior”

    E a tabela nome2.nascimento:

    “eri|19800201”

    Com o select no formato SALES_REGION, retornaria apenas:

    “eri bastos 19800201”

    Já se você utilizar o operador (+) após o join, ele retornaria:

    “eri bastos 19800201”
    “roberto junior”

  3. Pingback: Yet Another Nerd Place » Blog Archive » Open

Comments are closed.