-- Sem DISTINCT: lista o id_escola de cada professor (com repetição)
SELECT id_escola
FROM professor;| id_escola |
|---|
| 21 |
| 21 |
| 31 |
| 31 |
| 31 |
| 11 |
| 11 |
A cláusula SELECT determina quais colunas (ou expressões) aparecem no resultado de uma consulta. Ela oferece recursos além de simplesmente listar nomes de colunas: eliminação de duplicatas, expressões aritméticas, aliases e literais.
Por padrão, o SQL não elimina linhas duplicadas no resultado — comportamento chamado de ALL. Para remover duplicatas, usa-se a palavra-chave DISTINCT.
| id_escola |
|---|
| 21 |
| 21 |
| 31 |
| 31 |
| 31 |
| 11 |
| 11 |
| id_escola |
|---|
| 11 |
| 21 |
| 31 |
Os 7 professores são distribuídos entre 3 escolas distintas (ids: 11, 21, 31). DISTINCT elimina as repetições.
O asterisco * seleciona todas as colunas da tabela:
| id_prof | nome | id_escola | ch_semanal | salario |
|---|---|---|---|---|
| 21200001 | Eduarda Souza | 21 | 20 | 3200 |
| 21400002 | Felipe Araujo | 21 | 40 | 6400 |
| 31200001 | Gustavo Costa | 31 | 20 | 3300 |
| 31400002 | Helena Carvalho | 31 | 40 | 6700 |
| 31200003 | Igor Melo | 31 | 20 | 3100 |
| 11400001 | Bruno Teixeira | 11 | 40 | 6500 |
| 11400002 | Carla Pinto | 11 | 40 | 6600 |
Embora prático para exploração, o uso de SELECT * em aplicações de produção é desaconselhado, pois o resultado depende da estrutura atual da tabela e pode mudar se colunas forem adicionadas ou reordenadas.
A cláusula SELECT pode conter expressões aritméticas com os operadores +, -, * e /:
| nome | id_escola | salario | salario_reajustado |
|---|---|---|---|
| Eduarda Souza | 21 | 3200 | 3520 |
| Felipe Araujo | 21 | 6400 | 7040 |
| Gustavo Costa | 31 | 3300 | 3630 |
| Helena Carvalho | 31 | 6700 | 7370 |
| Igor Melo | 31 | 3100 | 3410 |
| Bruno Teixeira | 11 | 6500 | 7150 |
| Carla Pinto | 11 | 6600 | 7260 |
A expressão salario * 1.10 não altera o banco de dados. Ela cria uma coluna calculada apenas no resultado da consulta. Para alterar os dados de fato, seria necessário usar UPDATE (ver seção 3.10).
A palavra-chave AS permite renomear colunas e tabelas no resultado — o nome alternativo é chamado de alias:
| professor | escola_id |
|---|---|
| Gustavo Costa | 31 |
| Helena Carvalho | 31 |
| Igor Melo | 31 |
Aliases de tabela são especialmente úteis em consultas com múltiplas tabelas:
É possível incluir valores literais (constantes) na cláusula SELECT:
| instituicao | nome | id_escola |
|---|---|---|
| UnDF | Gustavo Costa | 31 |
| UnDF | Helena Carvalho | 31 |
| UnDF | Igor Melo | 31 |
Resumo da cláusula SELECT:
SELECT coluna — projeta uma coluna específicaSELECT DISTINCT coluna — elimina duplicatasSELECT * — projeta todas as colunasSELECT expressão AS alias — projeta uma expressão com nome alternativoSELECT 'literal' AS alias — inclui uma constante no resultado| nome | ch_semanal | salario | regime |
|---|---|---|---|
| Bruno Teixeira | 40 | 6500 | Regime integral |
| Carla Pinto | 40 | 6600 | Regime integral |
| Felipe Araujo | 40 | 6400 | Regime integral |
| Helena Carvalho | 40 | 6700 | Regime integral |
| Eduarda Souza | 20 | 3200 | Regime parcial |
| Gustavo Costa | 20 | 3300 | Regime parcial |
| Igor Melo | 20 | 3100 | Regime parcial |
| id_turma | id_prof | sala |
|---|---|---|
| 1110201/2023-2/1 | 11400001 | ESG-SALA-005 |
| 1110201/2024-2/1 | 11400001 | ESG-SALA-013 |
| 1110201/2025-2/1 | 11400001 | ESG-SALA-025 |
| 1110202/2023-2/1 | 11400001 | ESG-SALA-012 |
| 1110202/2024-2/1 | 11400001 | ESG-SALA-001 |
| 1110202/2025-2/1 | 11400002 | ESG-SALA-007 |
| 1110401/2024-2/1 | 11400001 | ESG-SALA-009 |
| 1110401/2025-2/1 | 11400001 | ESG-SALA-021 |
| 1110402/2024-2/1 | 11400001 | ESG-SALA-001 |
| 1110402/2025-2/1 | 11400001 | ESG-SALA-005 |
| id_escola | ch_semanal |
|---|---|
| 11 | 40 |
| 21 | 20 |
| 21 | 40 |
| 31 | 20 |
| 31 | 40 |
DISTINCT com múltiplas colunas elimina duplicatas de combinações — não de cada coluna individualmente. A consulta acima retorna cada par (id_escola, ch_semanal) único.