left" align=left>Compare agora com a sintaxe da Listagem 1. Além dos comandos já apresentados, essa nova sintaxe traz: Distinct, All, Join, Group By e Having. Esses comandos podem ser utilizados em conjunto e serão demonstrados no decorrer deste artigo. Além deles, mostraremos ainda consultas que utilizam dados provenientes de outras consultas (subconsultas) e união entre duas ou mais consultas.
Listagem 1. Sintaxe com comandos avançados
SELECT
[DISTINCT | ALL] * | <coluna> [, <coluna> …]
FROM <tabela> [, <tabela> …]
[[LEFT|RIGHT|FULL[OUTER]][INNER] JOIN <tabela>
ON <condição> [, <condição> …]]]
[WHERE <condição> [, <condição> …]]
[GROUP BY <coluna> [, <coluna> …]]
[HAVING <condição> [, <condição> …]]
[ORDER BY <coluna> [, <coluna> …]]
Distinct e All
Os comandos Distinct e All são usados na especificação das colunas. O comando Distinct faz com que registros idênticos sejam mostrados uma única vez, ou seja, evita duplicidade de registros. Já o All faz justamente o contrário, mostra todo e qualquer registro (essa é a opção default, portanto não precisa ser utilizada). Como exemplo, veja a lista de todas as turmas de cada curso já realizado, no código a seguir:
SELECT DISTINCT nome, nr_turma
FROM aluno_curso ac, curso c
WHERE ac.id_curso = c.id_curso
...