2.5. Consultar tabelas

Para trazer os dados de uma tabela, a tabela deve ser consultada. Para esta finalidade é utilizado o comando SELECT do SQL. Este comando é dividido em lista de seleção (a parte que especifica as colunas a serem trazidas), lista de tabelas (a parte que especifica as tabelas de onde os dados vão ser trazidos), e uma qualificação opcional (a parte onde são especificadas as restrições). Por exemplo, para trazer todas as linhas da tabela clima digite:

SELECT * FROM clima;

(aqui * é uma forma abreviada de "todas as colunas"). [1] Seriam obtidos os mesmos resultados usando:

SELECT cidade, temp_min, temp_max, prcp, data FROM clima;

A saída deve ser:


     cidade      | temp_min | temp_max | prcp |    data
-----------------+----------+----------+------+------------
 São Francisco   |       46 |       50 | 0.25 | 1994-11-27
 São Francisco   |       43 |       57 |    0 | 1994-11-29
 Hayward         |       37 |       54 |      | 1994-11-29
(3 linhas)

Na lista de seleção podem ser especificadas expressões, e não apenas referências a colunas. Por exemplo, pode ser escrito

SELECT cidade, (temp_max+temp_min)/2 AS temp_media, data FROM clima;

devendo produzir:


     cidade      | temp_media |    data
-----------------+------------+------------
 São Francisco   |         48 | 1994-11-27
 São Francisco   |         50 | 1994-11-29
 Hayward         |         45 | 1994-11-29
(3 linhas)

Perceba que a cláusula AS foi utilizada para mudar o nome da coluna de saída (a cláusula AS é opcional).

A consulta pode ser "qualificada", adicionando a cláusula WHERE para especificar as linhas desejadas. A cláusula WHERE contém expressões booleanas (valor verdade), e somente são retornadas as linhas para as quais o valor da expressão booleana for verdade. São permitidos os operadores booleanos usuais (AND, OR e NOT) na qualificação. Por exemplo, o comando abaixo retorna os registros do clima de São Francisco nos dias de chuva:

SELECT * FROM clima
    WHERE cidade = 'São Francisco' AND prcp > 0.0;

Resultado:


     cidade      | temp_min | temp_max | prcp |    data
-----------------+----------+----------+------+------------
 São Francisco   |       46 |       50 | 0.25 | 1994-11-27
(1 linha)

Como nota final, pode-se desejar que os resultados da consulta retornem em uma determinada ordem, ou com as linhas duplicadas removidas:

SELECT DISTINCT cidade
    FROM clima
    ORDER BY cidade;

    cidade
---------------
 Hayward
 São Francisco
(2 linhas)

As cláusulas DISTINCT e ORDER BY podem ser usadas separadamente, é claro.

Notas

[1]

Embora o SELECT * seja útil para consultas rápidas, geralmente é considerado um estilo ruim para código em produção, uma vez que a adição de uma coluna à tabela mudaria os resultados.

SourceForge.net Logo