Quando você insere sua consulta no SQL Editor ou cria um cálculo, você usa sintaxe Presto SQL. Por exemplo, no Editor SQL, você pode compor uma consulta SELECT completa para encontrar as fontes a serem incluídas e, em seguida, filtrar seus dados:
SELECT DISTINCT column, AGG_FUNC(column_or_expression), ... FROM source JOIN another_source ON source.column = another_source.column WHERE constraint_expression GROUP BY column HAVING constraint_expression ORDER BY column ASC/DESC LIMIT count OFFSET COUNT
Observação: Para garantir a integridade dos dados, o editor SQL suporta instruções somente de leitura, como SELECT, mas não instruções de leitura/gravação, como INSERT ou DELETE.
Além dessas cláusulas e instruções, a sintaxe do SQL pode conter várias funções e operadores para definir melhor os resultados e realizar cálculos:
- Funções de cadeia de texto
- Funções de data e hora
- Funções de conversão
- Expressões condicionais
- Funções e operadores agregados e matemáticos
- Funções JSON
- Funções e operadores de comparação
Ordem de operações
Embora nem todas as consultas incluam todas as cláusulas, cada parte da instrução SQL é executada em uma sequência específica:
-
FROMandJOIN, para determinar as fontes dos dados que estão sendo consultados -
WHERE, para incluir somente dados que atendam a critérios específicos -
GROUP BY, para resumir os dados com base em valores comuns -
HAVING, para incluir somente dados de linhas agregadas que atendam a critérios específicos -
SELECTouSELECT DISTINCT, para especificar ainda mais quais dados de origem você deve incluir -
ORDER BY, para especificar como ordenar os dados nos resultados -
LIMITeOFFSET, para especificar quantos e quais registros da consulta você deve incluir
Entender a ordem em que a consulta executa a sintaxe SQL pode ajudar você a identificar os resultados disponíveis em cada etapa.
FROM e JOIN
Para determinar os dados que estão sendo consultados, a consulta executa primeiro o comando FROM, que especifica a fonte da qual você deve selecionar os dados.
Para incluir dados de várias fontes, inclua uma cláusula JOIN para combinar as linhas das fontes com base em uma coluna relacionada:
-
INNER JOINseleciona os registros correspondentes em e em ambas as fontes. -
LEFT JOINseleciona todos os registros da fonte da esquerda e também qualquer correspondência na fonte da direita. -
RIGHT JOINseleciona todos os registros da fonte da direita e também qualquer correspondência na fonte da esquerda. -
FULL JOINseleciona todos os registros em ou na fonte.
Para compilar dados de mais de duas fontes, você pode aplicar várias cláusulas JOIN para combinar as fontes em ordem. Por exemplo, para combinar pedidos com dados sobre seus clientes e remetentes:
SELECT Orders.OrderID, Customers.CustomerName, Shippers.ShipperName FROM ((Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID) INNER JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID)
Observação: No Query Builder, você cria uma cláusula JOIN como um relacionamento .
WHERE
Depois que a consulta determina suas origens com base nas cláusulas FROM e JOIN, ela executa a cláusula WHERE para filtrar os resultados apenas para os dados que atendem a critérios específicos.
Grupo por
Se a consulta contiver funções de agregação, ela poderá incluir uma instrução GROUP BY para resumir suas linhas com base em valores comuns na coluna especificada, como GROUP BY column name(s).
HAVING
Se a consulta incluir uma instrução GROUP BY, ela aplicará as restrições da cláusula HAVING. Semelhante a WHERE, HAVING inclui somente dados de linhas agregadas que atendem aos critérios específicos e descarta todas as linhas que não atendem.
SELECT ou SELECT DISTINCT
Depois que a consulta aplica as restrições da cláusula WHERE às fontes determinadas pelas cláusulas FROM e JOIN e agrupa linhas com base na instrução GROUP BY e na cláusula HAVING, ela aplica quaisquer expressões na instrução SELECT para especificar ainda mais os dados a serem incluídos. Por exemplo:
-
SELECT column1, column2 FROM sourceretorna apenas os camposcolumn1ecolumn2fromsource. -
SELECT * FROM sourceretorna todos os campos desource.
Se a consulta incluir uma instrução SELECT DISTINCT, ela excluirá todas as linhas com valores duplicados de cada coluna.
Ordenar por
Se a consulta incluir a palavra-chave ORDER BY, ela classificará os resultados em ordem crescente ou decrescente -ASC ou DESC- com base na coluna especificada. Por exemplo, ORDER BY field_header ASC.
Para classificar de acordo com vários campos, separe cada um deles com uma vírgula, como, por exemplo, ORDER BY field_header1 ASC, field_header2 DESC.
Observação: O valor padrão de ORDER BY é ASC. Se você não especificar ASC ou DESC após o nome do campo na instrução ORDER BY, ele será classificado automaticamente em ordem crescente.
LIMIT e OFFSET
Por fim, a consulta descarta todas as linhas que estejam fora do intervalo das cláusulas LIMIT e OFFSET.
- Para retornar um número específico de registros nos resultados, inclua uma cláusula
LIMIT. Por exemplo, para retornar os primeiros 30 registros de uma fonte,SELECT * FROM source LIMIT 30. - Para retornar um número específico de registros, mas não começar com o primeiro registro na fonte, adicione uma cláusula
OFFSETcom o número de registros a serem ignorados. Por exemplo, para retornar dez registros começando com o 16º,SELECT * FROM source LIMIT 10 OFFSET 15.