Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:
Databricks SQL
Databricks Runtime
Este artigo descreve a conformidade ANSI no Databricks Runtime. Para o modo ANSI no Databricks SQL, consulte ANSI_MODE.
O Spark SQL tem duas opções para dar suporte à conformidade com o padrão ANSI SQL: spark.sql.ansi.enabled e spark.sql.storeAssignmentPolicy.
spark.sql.ansi.enabled(Modo ANSI)- Utiliza um dialeto SQL compatível com ANSI em vez do dialeto compatível com Hive.
- Gera exceções de runtime para entradas inválidas em vez de devolver null.
- Ativado por defeito no Apache Spark 4.0 e Databricks Runtime 17.0 e superiores.
spark.sql.storeAssignmentPolicy(política de atribuição de loja)- Controla o casting implícito durante as inserções de tabelas.
- Por defeito, é
ANSIe é independente despark.sql.ansi.enabled.
A tabela a seguir resume o comportamento:
| Nome de Propriedade | Predefinido | Significado |
|---|---|---|
spark.sql.ansi.enabled |
true | Quando é verdade, o Spark tenta conformar-se à especificação ANSI SQL:
|
spark.sql.storeAssignmentPolicy |
ANSI (Instituto Nacional Americano de Normalização) | Ao armazenar um valor em uma coluna com um tipo de dados diferente, o Spark executa a conversão de tipo. Existem três políticas para o tipo de regras de coerção: ANSI, legacy, e strict.
|
As subseções a seguir apresentam alterações de comportamento em operações aritméticas, conversões de tipo e análise SQL quando o modo ANSI está habilitado. Para conversões de tipo no Spark SQL, existem três tipos deles e este artigo irá apresentá-los um a um: cast, atribuição de armazenamento e coerção de tipo.
Operações aritméticas
No Spark SQL, as operações aritméticas executadas em tipos numéricos (com exceção do decimal) não são verificadas quanto a estouros por padrão.
Isso significa que, no caso de uma operação causar estouros, o resultado é o mesmo com a operação correspondente em um programa Java ou Scala (Por exemplo, se a soma de 2 inteiros for maior do que o valor máximo representável, o resultado é um número negativo). Por outro lado, o Spark SQL retorna null para excessos de decimais.
Quando spark.sql.ansi.enabled é definido como true e ocorre um overflow em operações aritméticas numéricas e de intervalo, lança-se uma exceção aritmética em tempo de execução.
-- `spark.sql.ansi.enabled=true`
> SELECT 2147483647 + 1;
error: integer overflow
-- `spark.sql.ansi.enabled=false`
> SELECT 2147483647 + 1;
-2147483648
Elenco
Quando spark.sql.ansi.enabled é definido como true, a conversão explícita pela sintaxe CAST lança uma exceção em tempo de execução para padrões de conversão ilegais definidos no padrão, como conversões de uma cadeia de caracteres para um inteiro.
A CAST cláusula do modo Spark ANSI segue as regras de sintaxe da seção 6.13 "cast specification" na ISO/IEC 9075-2:2011 Tecnologia da informação — Linguagens de banco de dados - SQL — Parte 2: Foundation (SQL/Foundation), exceto que permite especialmente as seguintes conversões de tipo diretas que não são permitidas de acordo com o padrão ANSI:
- TipoNumérico <=> TipoBooleano
- TipoString <=> TipoBinário
As combinações válidas de tipo de dados de origem e destino em uma expressão CAST são fornecidas pela tabela a seguir.
"Y" indica que a combinação é sintaticamente válida sem restrições e "N" indica que a combinação não é válida.
| SourceTarget | Numérico | Cordão | Data | Carimbo de Data e Hora | Intervalo | booleano | Binário | Matriz | Mapa | Estrutura |
|---|---|---|---|---|---|---|---|---|---|---|
| Numérico | Y | Y | N | N | N | Y | N | N | N | N |
| Cordão | Y | Y | Y | Y | Y | Y | Y | N | N | N |
| Data | N | Y | Y | Y | N | N | N | N | N | N |
| Carimbo de Data e Hora | N | Y | Y | Y | N | N | N | N | N | N |
| Intervalo | N | Y | N | N | Y | N | N | N | N | N |
| booleano | Y | Y | N | N | N | Y | N | N | N | N |
| Binário | Y | N | N | N | N | N | Y | N | N | N |
| Matriz | N | N | N | N | N | N | N | Y | N | N |
| Mapa | N | N | N | N | N | N | N | N | Y | N |
| Estrutura | N | N | N | N | N | N | N | N | N | Y |
-- Examples of explicit casting
-- `spark.sql.ansi.enabled=true`
> SELECT CAST('a' AS INT);
ERROR: [CAST_INVALID_INPUT] The value 'a' of the type "STRING" cannot be cast to "INT" because it is malformed.
> SELECT CAST(2147483648L AS INT);
ERROR: [CAST_OVERFLOW] The value 2147483648L of the type "BIGINT" cannot be cast to "INT" due to an overflow.
> SELECT CAST(DATE'2020-01-01' AS INT)
ERROR: [DATATYPE_MISMATCH.CAST_WITH_FUNC_SUGGESTION] Cannot resolve "CAST(DATE '2020-01-01' AS INT)" due to data type mismatch: cannot cast "DATE" to "INT".
-- `spark.sql.ansi.enabled=false`
> SELECT cast('a' AS INT);
null
> SELECT CAST(2147483648L AS INT);
-2147483648
> SELECT CAST(DATE'2020-01-01' AS INT);
null
Atribuição de loja
O padrão da configuração spark.sql.storeAssignmentPolicy é .ANSI Com essa configuração, quando os tipos de dados de valores de origem não correspondem aos tipos de coluna de destino, o INSERT Spark SQL adiciona automaticamente cláusulas ANSI CAST à instrução.
Durante a inserção da tabela de acordo com esta política, o Spark verifica e rejeita conversões inválidas, lançando uma exceção para garantir a qualidade dos dados. Isso significa que, se uma tentativa de inserção falhar devido a uma incompatibilidade de tipo, isso não resultará em nenhum dado sendo parcialmente gravado na tabela.
Exemplos:
-- spark.sql.storeAssignmentPolicy=ANSI
> CREATE TABLE test(i INT);
> INSERT INTO test VALUES (2147483648L);
ERROR: [CAST_OVERFLOW_IN_TABLE_INSERT] Fail to insert a value of "BIGINT" type into the "INT" type column `i` due to an overflow.
> INSERT INTO test VALUES ('a');
ERROR: [CAST_INVALID_INPUT ERROR] The value 'a' of the type "STRING" cannot be cast to "INT" because it is malformed
Estes exemplos mostram o Spark SQL impedindo que dados incompatíveis sejam inseridos, mantendo assim a integridade dos dados.
Quando o spark.sql.storeAssignmentPolicy é definido como LEGACY, o Spark SQL reverte para o comportamento predominante até o Spark 2.x. Neste modo, em vez de usar ANSI CAST, ele aplica operações CAST herdadas. De acordo com esta política, conversões inválidas durante inserções de tabela resultam na inserção de valores NULL ou valores incorretos, em vez de lançar uma exceção.
Exemplos:
-- spark.sql.storeAssignmentPolicy=LEGACY
> CREATE TABLE test(i INT);
> INSERT INTO test VALUES (2147483648L);
> INSERT INTO test VALUES ('a');
> SELECT * FROM test;
-- Results
-- -2147483648 (incorrect value due to overflow)
-- null (cannot cast 'a' to INT)
Tipo de coerção
Promoção de tipo e precedência
Quando spark.sql.ansi.enabled é definido como true, o Spark SQL usa várias regras que regem como os conflitos entre tipos de dados são resolvidos.
No centro dessa resolução de conflitos está a Lista de Precedência de Tipo, que define se os valores de um determinado tipo de dados podem ser promovidos para outro tipo de dados implicitamente.
| Tipo de dados | lista de precedências (da mais estreita para a mais larga) |
|---|---|
| byte | Byte -> Pequeno -> Int -> Longo -> Decimal -> Float* -> Double |
| Curto | Curto -> Int -> Longo -> Decimal-> Float* -> Duplo |
| int | Int -> Longo -> Decimal -> Float* -> Duplo |
| Longo | Longo -> Decimal -> Float* -> Duplo |
| Decimal | Decimal -> Float* -> Duplo |
| Flutuar | Flutuador -> Duplo |
| Duplo | Duplo |
| Data | Data -> Carimbo de data/hora |
| Carimbo de Data e Hora | Carimbo de Data e Hora |
| Cordão | Cordão |
| Binário | Binário |
| booleano | booleano |
| Intervalo | Intervalo |
| Mapa | Mapa** |
| Matriz | Matriz** |
| Estrutura | Estrutura** |
- Para a resolução do tipo menos comum, o tipo de dado 'float' é ignorado para evitar perda de precisão.
** Para um tipo complexo, a regra de precedência aplica-se recursivamente aos seus elementos componentes.
Aplicam-se regras especiais para o tipo String e NULL não tipado. Um NULL pode ser promovido para qualquer outro tipo, enquanto um String pode ser promovido para qualquer tipo de dados simples.
Esta é uma representação gráfica da lista de precedências como uma árvore direcionada: 
Resolução de tipo menos comum
O tipo menos comum de um conjunto de tipos é o tipo mais estreito acessível a partir da lista de precedência por todos os elementos do conjunto de tipos.
A resolução de tipo menos comum é usada para:
- Decida se uma função que espera um parâmetro de um tipo pode ser invocada usando um argumento de um tipo mais restrito.
- Derive o tipo de argumento para funções que esperam um tipo de argumento partilhado para vários parâmetros, como coalesce, mínimo ou máximo.
- Derive os tipos de operandos para operadores, como operações aritméticas ou comparações.
- Derive o tipo de resultado para expressões como a expressão de caso.
- Derive os tipos de elemento, chave ou valor para construtores de matriz e mapa.
Regras especiais são aplicadas se o tipo menos comum resultar em FLOAT. Com valores de tipo float, se qualquer um dos tipos for INT, BIGINT ou DECIMAL, o tipo menos comum é empurrado para DOUBLE para evitar a perda potencial de dígitos.
-- The coalesce function accepts any set of argument types as long as they share a least common type.
-- The result type is the least common type of the arguments.
> SET spark.sql.ansi.enabled=true;
> SELECT typeof(coalesce(1Y, 1L, NULL));
BIGINT
> SELECT typeof(coalesce(1, DATE'2020-01-01'));
Error: Incompatible types [INT, DATE]
> SELECT typeof(coalesce(ARRAY(1Y), ARRAY(1L)));
ARRAY<BIGINT>
> SELECT typeof(coalesce(1, 1F));
DOUBLE
> SELECT typeof(coalesce(1L, 1F));
DOUBLE
> SELECT (typeof(coalesce(1BD, 1F)));
DOUBLE
-- The substring function expects arguments of type INT for the start and length parameters.
> SELECT substring('hello', 1Y, 2);
he
> SELECT substring('hello', '1', 2);
he
> SELECT substring('hello', 1L, 2);
Error: Argument 2 requires an INT type.
> SELECT substring('hello', str, 2) FROM VALUES(CAST('1' AS STRING)) AS T(str);
Error: Argument 2 requires an INT type.
Funções SQL
O comportamento de algumas funções SQL pode ser diferente no modo ANSI (spark.sql.ansi.enabled=true).
-
size: Esta função retorna null para entrada nula no modo ANSI. -
element_at:- Esta função lança
ArrayIndexOutOfBoundsExceptionse estiver usando índices inválidos. - Esta função lança
NoSuchElementExceptionse a chave não existir no mapa.
- Esta função lança
-
elt: Esta função lançaArrayIndexOutOfBoundsExceptionse estiver usando índices inválidos. -
make_date: Esta função falha com uma exceção se a data do resultado for inválida. -
make_timestamp: Esta função falhará com uma exceção se o carimbo de data/hora do resultado for inválido. -
make_interval: Esta função falha com uma exceção se o intervalo de resultados for inválido. -
next_day: Esta função lançaIllegalArgumentExceptionse a entrada não for um dia da semana válido. -
parse_url: Esta função lança uma exceçãoIllegalArgumentExceptionse uma string de entrada não for uma URL válida. -
to_date: Esta função falhará com uma exceção se a cadeia de caracteres de entrada não puder ser analisada ou se a cadeia de caracteres de padrão for inválida. -
to_timestamp: Esta função falhará com uma exceção se a cadeia de caracteres de entrada não puder ser analisada ou se a cadeia de caracteres de padrão for inválida. -
to_unix_timestamp: Esta função falhará com uma exceção se a cadeia de caracteres de entrada não puder ser analisada ou se a cadeia de caracteres de padrão for inválida. -
unix_timestamp: Esta função falhará com uma exceção se a cadeia de caracteres de entrada não puder ser analisada ou se a cadeia de caracteres de padrão for inválida.
Operadores SQL
O comportamento de alguns operadores SQL pode ser diferente no modo ANSI (spark.sql.ansi.enabled=true).
-
array_col[index]: Este operador lançaArrayIndexOutOfBoundsExceptionse estiver usando índices inválidos. -
map_col[key]: Este operador lança a exceçãoNoSuchElementExceptionse a chave não existir no mapa. -
CAST(string_col AS TIMESTAMP): Este operador falha com uma exceção se a cadeia de caracteres de entrada não puder ser analisada. -
CAST(string_col AS DATE): Este operador falha com uma exceção se a cadeia de caracteres de entrada não puder ser analisada.
Funções úteis para o modo ANSI
Quando o modo ANSI está ativado, ele lança exceções para operações inválidas. Você pode usar as seguintes funções SQL para suprimir essas exceções.
-
try_cast: idêntico aoCAST, exceto que ele retornaNULLresultado em vez de lançar uma exceção no erro de tempo de execução. -
try_add: idêntico ao operador+add, exceto que retorna oNULLresultado em vez de lançar uma exceção no caso de um estouro de valor integral. -
try_divide: idêntico ao operador/de divisão, exceto que ele retornaNULLresultado em vez de lançar uma exceção na divisão 0.
Palavras-chave SQL
Quando spark.sql.ansi.enabled=true e spark.sql.ansi.enforceReservedKeywords=true, o Spark SQL usa o analisador ANSI.
Por padrão, spark.sql.ansi.enforceReservedKeywords é false.
No modo analisador ANSI, as palavras-chave dividem-se em duas categorias:
- Reservado: Não pode ser usado como identificador (tabela, vista, coluna, função, alias, etc.).
- Não reservadas: Atuam como palavras-chave apenas em contextos específicos; caso contrário, podem ser usados como identificadores. Por exemplo,
EXPLAIN SELECT ...é um comando, masEXPLAINpode ser usado como identificador noutro local.
Quando o analisador ANSI não está em uso, as palavras-chave enquadram-se em:
- Não reservado: Mesma definição mencionada acima.
- Estritamente não reservado: Semelhante ao não reservado, mas não pode ser usado como alias de tabela.
Abaixo está uma lista de todas as palavras-chave no Spark SQL.
| Palavra-chave | Modo ANSI do Spark SQL | Modo padrão do Spark SQL | SQL-2016 |
|---|---|---|---|
| ADICIONAR | não reservado | não reservado | não reservado |
| DEPOIS | não reservado | não reservado | não reservado |
| TODOS | reservado | não reservado | reservado |
| ALTERAR | não reservado | não reservado | reservado |
| SEMPRE | não reservado | não reservado | não reservado |
| ANALISAR | não reservado | não reservado | não reservado |
| E AINDA | reservado | não reservado | reservado |
| ANTI | não reservado | estrito-não reservado | não reservado |
| QUALQUER | reservado | não reservado | reservado |
| ARQUIVO | não reservado | não reservado | não reservado |
| MATRIZ | não reservado | não reservado | reservado |
| COMO | reservado | não reservado | reservado |
| ASC | não reservado | não reservado | não reservado |
| EM | não reservado | não reservado | reservado |
| AUTORIZAÇÃO | reservado | não reservado | reservado |
| ENTRE | não reservado | não reservado | reservado |
| AMBOS | reservado | não reservado | reservado |
| BALDE | não reservado | não reservado | não reservado |
| BALDES | não reservado | não reservado | não reservado |
| Por | não reservado | não reservado | reservado |
| cache | não reservado | não reservado | não reservado |
| CASCATA | não reservado | não reservado | não reservado |
| Caso | reservado | não reservado | reservado |
| elenco | reservado | não reservado | reservado |
| MUDANÇA | não reservado | não reservado | não reservado |
| VERIFICAR | reservado | não reservado | reservado |
| LIMPAR | não reservado | não reservado | não reservado |
| AGLOMERAÇÃO | não reservado | não reservado | não reservado |
| AGRUPADOS | não reservado | não reservado | não reservado |
| CODEGEN | não reservado | não reservado | não reservado |
| COLISÃO | reservado | não reservado | reservado |
| COLEÇÃO | não reservado | não reservado | não reservado |
| COLUMN | reservado | não reservado | reservado |
| COLUMNS | não reservado | não reservado | não reservado |
| COMENTAR | não reservado | não reservado | não reservado |
| COMPROMETER-SE | não reservado | não reservado | reservado |
| COMPACTO | não reservado | não reservado | não reservado |
| COMPAÇÕES | não reservado | não reservado | não reservado |
| COMPUTAÇÃO | não reservado | não reservado | não reservado |
| CONCATENAR | não reservado | não reservado | não reservado |
| CONSTRAINT | reservado | não reservado | reservado |
| CUSTO | não reservado | não reservado | não reservado |
| CRIAR | reservado | não reservado | reservado |
| CRUZAMENTO | reservado | estrito-não reservado | reservado |
| CUBO | não reservado | não reservado | reservado |
| ATUAL | não reservado | não reservado | reservado |
| DIA_ATUAL | reservado | não reservado | reservado |
| HORA_ATUAL | reservado | não reservado | reservado |
| CURRENT_TIMESTAMP | reservado | não reservado | reservado |
| UTILIZADOR_ATUAL | reservado | não reservado | reservado |
| DADOS | não reservado | não reservado | não reservado |
| BASE DE DADOS | não reservado | não reservado | não reservado |
| BASES DE DADOS | não reservado | não reservado | não reservado |
| DIA | não reservado | não reservado | não reservado |
| DBPROPERTIES | não reservado | não reservado | não reservado |
| DEFINIDO | não reservado | não reservado | não reservado |
| Eliminar | não reservado | não reservado | reservado |
| DELIMITADO | não reservado | não reservado | não reservado |
| DESC | não reservado | não reservado | não reservado |
| DESCREVER | não reservado | não reservado | reservado |
| DFS | não reservado | não reservado | não reservado |
| DIRETORIOS | não reservado | não reservado | não reservado |
| DIRETÓRIO | não reservado | não reservado | não reservado |
| DISTINTO | reservado | não reservado | reservado |
| DISTRIBUIR | não reservado | não reservado | não reservado |
| DIV | não reservado | não reservado | não é uma palavra-chave |
| LARGAR | não reservado | não reservado | reservado |
| SENÃO | reservado | não reservado | reservado |
| FIM | reservado | não reservado | reservado |
| FUGA | reservado | não reservado | reservado |
| ESCAPOU | não reservado | não reservado | não reservado |
| EXCETO | reservado | estrito-não reservado | reservado |
| CÂMBIO | não reservado | não reservado | não reservado |
| EXISTE | não reservado | não reservado | reservado |
| EXPLAIN | não reservado | não reservado | não reservado |
| EXPORTAÇÃO | não reservado | não reservado | não reservado |
| Alargado | não reservado | não reservado | não reservado |
| EXTERNA | não reservado | não reservado | reservado |
| EXTRATO | não reservado | não reservado | reservado |
| FALSO | reservado | não reservado | reservado |
| FETCH | reservado | não reservado | reservado |
| CAMPOS | não reservado | não reservado | não reservado |
| FILTRAR | reservado | não reservado | reservado |
| FORMATO DE FICHEIRO | não reservado | não reservado | não reservado |
| FIRST | não reservado | não reservado | não reservado |
| FN | não reservado | não reservado | não reservado |
| SEGUINDO | não reservado | não reservado | não reservado |
| PARA | reservado | não reservado | reservado |
| ESTRANGEIROS | reservado | não reservado | reservado |
| FORMATO | não reservado | não reservado | não reservado |
| FORMATADO | não reservado | não reservado | não reservado |
| DE | reservado | não reservado | reservado |
| COMPLETO | reservado | estrito-não reservado | reservado |
| FUNÇÃO | não reservado | não reservado | reservado |
| FUNÇÕES | não reservado | não reservado | não reservado |
| GERADO | não reservado | não reservado | não reservado |
| GLOBAL | não reservado | não reservado | reservado |
| GRANT | reservado | não reservado | reservado |
| SUBVENÇÕES | não reservado | não reservado | não reservado |
| GRUPO | reservado | não reservado | reservado |
| AGRUPAMENTO | não reservado | não reservado | reservado |
| HAVING | reservado | não reservado | reservado |
| HORA | não reservado | não reservado | não reservado |
| SE | não reservado | não reservado | não é uma palavra-chave |
| IGNORAR | não reservado | não reservado | não reservado |
| IMPORTAÇÃO | não reservado | não reservado | não reservado |
| EM | reservado | não reservado | reservado |
| ÍNDICE | não reservado | não reservado | não reservado |
| ÍNDICES | não reservado | não reservado | não reservado |
| INTERIOR | reservado | estrito-não reservado | reservado |
| INPATH | não reservado | não reservado | não reservado |
| INPUTFORMAT | não reservado | não reservado | não reservado |
| INSERT | não reservado | não reservado | reservado |
| INTERSECÇÃO | reservado | estrito-não reservado | reservado |
| INTERVALO | não reservado | não reservado | reservado |
| EM | reservado | não reservado | reservado |
| É | reservado | não reservado | reservado |
| ITENS | não reservado | não reservado | não reservado |
| JOIN | reservado | estrito-não reservado | reservado |
| JSON | não reservado | não reservado | não reservado |
| CHAVE | não reservado | não reservado | não reservado |
| CHAVES | não reservado | não reservado | não reservado |
| ÚLTIMO | não reservado | não reservado | não reservado |
| LATERAIS | reservado | estrito-não reservado | reservado |
| Preguiçoso | não reservado | não reservado | não reservado |
| LIDERANDO | reservado | não reservado | reservado |
| ESQUERDA | reservado | estrito-não reservado | reservado |
| GOSTAR | não reservado | não reservado | reservado |
| ILIKE | não reservado | não reservado | não reservado |
| LIMIT | não reservado | não reservado | não reservado |
| LINHAS | não reservado | não reservado | não reservado |
| LIST | não reservado | não reservado | não reservado |
| CARREGAR | não reservado | não reservado | não reservado |
| LOCAIS | não reservado | não reservado | reservado |
| LOCALIZAÇÃO | não reservado | não reservado | não reservado |
| BLOQUEIO | não reservado | não reservado | não reservado |
| FECHADURAS | não reservado | não reservado | não reservado |
| LÓGICO | não reservado | não reservado | não reservado |
| Macro | não reservado | não reservado | não reservado |
| MAPA | não reservado | não reservado | não reservado |
| CORRESPONDIDO | não reservado | não reservado | não reservado |
| MESCLAR | não reservado | não reservado | não reservado |
| MINUTO | não reservado | não reservado | não reservado |
| MENOS | não reservado | estrito-não reservado | não reservado |
| MÊS | não reservado | não reservado | não reservado |
| MSCK | não reservado | não reservado | não reservado |
| ESPAÇO PARA NOMES | não reservado | não reservado | não reservado |
| ESPAÇOS PARA NOMES | não reservado | não reservado | não reservado |
| NATURAL | reservado | estrito-não reservado | reservado |
| Não | não reservado | não reservado | reservado |
| NÃO | reservado | não reservado | reservado |
| NULO | reservado | não reservado | reservado |
| NULOS | não reservado | não reservado | não reservado |
| DE | não reservado | não reservado | reservado |
| LIGADO | reservado | estrito-não reservado | reservado |
| APENAS | reservado | não reservado | reservado |
| OPÇÃO | não reservado | não reservado | não reservado |
| OPÇÕES | não reservado | não reservado | não reservado |
| OU | reservado | não reservado | reservado |
| ENCOMENDA | reservado | não reservado | reservado |
| SAÍDAS | não reservado | não reservado | reservado |
| EXTERIOR | reservado | não reservado | reservado |
| formato de saída | não reservado | não reservado | não reservado |
| SOBRE | não reservado | não reservado | não reservado |
| SOBREPOSIÇÕES | reservado | não reservado | reservado |
| SOBREPOSIÇÃO | não reservado | não reservado | não reservado |
| SOBRESCREVER | não reservado | não reservado | não reservado |
| PARTITION | não reservado | não reservado | reservado |
| PARTICIONADO | não reservado | não reservado | não reservado |
| PARTIÇÕES | não reservado | não reservado | não reservado |
| PERCENTAGEM | não reservado | não reservado | não reservado |
| PIVOT | não reservado | não reservado | não reservado |
| COLOCAÇÃO | não reservado | não reservado | não reservado |
| POSIÇÃO | não reservado | não reservado | reservado |
| PRECEDENTES | não reservado | não reservado | não reservado |
| PRIMÁRIO | reservado | não reservado | reservado |
| PRINCÍPIOS | não reservado | não reservado | não reservado |
| PROPRIEDADES | não reservado | não reservado | não reservado |
| PURGA | não reservado | não reservado | não reservado |
| QUALIFY | reservado | não reservado | reservado |
| CONSULTA | não reservado | não reservado | não reservado |
| GAMA | não reservado | não reservado | reservado |
| DESTINATÁRIO | não reservado | não reservado | não reservado |
| RECIPIENTS | não reservado | não reservado | não reservado |
| LEITOR DE REGISTOS | não reservado | não reservado | não reservado |
| RECORDISTA | não reservado | não reservado | não reservado |
| RECUPERAR | não reservado | não reservado | não reservado |
| REDUZIR | não reservado | não reservado | não reservado |
| REFERÊNCIAS | reservado | não reservado | reservado |
| REFRESH | não reservado | não reservado | não reservado |
| REGEXP | não reservado | não reservado | não é uma palavra-chave |
| REMOVE | não reservado | não reservado | não reservado |
| RENOMEAR | não reservado | não reservado | não reservado |
| REPARAÇÃO | não reservado | não reservado | não reservado |
| SUBSTITUIR | não reservado | não reservado | não reservado |
| RESET | não reservado | não reservado | não reservado |
| RESPEITO | não reservado | não reservado | não reservado |
| RESTRINGIR | não reservado | não reservado | não reservado |
| REVOKE | não reservado | não reservado | reservado |
| Certo | reservado | estrito-não reservado | reservado |
| CORRESPONDE | não reservado | não reservado | não reservado |
| FUNÇÃO | não reservado | não reservado | não reservado |
| FUNÇÕES | não reservado | não reservado | não reservado |
| REVERSÃO | não reservado | não reservado | reservado |
| configuração agregada | não reservado | não reservado | reservado |
| LINHA | não reservado | não reservado | reservado |
| LINHAS | não reservado | não reservado | reservado |
| SCHEMA | não reservado | não reservado | não reservado |
| ESQUEMAS | não reservado | não reservado | não é uma palavra-chave |
| SEGUNDO | não reservado | não reservado | não reservado |
| SELECT | reservado | não reservado | reservado |
| SEMI | não reservado | estrito-não reservado | não reservado |
| SEPARADOS | não reservado | não reservado | não reservado |
| SERDE | não reservado | não reservado | não reservado |
| SERDEPROPRIEDADES | não reservado | não reservado | não reservado |
| UTILIZADOR_DA_SESSÃO | reservado | não reservado | reservado |
| SET | não reservado | não reservado | reservado |
| CONJUNTOS | não reservado | não reservado | não reservado |
| PARTILHAR | não reservado | não reservado | não reservado |
| SHARES | não reservado | não reservado | não reservado |
| ESPECTÁCULO | não reservado | não reservado | não reservado |
| ENVIESADO | não reservado | não reservado | não reservado |
| ALGUNS | reservado | não reservado | reservado |
| ORDENAR | não reservado | não reservado | não reservado |
| ORDENADO | não reservado | não reservado | não reservado |
| INICIAR | não reservado | não reservado | reservado |
| ESTATÍSTICA | não reservado | não reservado | não reservado |
| ARMAZENADO | não reservado | não reservado | não reservado |
| ESTRATIFICAR | não reservado | não reservado | não reservado |
| ESTRUTURA | não reservado | não reservado | não reservado |
| SUBSTR | não reservado | não reservado | não reservado |
| Subsequência | não reservado | não reservado | não reservado |
| SYNC | não reservado | não reservado | não reservado |
| TABLE | reservado | não reservado | reservado |
| TABLES | não reservado | não reservado | não reservado |
| TABLESAMPLE | não reservado | não reservado | reservado |
| TBLPROPERTIES | não reservado | não reservado | não reservado |
| Temperatura | não reservado | não reservado | não é uma palavra-chave |
| TEMPORÁRIO | não reservado | não reservado | não reservado |
| RESCINDIDO | não reservado | não reservado | não reservado |
| EM SEGUIDA, | reservado | não reservado | reservado |
| TEMPO | reservado | não reservado | reservado |
| PARA | reservado | não reservado | reservado |
| TOCAR | não reservado | não reservado | não reservado |
| ATRÁS | reservado | não reservado | reservado |
| TRANSAÇÃO | não reservado | não reservado | não reservado |
| TRANSAÇÕES | não reservado | não reservado | não reservado |
| TRANSFORMAR | não reservado | não reservado | não reservado |
| GUARNIÇÃO | não reservado | não reservado | não reservado |
| VERDADEIRO | não reservado | não reservado | reservado |
| TRUNCAR | não reservado | não reservado | reservado |
| TRY_CAST | não reservado | não reservado | não reservado |
| TIPO | não reservado | não reservado | não reservado |
| DESARQUIVAR | não reservado | não reservado | não reservado |
| ILIMITADO | não reservado | não reservado | não reservado |
| UNCACHE | não reservado | não reservado | não reservado |
| UNIÃO | reservado | estrito-não reservado | reservado |
| ÚNICO | reservado | não reservado | reservado |
| DESCONHECIDO | reservado | não reservado | reservado |
| DESBLOQUEAR | não reservado | não reservado | não reservado |
| NÃO DEFINIDO | não reservado | não reservado | não reservado |
| UPDATE | não reservado | não reservado | reservado |
| UTILIZAÇÃO | não reservado | não reservado | não reservado |
| UTILIZADOR | reservado | não reservado | reservado |
| UTILIZAÇÃO | reservado | estrito-não reservado | reservado |
| VALUES | não reservado | não reservado | reservado |
| VER | não reservado | não reservado | não reservado |
| VIEWS | não reservado | não reservado | não reservado |
| Quando | reservado | não reservado | reservado |
| WHERE | reservado | não reservado | reservado |
| WINDOW | não reservado | não reservado | reservado |
| COM | reservado | não reservado | reservado |
| ANO | não reservado | não reservado | não reservado |
| ZONA | não reservado | não reservado | não reservado |