Como já vimos, o comando SELECT é o responsável por fazer a exibição
dos dados registrados em nossas tabelas, veremos agora como utilizar
uma melhor aplicação deste recurso.
Evitando a exibição de linhas duplicadas
Para que isso não ocorra, é necessário a indicação da palavra
DISTINCT imediatamente após o comando SELECT:
mysql> SELECT DISTINCT cidade FROM alunos;
Ordenando os dados
Já vimos anteriormente que para isto é necessário usar a
cláusula ORDER BY. Por default está cláusula ordena os dados em
ASCENDING (crescente), mas se você necessitar visualizar os dados
na ordem decrescente, utilize as siglas DESC após a cláusula:
mysql> SELECT nome FROM alunos ORDER BY nome DESC;
Utilizando alias (apelidos)
Existem duas maneiras de se utilizar os Alias (apelidos) em
uma cláusula do MySQL, são elas: apelido para o nome exibido no
título da coluna de uma tabela e apelido para simplificar um
nome de tabela que será constantemente utilizado em uma cláusula
SELECT.
Exemplos 1: apelido para o título
mysql> SELECT nome FROM ALUNOS;
+-------------------------------+
| nome |
+-------------------------------+
| Jefferson Estanislau da Silva |
| Leila Maria Muniz da Silva |
| Victor Estanislau da Silva |
+-------------------------------+
// observe que é apresentado o nome real da coluna.
mysql> SELECT
nome AS INSCRITOS FROM ALUNOS;
+-------------------------------+
| INSCRITOS |
+-------------------------------+
| Jefferson Estanislau da Silva |
| Leila Maria Muniz da Silva |
| Victor Estanislau da Silva |
+-------------------------------+
//observe que o nome real foi substituido pelo apelido Inscritos.
Exemplo 2: apelido para uma tabela constante em uma cláusula:
mysql> SELECT ALUNOS.nome, CURSOS.nomecurso FROM ALUNOS, CURSOS
-> where ALUNOS.codcurso = CURSOS.codcurso
-> and ALUNOS.cidade='Nova Friburgo';
// observe que o nome das tabelas ALUNOS e CURSO são repetidos constantemente dentro desta cláusula.
mysql> SELECT A.nome, C.nomecurso FROM
ALUNOS AS A, CURSOS AS C
-> where A.codcurso = C.codcurso
-> and A.cidade='Nova Friburgo';
// observe que foi utilizado o apelido A para AlUNOS e C para CURSOS, simplificando assim o código.
// As duas formas apresentam este resultado:
+-------------------------------+--------------------+
| nome | nomecurso |
+-------------------------------+--------------------+
| Jefferson Estanislau da Silva | Ensino Medio |
| Leila Maria Muniz da Silva | Ensino Medio |
| Victor Estanislau da Silva | Ensino Fundamental |
+-------------------------------+--------------------+
Utilizando condições
Já vimos que para que se faça o uso de condições deve se usar o
comando WHERE. Veremos agora várias formas de se aplicar estas
condições.
NOTA: é possível utilizar operadores de comparação lógica, estes
estão divididos em duas classes:
Operadores de linha Única
= igual a
! diferente de
> maior que
>= maior ou igual a
< menor que
<= menor ou igual a
mysql> SELECT nome FROM alunos WHERE matricula='300';
Operadores de várias linhas
AND e
OR ou
NOT não
mysql> SELECT nome FROM aluno WHERE cidade='Salvador' AND matricula='300';
mysql> SELECT nome FROM aluno WHERE cidade='Salvador' OR matricula='300';
Precedência de operadores
- Uma cláusula WHERE pode combinar vários operadores AND e OR.
- O operador AND tem maior precedência que o operador OR.
- Os operadores de comparação tem maior precedência que os conectivos AND e OR.
- Todos os operadores de comparação tem a mesma precedência.
- Operadores de igual precedência são calculados da esquerda para a direita.
- A precedência de operadores pode ser cancelada através de parênteses:
mysql> SELECT nome FROM alunos WHERE matricula > '100' AND
(cidade = 'Nova Friburgo' OR codcurso='01');
Operador LIKE
Busca valores alfanuméricos incompletos a partir de um ou mais
caracteres:
- % - corresponde a uma seqüência qualquer de 0 ou mais caracteres.
- "_" - corresponde a qualquer caracter.
mysql> SELECT nome FROM alunos WHERE nome LIKE 'J%';
// lista todos os nomes que comecem com J
mysql> SELECT nome FROM alunos where nome LIKE '_________';
// lista todos os nomes que possuem exatamente 9 caracteres.
Operador BETWEEN
Busca valores entre uma faixa especificada:
mysql> SELECT nome FROM alunos WHERE matricula BETWEEN '100' AND '300';
Operador IN
Utiliza-se o operador IN para testar valores em uma lista específica:
mysql> SELECT nome FROM alunos WHERE codcurso IN ('01', '02');