Sofisticando simples SQL’s
Vejo muitos programadores usando pouco do poder que as SQL’s oferecem. Se limitando ao simples
“SELECT * FROM nometatabela WHERE campo = 1″.
Podemos evoluir isso em muito mais, fazendo cálculos e outros tudo pela SQL. Ela tem poder pra fazer todo o trabalho pra você. Uma coisa básica é começarmos a usar mais operadores além do igual(=) para a cláusula WHERE. Exemplo:
“SELECT nome FROM professor WHERE idade > 25″
Traduzindo o que fizemos acima. SELECIONE o campo nome DA TABELA professor ONDE o campo idade seja maior que 25. Podemos fazer isso usando os operadores menor(<), menor igual(<=), maior igual(>=), e maior como vimos no exemplo.
Poderiamos especificar um pouco mais nossa consulta da seguinte forma.
“SELECT nome FROM professor WHERE idade > 25 AND idade < 40″
Traduzindo. SELECIONE o campo nome DA TABELA professor ONDE o campo idade seja maior que 25 e o campo idade seja menor que 40. Ou melhor dizendo, ONDE o campo idade esteja entre 25 e 40. Justamente para substituir essas situações temos o operador BETWEEN. Repare:
“SELECT nome FROM professor WHERE idade BETWEEN 25 AND 40″
É a mesma consulta que fizemos acima, porém com o operador BETWEEN que significa entre. Atenção que ao usar esse operador você inclui os valores que você especificou. Seria como usar maior igual(>=) e menor igual(<=). Caso você quisesse pegar os valores que não estivessem entre os especificados, bastaria usar NOT BETWEEN.
“SELECT nome FROM professor WHERE idade NOT BETWEEN 25 AND 40″
Traduzindo. SELECIONE o campo nome DA TABELA professor ONDE o campo idade NÃO ESTÁ ENTRE 25 E 40.
Um outro exemplo seria se eu quisesse pegar apenas os professores com idade 25 e 40, ninguém mais. Poderia para isso usar o operador IN. Vejamos:
“SELECT nome FROM professor WHERE idade IN (25, 40)”
Traduzindo. SELECIONE o campo nome DA TABELA professor ONDE o campo idade ESTEJA COM OS VALORES 25 ou 40. Eu poderia colocar quantas variantes eu quisesse dentro dos parenteses. Atenção que os valores que eu coloquei são números, por isso não os coloquei entre aspas, caso você strings os valores deveriam estar entre elas. Em contrapartida o operador NOT IN, claro, é o contrário do IN.
“SELECT nome FROM professor WHERE idade NOT IN (25, 40)”
Traduzindo. SELECIONE o campo nome DA TABELA professor ONDE o campo idade NÃO ESTEJA COM OS VALORES 25 ou 40. Novamente falando, eu poderia colocar quantos valores quisesse entre os parenteses. E lembre-se da questão das aspas em caso de string.
Outra coisa legal de estudar são funcões SQL. Já temos alguns posts sobre isso aqui no Blog escrito pelo Daniel (Confiram nos posts passados).
Pra finalizar. Vejamos como a consulta pode não simplesmente te retornar um valor, mais algo associado a ele. Por exemplo digamos que eu quera pegar a idade dos professores, mas que junto com seu valor venha escrito idade na frente. Vejamos:
“SELECT ‘idade = ‘ || idade FROM professor”
Traduzindo o que fizemos acima. SELECIONE. Entre as aspas é o que você quer que venha com o valor. As duas barras, também chamado de pipe, servem para concatenar, para juntar. Nesse caso está juntando com o valor do campo idade. DA TABELA professor.
O que essa consulta retornára aqui, é além do valor da idade, uma frase ou palavra na frente, no nosso caso aqui , idade =, que é o que está entre aspas.
Que bacana ! Espero que isso sejá útil pra alguém. Eu curti muito descobrir essas coisas sobre as SQL’s.
Abraço e até a próxima.