

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# AWS IoT Referência SQL
<a name="iot-sql-reference"></a>

Em AWS IoT, as regras são definidas usando uma sintaxe semelhante a SQL. As declarações do SQL são compostas por três tipos de cláusulas:

**SET**  
(Opcional) Define variáveis que você pode reutilizar em todas as instruções SQL e modelos de substituição. Atribua valores às variáveis usando expressões. Faça referência a essas variáveis nas cláusulas SELECT e WHERE e nos modelos de substituição de ações.  
A cláusula SET suporta [Tipos de dados](iot-sql-data-types.md)[Operadores](iot-sql-operators.md),[Funções](iot-sql-functions.md),[Literais](iot-sql-literals.md),[Declarações de caso](iot-sql-case.md),,[Extensões JSON](iot-sql-json.md), [Variáveis](iot-sql-set.md#iot-sql-set-usage) e. [Consultas de objeto aninhado](iot-sql-nested-queries.md)

**SELECT**  
(Obrigatório) Extrai informações da carga útil da mensagem de entrada e executa transformações nas informações. As mensagens a serem usadas são identificadas pelo [filtro de tópico](topics.md#topicfilters) especificado na cláusula FROM.  
A cláusula SELECT oferece suporte a [Tipos de dados](iot-sql-data-types.md) [Operadores](iot-sql-operators.md) [Funções](iot-sql-functions.md)[Literais](iot-sql-literals.md),[Declarações de caso](iot-sql-case.md),,[Extensões JSON](iot-sql-json.md),[Modelos de substituição](iot-substitution-templates.md),, [Variáveis](iot-sql-set.md#iot-sql-set-usage)[Consultas de objeto aninhado](iot-sql-nested-queries.md), e. [Cargas binárias](binary-payloads.md)

**FROM**  
O [filtro de tópicos](topics.md#topicfilters) de mensagens do MQTT que identifica as mensagens das quais extrair dados. A regra é ativada para cada mensagem enviada para um tópico MQTT que corresponda ao filtro de tópico especificado aqui. Obrigatório para regras que são ativadas por mensagens que passam pelo agente de mensagens. Opcional para regras que só são ativadas usando o atributo [Ingestão básica](iot-basic-ingest.md). 

**WHERE**  
(Opcional) Adiciona lógica condicional que determina se as ações especificadas por uma regra são executadas.   
A cláusula WHERE suporta [Tipos de dados](iot-sql-data-types.md)[Operadores](iot-sql-operators.md),[Funções](iot-sql-functions.md),[Literais](iot-sql-literals.md),[Declarações de caso](iot-sql-case.md),[Extensões JSON](iot-sql-json.md),, [Variáveis](iot-sql-set.md#iot-sql-set-usage) e. [Consultas de objeto aninhado](iot-sql-nested-queries.md)

Um exemplo de declaração do SQL é semelhante a:

```
SELECT color AS rgb FROM 'topic/subtopic' WHERE temperature > 50
```

Um exemplo de mensagem MQTT (também chamada de carga útil de entrada) é semelhante a:

```
{
    "color":"red",
    "temperature":100
}
```

Se essa mensagem for publicada no tópico `'topic/subtopic'`, a regra será acionada, e a declaração do SQL será avaliada. A declaração do SQL extrairá o valor da propriedade `color` se a propriedade `"temperature"` for superior a 50. A cláusula WHERE especifica a condição `temperature > 50`. A palavra-chave `AS` renomeia a propriedade `"color"` para `"rgb"`. O resultado (também chamado de *carga útil de saída*) é semelhante a:

```
{
    "rgb":"red"
}
```

Esses dados são encaminhados para a ação da regra, que envia os dados para realizar mais processamento. Para saber mais sobre as ações de regra, consulte [AWS IoT ações de regras](iot-rule-actions.md).

**nota**  
Atualmente, não há suporte para comentários na sintaxe AWS IoT SQL.  
Nomes de atributos com espaços não podem ser usados como nomes de campo na instrução SQL. Embora a carga de entrada possa ter nomes de atributos com espaços, esses nomes não podem ser usados na instrução SQL. No entanto, eles serão passados para a carga de saída se você usar uma especificação de nome de campo curinga (\*).