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.
[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. |