especificação_de_consulta :
cláusula_SELECT
cláusula_FROM
[ cláusula_WHERE ]
[ cláusula_GROUP_BY ]
[ cláusula_HAVING ]
Retorna uma tabela definida pelas cláusulas SELECT, FROM e opcionalmente pelas cláusulas WHERE, GROUP BY e HAVING.
O resultado de uma especificação de consulta é a tabela formada pelas colunas definidas na cláusula SELECT a partir das tabelas especificadas na cláusula FROM e segundo as restrições das demais cláusulas. Cada coluna da tabela resultante tem o mesmo tipo, tamanho, precisão e escala da expressão da qual é derivada.
Se o resultado das cláusulas for uma tabela agrupada de zero grupos, o resultado da especificação de consulta é uma tabela vazia.
Apenas uma função DISTINCT AVG, COUNT ou SUM deve aparecer em uma especificação de consulta, a não ser que esteja presente em uma subconsulta.
Uma especificação de consulta é dita atualizável se:
Cada uma das cláusulas de uma especificação de consulta realiza determinada operação sobre uma tabela, retornando uma outra tabela modificada de algum modo.
A primeira cláusula a ser executada é a cláusula FROM que faz o produto cartesiano entre as tabelas especificadas. A seguir, a cláusula WHERE, se houver, seleciona linhas da tabela gerada pela cláusula anterior de acordo com uma condição. A cláusula GROUP BY agrupa uma tabela e a cláusula HAVING seleciona grupos da tabela segundo uma condição.
Finalmente, a cláusula SELECT é executada sobre a tabela resultante da aplicação das demais cláusulas e indica as colunas que pertencerão a tabela retornada pela consulta.
Veja também Cláusulas.