sábado, 27 de agosto de 2016

Select Definir quantidade de registros retornados

Olá!

Quando realizamos a execução de uma instrução Select no banco de dados (BD), é possível que não seja retornado nenhum registro, como também pode ser retornado um ou vários registros.

Imagine que seja realizado uma consulta no DB e retorne 100 registros, entretanto o programa que realiza a execução desta consulta só necessita dos 5 primeiros registros retornados. Assim, está sendo desperdiçado processamento, pois 100 registros estão sendo selecionados, mas somente 5 registros é que estão sendo utilizados.

Então, como elaborar uma instrução SQL que selecione apenas os 5 primeiros registros?

Para definir a quantidade de registros que serão retornados de uma consulta no DB, usamos o comando:

Banco de dadosComando
DB2FETCH FIRST número ROWS ONLY
SQL ServerTOP número
MySQLLIMIT número
OracleROWNUM <= número
  • número é um valor numérico inteiro.

Para os exemplos dos comandos acima, considerar a tabela PESSOA logo abaixo, está tabela possui 7 registros cadastrados, e também campo CD_PESSOA como chave primaria (PK).

PESSOA
CD_PESSOANOMESOBRENOMEIDADE
1FelipeBarbosa23
2AnaVieira20
3JoãoSantos19
4AlineSilva21
5MairaDantas25
6AnaHavana19
7AlineFerreira22

Instrução Select que realiza a seleção dos 5 primeiros nomes da tabela PESSOA, segue os exemplos de cada banco de dados:

1) - DB2
          SELECT NOME
             FROM PESSOA
           WHERE CD_PESSOA > 0
      ORDER BY CD_PESSOA
FETCH  FIRST  5  ROWS  ONLY

2)- SQL Server
          SELECT  TOP  5  NOME
             FROM PESSOA
           WHERE CD_PESSOA > 0
      ORDER BY CD_PESSOA

3)- MySQL
          SELECT NOME
             FROM PESSOA
           WHERE CD_PESSOA > 0
      ORDER BY CD_PESSOA
              LIMIT  5 

4)- Oracle
          SELECT * FROM (
                 SELECT NOME
                    FROM PESSOA
                  WHERE CD_PESSOA > 0
             ORDER BY CD_PESSOA
           ) WHERE  ROWNUM =  5
A execução de cada um dos exemplos, irá retornar:

RegistroNOME
1Felipe
2Ana
3João
4Aline
5Maira

Note que no Oracle ocorre a necessidade de um Select encadeado, pois no Oracle primeiro é executado o ROWNUM e depois o ORDER BY, e assim não retornando o resultado esperado, porque deste modo seria selecionado os 5 registros da tabela e depois ordenados. Então, para que primeiro seja executado o ORDER BY toda tabela, é necessário executar ele em um único Select, e depois executar o ROWNUM nos dados já ordenados. Para mais informações sobre ROWNUM com ORDER BY veja aqui.

Enfim, nos exemplos apresentados está sendo retornado apenas os 5 primeiros registros cadastrados na tabela PESSOA. E retornar os 5 últimos registros desta tabela? É somente acrescentar o DESC na cláusula do ORDER BY, assim a ordenação seria feita do último registro para o primeiro, ou seja, de forma descendente.

Consultar a relação de Termos e Abreviaturas acesse aqui.
Felipe Barbosa Ferreira
Até o próximo post!

sábado, 20 de agosto de 2016

Operadores relacionais

Olá!

Quando há necessidade de realizar a comparação de algum elemento "A" com outro elemento "B", temos que utilizar os operadores relacionais.

Por exemplo, a comparação para verificar se a idade de uma pessoa é igual a 25 anos. Assim, neste exemplo o elemento "A" é a idade da pessoa e o elemento "B" é o número 25, e o operador para realizar a comparação de igualdade destes elementos é o igual (=). Então, podendo se representado pela expressão: idade = 25.

Os operadores relacionais mais utilizados no SQL, são:

OperadorUtilizaçãoDescrição
>A > BA maior que B
>=A >= BA maior ou igual que B
<A < BA menor que B
<=A <= BA menor ou igual que B
1A = BA igual B
<>A <> BA diferente B


Sendo que toda operação realizada com algum desses operadores retorna um valor boolean, ou seja, o resultado de uma instrução com os operadores relacionais retorna verdadeiro ou falso. Exemplo:

ExpressãoResultado
O número 12 é maior que o número 5Verdade
12 > 5TRUE

  • Exemplos SQL:
Tabela:
PESSOA
CD_PESSOANOMESOBRENOMEIDADE
1FelipeBarbosa23
2AnaVieira20
3JoãoSantos19
4AlineSilva21
5MairaDantas25

1) - SQL para consultar os nomes da tabela PESSOA, que possuam a idade maior ou igual a 23.
SELECT NOME
  FROM PESSOA
 WHERE IDADE >= 23;

O resultado do Select é as duas linhas:
Felipe
Maira

2) - SQL para deletar os registros que possuam a idade menor que 20.
DELETE FROM PESSOA
 WHERE IDADE < 20;

Para o Delete de exemplo os registros que serão afetados (deletados), são:
3JoãoSantos19

Observe que o operador <> diferente, também pode ser chamado de "não igual". E em outras linguagens é equivalente ao operador !=, que é utilizado por exemplo nas linguagens Java e PHP.

Consultar a relação de Termos e Abreviaturas acesse aqui.
Felipe Barbosa Ferreira


Até o próximo post!

sexta-feira, 12 de agosto de 2016

Select Like

Olá!

Ao consultar informações em um banco de dados (DB), de modo que o filtro da pesquisa seja uma string (nome, letra, palavra, etc.), ou seja, que a consulta tenha que retornar os registros que possuam dados semelhante a string informada. Assim, para realizar está consulta podemos utilizar o comando LIKE na condição do SQL.

Sendo que o comando LIKE possui variações no modo de filtrar os dados, conforme a tabela a seguir:

LIKE + operadorRetorna os registros
valor%que começam com o valor
%valorque terminam com o valor
%valor%que possuem o valor
_valor%que começam com o valor, sendo aqui desconsiderado o primeiro carácter

Então, a sintaxe básica do comando Select com Like, é:
SELECT campo(s)
  FROM tabela
 WHERE campo LIKE ‘operador

  • Exemplos
Tabela utilizada para os exemplos:
PESSOA
CD_PESSOANOMESOBRENOMEIDADE
1FelipeBarbosa23
2AnaVieira20
3JoãoSantos19
4AlineSilva21
5MairaDantas25

1) Pesquisar os nomes que começão com a letra A
SELECT NOME
  FROM PESSOA
 WHERE NOME LIKE ‘A%’

Resultado:
Ana
Aline

2) Pesquisar os nomes que possuem a letra I
SELECT NOME
  FROM PESSOA
 WHERE NOME LIKE ‘%i%’

Resultado:
Felipe
Aline
Maira

3) Pesquisar os nomes que possuem a silaba LI
SELECT NOME
  FROM PESSOA
 WHERE NOME LIKE ‘%li%’

Resultado:
Felipe
Aline

4) Pesquisar os nomes que terminam com a letra A
SELECT NOME
  FROM PESSOA
 WHERE NOME LIKE ‘%A

Resultado:
Ana
Maira

5) Pesquisar os nomes que possuam a segunda letra igual N
SELECT NOME
  FROM PESSOA
 WHERE NOME LIKE ‘_n%’

Resultado:
Ana

O underline serve para desconsiderar a posição da string que será comparada, no exemplo acima a primeira posição está sendo desconsiderada. Então, para desconsiderar uma ou mais posições de uma string a ser comparada use o underline na posição desejada. Exemplo:

Pesquisar strings que comecem com a segunda letra igual A e a quarta igual P
SELECT string
  FROM tabela
 WHERE string LIKE ‘_a_p%’
FELIPE BARBOSA FERREIRA
Consultar a relação de Termos e Abreviaturas acesse aqui.
Felipe Barbosa Ferreira
Até o próximo post!

sexta-feira, 5 de agosto de 2016

Select Where And / Or

Olá!

Quando estamos em busca de uma informação, delimitamos a área de pesquisa por meio de condições que ajudam a filtrar os dados que estão sendo analisados. Pois, assim evitamos de analisar todos os dados que estão disponíveis. Exemplo de pesquisa:
  • Pesquisar as informações de pessoas que o nome comece com a letra "A" e tenham 20 anos de idade, ou o sobrenome Dantas. Em uma lista de cadastros pessoais que está ordenada de forma ascendente pelo nome da pessoa.
Para realizar a pesquisa acima, as informações poderiam ser disposta da seguinte forma:

Pesquisar dados pessoais
Buscar
nome
Tabela
Pessoa
Condições
   nome comece com a letra "A"
e  tenham 20 anos de idade
ou sobrenome Dantas
Informações adicionais
lista analisada estar ordenada de forma ascendente pelo nome da pessoa


Repare que existem três condições que ajudam a separar os dados que serão analisados na tabela Pessoa. Desse modo para retornar os nomes cadastrados na tabela Pessoa temos que ter respeitar essas condições, que são:
  1. primeira letra do nome = "A"
  2. tenha 20 anos de idade
  3. sobrenome = "Dantas"
De modo que a primeira e segunda condição estão ligadas pelo termo "E", e a terceira está sendo referenciada com o termo "OU". Assim, é necessário que a 1º e 2º condição sejam verdadeiras ou que a 3º condição seja verdadeira.

Então, para construir um comando SQL que realize a pesquisa acima, é necessário utilizar os comandos:
  • AND (e)
  • OR (ou)
Agora tendo conhecimento desses comandos, as condições da pesquisa poderiam também ser dispostas da seguinte forma:

Condições
    nome comece com a letra "A"
AND tenham 20 anos de idade
OR  sobrenome Dantas

Segue o exemplo prático da pesquisa acima:
Tabela
PESSOA
CD_PESSOANOMESOBRENOMEIDADE
1FelipeBarbosa23
2AnaVieira20
3JoãoSantos19
4AlineSilva21
5MairaDantas25

SQL:
SELECT NOME
  FROM PESSOA
 WHERE NOME LIKE “A%”
   AND IDADE = 20
    OR SOBRENOME LIKE “%Dantas%”;

Resultado da consulta:
Ana
Maira

O nome Ana foi retornado porque possui a primeira letra igual a "A" e idade igual 20. E o nome Maira porque possui o sobrenome igual a Dantas.

Também, podemos utilizar os parenteses ( ) para separar/unir as condições do SQL. Ou seja, com os comandos And e Or é possível criar diversas condições para filtrar os dados que serão selecionados do DB.


Consultar a relação de Termos e Abreviaturas acesse aqui.
Felipe Barbosa Ferreira

Até o próximo post!