www.samueldiasneto.com: Tutorial MySQL

<<< Voltar Avançar >>>

11. Pesquisando no banco de dados

Sintaxe básica da pesquisa

A pesquisa no banco de dados é feita com a instrução select. Sua sintaxe básica é:

select CAMPOS from TABELA where CONDIÇÃO order by CAMPO;

Exemplo:

mysql> select nr,dataentrada,tipodoc,doc from docs order by tipodoc;
+----+-------------+---------+-----------------------------------------------+
| nr | dataentrada | tipodoc | doc                                           |
+----+-------------+---------+-----------------------------------------------+
|  3 | 2005-10-21  | Msg FAX | TESTE - 71/E3 de 21 Out 05 da 14 Bda Inf Mtz  |
|  1 | 2005-10-20  | Of      | TESTE - 170/E1 de 15 Out 05 da 14 Bda Inf Mtz |
| 10 | 2005-10-31  | Of      | TESTE testando inserção de dados              |
| 11 | 2005-10-31  | Rádio   | TESTE testando inserção de dados 2            |
|  2 | 2005-10-21  | Rd      | TESTE - 35/Esc Log de 20 Out 05 da 5RM/5DE    |
+----+-------------+---------+-----------------------------------------------+
5 rows in set (0.06 sec)

mysql> select nr,dataentrada,tipodoc,doc from docs where tipodoc like
 ("Of") order by tipodoc;
+----+-------------+---------+-----------------------------------------------+
| nr | dataentrada | tipodoc | doc                                           |
+----+-------------+---------+-----------------------------------------------+
|  1 | 2005-10-20  | Of      | TESTE - 170/E1 de 15 Out 05 da 14 Bda Inf Mtz |
| 10 | 2005-10-31  | Of      | TESTE testando inserção de dados              |
+----+-------------+---------+-----------------------------------------------+
2 rows in set (0.00 sec)

mysql>  

O comando acima significa: selecione os campos nr,dataentrada,tipodoc,doc da tabela docs onde o campo tipodoc é igual a Of e ordene o resultado pelo campo tipodoc.

select CAMPOS from TABELA é de fácil entendimento e significa "selecione os CAMPOS da TABELA".


Especificando condições para a pesquisa: where

A cláusula where especifica a condição da pesquisa. Abaixo segue uma tabela com os operadores mais usados com where.

OPERADOR EXEMPLO DESCRIÇÃO
= nrcliente = 154 Testa se dois valores são iguais
> quantidade > 100 Testa se um valor é maior que outro
< quantidade < 100 Testa se um valor é menor que outro
<= quantidade <= 100 Testa se um valor é menor ou igual a outro
!= ou < > quantidade != 0 Testa se dois valores são diferentes
is not null endereco is not null Testa se um campo não está vazio
is null endereco is null Testa se um campo está vazio(nulo, ou seja, nada foi inserido nele, nem um espaço em branco)
between quantidade between 0 and 100 Testa se um valor está entre um valor mínimo(inclusive) e um valor máximo (inclusive)
in cidade in ("Recife","Olinda","Caruaru") Testa se um valor pertence a um conjunto
not in cidade not in ("Recife","Olinda","Caruaru") Testa se um valor não pertence a um conjunto
like nome like ("Samuel%") Testa se um valor corresponde a um padrão (% equivale ao conhecido *, é o curinga)
not like nome not like ("Samuel_") Testa se um valor não corresponde a um padrão ( _ equivale ao curinga que corresponde a um caracter)
regexp nome regexp Testa se um valor corresponde a uma expressão regular

Especificando mais de uma condição para a pesquisa

Para especificar mais de uma condição para a pesquisa use as palavras and e or:

Se quiser selecionar registros que atendam a CONDIÇÃO1 e a CONDIÇÃO2, faça assim:

select CAMPOS
from TABELA
where CONDIÇÃO1 and CONDIÇÃO2;

Se quiser selecionar registros que atendam a CONDIÇÃO1 ou a CONDIÇÃO2, faça assim:

select CAMPOS
from TABELA
where CONDIÇÃO1 or CONDIÇÃO2;

Exibindo todos os registros de uma tabela

Caso queira exibir todos os registros, você pode usar o "*" (asterisco) assim:

mysql> select * from cliente;
+--------+---------+
| codigo | nome    |
+--------+---------+
|      1 | João    |
|      2 | Maria   |
|      3 | José    |
|      4 | Manuel  |
|      5 | Adão    |
|      6 | Rodrigo |
|      7 | Davi    |
|      8 | Karla   |
|      9 | Samuel  |
|     10 | Ana     |
+--------+---------+
10 rows in set (0.00 sec)

mysql> 
<<< Voltar Avançar >>>