Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:
Databricks SQL
Databricks Runtime
Tento článek popisuje dodržování předpisů ANSI v Databricks Runtime. Režim ANSI v Databricks SQL najdete v tématu ANSI_MODE.
Spark SQL má dvě možnosti, jak podporovat dodržování předpisů se standardem ANSI SQL: spark.sql.ansi.enabled a spark.sql.storeAssignmentPolicy.
spark.sql.ansi.enabled(režim ANSI)- Místo dialektu kompatibilního s Hivem používá dialekt SQL kompatibilní s ANSI.
- Vyvolá výjimky za běhu pro neplatné vstupy místo vrácení hodnoty null.
- Ve výchozím nastavení je povoleno v Apache Spark 4.0 a Databricks Runtime 17.0 a novějších verzích.
spark.sql.storeAssignmentPolicy(zásady přiřazení úložiště)- Určuje implicitní přetypování během vkládání tabulek.
- Výchozí nastavení je
ANSIa je nezávislé naspark.sql.ansi.enabled.
Následující tabulka shrnuje chování:
| Název vlastnosti | Výchozí | Význam |
|---|---|---|
spark.sql.ansi.enabled |
true | Pokud je hodnota true, Spark se pokusí splnit specifikaci ANSI SQL:
|
spark.sql.storeAssignmentPolicy |
organizace ANSI | Při ukládání hodnoty do sloupce s jiným datovým typem Provede Spark převod typu. Existují tři zásady pro pravidla převodu typů: ANSI, legacy a strict.
|
Následující pododdíly představují změny chování v aritmetických operacích, převodech typů a parsování SQL při povolení režimu ANSI. Pro převody typů ve Spark SQL existují tři druhy, které tento článek představí jednotlivě: přetypování, přiřazení pro uložení a automatický převod typu.
Aritmetické operace
Ve Spark SQL nejsou aritmetické operace prováděné u číselných typů (s výjimkou desetinných míst) ve výchozím nastavení kontrolovány pro přetečení.
To znamená, že v případě, že operace způsobí přetečení, je výsledek stejný s odpovídající operací v programu Java nebo Scala (například pokud je součet 2 celých čísel vyšší než maximální hodnota reprezentovatelná, výsledek je záporné číslo). Na druhou stranu Spark SQL vrátí hodnotu null pro přetečení desetinné hodnoty.
Pokud je spark.sql.ansi.enabled nastaveno na true a dojde k přetečení v numerických a intervalových aritmetických operacích, vyvolá se za běhu aritmetická výjimka.
-- `spark.sql.ansi.enabled=true`
> SELECT 2147483647 + 1;
error: integer overflow
-- `spark.sql.ansi.enabled=false`
> SELECT 2147483647 + 1;
-2147483648
Přetypování
Pokud spark.sql.ansi.enabled je nastavena na true, explicitní přetypování syntaxe CAST vyvolá výjimku modulu runtime pro neplatné vzorce přetypování definované ve standardu, například přetypování z řetězce na celé číslo.
Klauzule CAST režimu Spark ANSI se řídí pravidly syntaxe oddílu 6.13 "přetypovací specifikace" ve standardu ISO/IEC 9075-2:2011 Informační technologie — databázové jazyky — SQL — část 2: Foundation (SQL/Foundation), s výjimkou, že speciálně umožňuje následující jednoduché převody typů, které jsou zakázány dle standardu ANSI:
- ČíselnýTyp <=> BooleovskýTyp
- StringType =< BinaryType >
Platné kombinace zdrojového a cílového datového typu ve výrazu CAST jsou uvedeny v následující tabulce.
"Y" označuje, že kombinace je syntakticky platná bez omezení a "N" označuje, že kombinace není platná.
| SourceTarget | Číslo | Struna | Datum | Časové razítko | Rozmezí | logický | Binární | Pole | Mapa | Struktura |
|---|---|---|---|---|---|---|---|---|---|---|
| Číslo | Й | Й | N | N | N | Й | N | N | N | N |
| Struna | Й | Й | Й | Й | Й | Й | Й | N | N | N |
| Datum | N | Й | Й | Й | N | N | N | N | N | N |
| Časové razítko | N | Й | Й | Й | N | N | N | N | N | N |
| Rozmezí | N | Й | N | N | Й | N | N | N | N | N |
| logický | Й | Й | N | N | N | Й | N | N | N | N |
| Binární | Й | N | N | N | N | N | Й | N | N | N |
| Pole | N | N | N | N | N | N | N | Й | N | N |
| Mapa | N | N | N | N | N | N | N | N | Й | N |
| Struktura | N | N | N | N | N | N | N | N | N | Й |
-- 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
Uložení přiřazení
Výchozí nastavení spark.sql.storeAssignmentPolicy je ANSI. Pokud se při tomto nastavení datové typy zdrojových hodnot neshodují s cílovými typy sloupců, Spark SQL do příkazu automaticky přidá klauzule INSERT ANSI CAST.
Během vkládání tabulek v rámci této zásady Spark kontroluje a odmítá neplatné přetypování, přičemž vyvolá výjimku, aby zajistil kvalitu dat. To znamená, že pokud pokus o vložení selže kvůli neshodě typu, nebude mít za následek, že se do tabulky částečně zapisují žádná data.
Příklady:
-- 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
Tyto příklady ukazují Spark SQL, který brání vložení nekompatibilních dat, a tím zachovává integritu dat.
Pokud je spark.sql.storeAssignmentPolicy nastaveno na LEGACY, Spark SQL se vrátí k chování, které převládalo až do Sparku 2.x. V tomto režimu, místo použití ANSI CAST operací, použije původní CAST operace. V rámci této zásady neplatné přetypování během vkládání tabulky způsobí vložení hodnot NULL nebo nesprávných hodnot místo vyvolání výjimky.
Příklady:
-- 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)
Nucený převod typu
Typová propagace a precedenční pravidla
Pokud spark.sql.ansi.enabled je nastavená hodnota true, Spark SQL používá několik pravidel, která řídí způsob řešení konfliktů mezi datovými typy.
Jádrem tohoto řešení konfliktů je seznam priorit typů, který definuje, jestli lze hodnoty daného datového typu implicitně upřednostnět na jiný datový typ.
| Datový typ | seznam precedence (od nejužšího po nejširší) |
|---|---|
| byte | Bajt - Krátké celé číslo -> Int -> Dlouhé celé číslo -> Desetinné číslo -> Float* -> Double |
| Krátké | Short - Int ->> Long -> Decimal-> Float* -> Double |
| int | Int - Long ->> Decimal -> Float* -> Double |
| Dlouhé | Long - Decimal ->> Float* -> Double |
| Desetinné číslo | Desetinné číslo -> Float* -> Double |
| Plavat | Plovák –> double |
| Dvojitá přesnost | Dvojitá přesnost |
| Datum | Datum –> časové razítko |
| Časové razítko | Časové razítko |
| Struna | Struna |
| Binární | Binární |
| logický | logický |
| Rozmezí | Rozmezí |
| Mapa | Mapa** |
| Pole | Pole** |
| Struktura | Struct** |
- Pro nejméně běžné rozlišení typu float se přeskočí, aby nedošlo ke ztrátě přesnosti.
** U komplexního typu se pravidlo priority rekurzivně vztahuje na její prvky komponent.
Speciální pravidla platí pro typ string a netypovou hodnotu NULL. Hodnotu NULL lze zvýšit na jakýkoli jiný typ, zatímco řetězec lze zvýšit na jakýkoli jednoduchý datový typ.
Toto je grafické znázornění seznamu priorit jako směrovaný strom: 
Nejméně běžné řešení typů
Nejmenší společný typ ze sady typů je nejužší typ dostupný ze seznamu priorit všemi prvky sady typů.
Nejméně běžné rozlišení typu se používá k:
- Rozhodněte se, jestli je možné vyvolat funkci, která očekává parametr typu, pomocí argumentu užšího typu.
- Odvoďte typ argumentu pro funkce, které očekávají společný argument pro více parametrů, jako jsou coalesce, least nebo greatest.
- Odvozujte typy operandů pro operátory, jako jsou aritmetické operace nebo porovnání.
- Odvozujte typ výsledku pro výrazy, jako je výraz podmínky.
- Odvození typů elementu, klíče nebo hodnoty pro pole a mapové konstruktory.
Pokud se nejméně běžný typ přeloží na FLOAT, se použijí speciální pravidla. U hodnot typu float, pokud je některý z typů INT, BIGINT nebo DECIMAL, nejméně běžný typ se převede na DOUBLE, aby se zabránilo potenciální ztrátě číslic.
-- 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.
Funkce SQL
Chování některých funkcí SQL se může lišit v režimu ANSI (spark.sql.ansi.enabled=true).
-
size: Tato funkce vrátí hodnotu null pro vstup null v režimu ANSI. -
element_at:- Tato funkce vyvolá výjimku
ArrayIndexOutOfBoundsException, pokud používáte neplatné indexy. - Tato funkce vyvolá
NoSuchElementException, pokud klíč v mapě neexistuje.
- Tato funkce vyvolá výjimku
-
elt: Tato funkce vyvoláArrayIndexOutOfBoundsException, pokud používáte neplatné indexy. -
make_date: Tato funkce selže s výjimkou, pokud je datum výsledku neplatné. -
make_timestamp: Tato funkce selže s výjimkou, pokud je časové razítko výsledku neplatné. -
make_interval: Tato funkce selže s výjimkou, pokud je interval výsledku neplatný. -
next_day: Tato funkce vyvoláIllegalArgumentException, pokud vstup není platný den v týdnu. -
parse_url: Tato funkce vyvoláIllegalArgumentException, pokud vstupní řetězec není platnou adresou URL. -
to_date: Tato funkce selže s výjimkou, pokud vstupní řetězec nelze analyzovat nebo je řetězec vzoru neplatný. -
to_timestamp: Tato funkce selže s výjimkou, pokud vstupní řetězec nelze analyzovat nebo je řetězec vzoru neplatný. -
to_unix_timestamp: Tato funkce selže s výjimkou, pokud vstupní řetězec nelze analyzovat nebo je řetězec vzoru neplatný. -
unix_timestamp: Tato funkce selže s výjimkou, pokud vstupní řetězec nelze analyzovat nebo je řetězec vzoru neplatný.
Operátory SQL
Chování některých operátorů SQL se může lišit v režimu ANSI (spark.sql.ansi.enabled=true).
-
array_col[index]: Tento operátor vyvolá,ArrayIndexOutOfBoundsExceptionpokud používá neplatné indexy. -
map_col[key]: Tento operátor vyvolá,NoSuchElementExceptionpokud klíč v mapě neexistuje. -
CAST(string_col AS TIMESTAMP): Tento operátor selže s výjimkou, pokud vstupní řetězec nelze analyzovat. -
CAST(string_col AS DATE): Tento operátor selže s výjimkou, pokud vstupní řetězec nelze analyzovat.
Užitečné funkce pro režim ANSI
Když je režim ANSI zapnutý, vyvolá výjimky pro neplatné operace. K potlačení těchto výjimek můžete použít následující funkce SQL.
-
try_cast: shodná sCAST, ale na rozdíl od toho vracíNULLvýsledek místo vyvolání výjimky při chybě za běhu. -
try_add: je shodný s operátorem sčítání+, s tím rozdílem, že místo vyvolání výjimky při přetečení celočíselné hodnoty vrátí výsledekNULL. -
try_divide: shodný s operátorem/dělení s tím rozdílem, že vrátíNULLvýsledek místo vyvolání výjimky při dělení 0.
Klíčová slova SQL
Pokud spark.sql.ansi.enabled=true i spark.sql.ansi.enforceReservedKeywords=true, Spark SQL používá analyzátor ANSI.
Ve výchozím nastavení je spark.sql.ansi.enforceReservedKeywordsfalse.
V režimu analyzátoru ANSI spadají klíčová slova do dvou kategorií:
- Vyhrazeno: Nejde použít jako identifikátory (tabulka, zobrazení, sloupec, funkce, alias atd.).
- Nezarezervované: Působí jako klíčová slova pouze v konkrétních kontextech; jinak lze použít jako identifikátory. Jedná se například
EXPLAIN SELECT ...o příkaz, aleEXPLAINmůžete ho použít jako identifikátor jinde.
Pokud se analyzátor ANSI nepoužívá, klíčová slova spadají do:
- Nemá rezervaci: Stejná definice jako výše.
- Strict-non-reserved: Podobné jako non-reserved, ale nemůže být použito jako aliasy tabulek.
Níže je seznam všech klíčových slov ve Spark SQL.
| Klíčové slovo | Režim SPARK SQL ANSI | Výchozí režim Spark SQL | SQL-2016 |
|---|---|---|---|
| PŘIDAT | nevyhrazený | nevyhrazený | nevyhrazený |
| PO | nevyhrazený | nevyhrazený | nevyhrazený |
| VŠE | rezervovaný | nevyhrazený | rezervovaný |
| ZMĚNA | nevyhrazený | nevyhrazený | rezervovaný |
| VŽDY | nevyhrazený | nevyhrazený | nevyhrazený |
| ANALÝZA | nevyhrazený | nevyhrazený | nevyhrazený |
| A | rezervovaný | nevyhrazený | rezervovaný |
| PROTI | nevyhrazený | přísně-nevyhrazené | nevyhrazený |
| LIBOVOLNÉ | rezervovaný | nevyhrazený | rezervovaný |
| ARCHIV | nevyhrazený | nevyhrazený | nevyhrazený |
| POLE | nevyhrazený | nevyhrazený | rezervovaný |
| PROTOŽE | rezervovaný | nevyhrazený | rezervovaný |
| ASC | nevyhrazený | nevyhrazený | nevyhrazený |
| Na | nevyhrazený | nevyhrazený | rezervovaný |
| OPRÁVNĚNÍ | rezervovaný | nevyhrazený | rezervovaný |
| MEZI | nevyhrazený | nevyhrazený | rezervovaný |
| OBA | rezervovaný | nevyhrazený | rezervovaný |
| KBELÍK | nevyhrazený | nevyhrazený | nevyhrazený |
| VĚDRA | nevyhrazený | nevyhrazený | nevyhrazený |
| VEDLE | nevyhrazený | nevyhrazený | rezervovaný |
| MEZIPAMĚŤ | nevyhrazený | nevyhrazený | nevyhrazený |
| KASKÁDA | nevyhrazený | nevyhrazený | nevyhrazený |
| Případ | rezervovaný | nevyhrazený | rezervovaný |
| PŘEVOD | rezervovaný | nevyhrazený | rezervovaný |
| VYMĚNIT | nevyhrazený | nevyhrazený | nevyhrazený |
| KONTROLOVAT | rezervovaný | nevyhrazený | rezervovaný |
| JASNÝ | nevyhrazený | nevyhrazený | nevyhrazený |
| SHLUK | nevyhrazený | nevyhrazený | nevyhrazený |
| Seskupený | nevyhrazený | nevyhrazený | nevyhrazený |
| CODEGEN | nevyhrazený | nevyhrazený | nevyhrazený |
| KOLACIONOVAT | rezervovaný | nevyhrazený | rezervovaný |
| SBÍRKA | nevyhrazený | nevyhrazený | nevyhrazený |
| COLUMN | rezervovaný | nevyhrazený | rezervovaný |
| COLUMNS | nevyhrazený | nevyhrazený | nevyhrazený |
| KOMENTÁŘ | nevyhrazený | nevyhrazený | nevyhrazený |
| POTVRDIT | nevyhrazený | nevyhrazený | rezervovaný |
| KOMPAKTNÍ | nevyhrazený | nevyhrazený | nevyhrazený |
| KOMPRIMACE | nevyhrazený | nevyhrazený | nevyhrazený |
| VÝPOČET | nevyhrazený | nevyhrazený | nevyhrazený |
| ZŘETĚZIT | nevyhrazený | nevyhrazený | nevyhrazený |
| CONSTRAINT | rezervovaný | nevyhrazený | rezervovaný |
| NÁKLADY | nevyhrazený | nevyhrazený | nevyhrazený |
| VYTVOŘIT | rezervovaný | nevyhrazený | rezervovaný |
| KŘÍŽ | rezervovaný | přísně-nevyhrazené | rezervovaný |
| KRYCHLE | nevyhrazený | nevyhrazený | rezervovaný |
| SOUČASNÝ | nevyhrazený | nevyhrazený | rezervovaný |
| aktuální datum | rezervovaný | nevyhrazený | rezervovaný |
| AKTUÁLNÍ_ČAS | rezervovaný | nevyhrazený | rezervovaný |
| CURRENT_TIMESTAMP | rezervovaný | nevyhrazený | rezervovaný |
| AKTUÁLNÍ_UŽIVATEL | rezervovaný | nevyhrazený | rezervovaný |
| Údaje | nevyhrazený | nevyhrazený | nevyhrazený |
| DATABÁZE | nevyhrazený | nevyhrazený | nevyhrazený |
| DATABÁZE | nevyhrazený | nevyhrazený | nevyhrazený |
| DEN | nevyhrazený | nevyhrazený | nevyhrazený |
| DBPROPERTIES | nevyhrazený | nevyhrazený | nevyhrazený |
| DEFINOVÁNO | nevyhrazený | nevyhrazený | nevyhrazený |
| VYMAZAT | nevyhrazený | nevyhrazený | rezervovaný |
| ODDĚLENÝ | nevyhrazený | nevyhrazený | nevyhrazený |
| DESC | nevyhrazený | nevyhrazený | nevyhrazený |
| POPSAT | nevyhrazený | nevyhrazený | rezervovaný |
| Systém souborů DFS | nevyhrazený | nevyhrazený | nevyhrazený |
| ADRESÁŘE | nevyhrazený | nevyhrazený | nevyhrazený |
| ADRESÁŘ | nevyhrazený | nevyhrazený | nevyhrazený |
| ODLIŠNÝ | rezervovaný | nevyhrazený | rezervovaný |
| DISTRIBUOVAT | nevyhrazený | nevyhrazený | nevyhrazený |
| DIV | nevyhrazený | nevyhrazený | nikoli klíčové slovo |
| Pustit | nevyhrazený | nevyhrazený | rezervovaný |
| jinak | rezervovaný | nevyhrazený | rezervovaný |
| KONEC | rezervovaný | nevyhrazený | rezervovaný |
| ÚNIK | rezervovaný | nevyhrazený | rezervovaný |
| UTOČIL | nevyhrazený | nevyhrazený | nevyhrazený |
| KROMĚ | rezervovaný | přísně-nevyhrazené | rezervovaný |
| VÝMĚNA | nevyhrazený | nevyhrazený | nevyhrazený |
| EXISTUJE | nevyhrazený | nevyhrazený | rezervovaný |
| EXPLAIN | nevyhrazený | nevyhrazený | nevyhrazený |
| VÝVOZ | nevyhrazený | nevyhrazený | nevyhrazený |
| Rozšířeno | nevyhrazený | nevyhrazený | nevyhrazený |
| EXTERNÍ | nevyhrazený | nevyhrazený | rezervovaný |
| EXTRAKT | nevyhrazený | nevyhrazený | rezervovaný |
| NEPRAVDA | rezervovaný | nevyhrazený | rezervovaný |
| PŘINÉST | rezervovaný | nevyhrazený | rezervovaný |
| POLE | nevyhrazený | nevyhrazený | nevyhrazený |
| FILTR | rezervovaný | nevyhrazený | rezervovaný |
| Formát souboru | nevyhrazený | nevyhrazený | nevyhrazený |
| FIRST | nevyhrazený | nevyhrazený | nevyhrazený |
| FN | nevyhrazený | nevyhrazený | nevyhrazený |
| NÁSLEDUJÍCÍ | nevyhrazený | nevyhrazený | nevyhrazený |
| PRO | rezervovaný | nevyhrazený | rezervovaný |
| ZAHRANIČNÍ | rezervovaný | nevyhrazený | rezervovaný |
| FORMÁT | nevyhrazený | nevyhrazený | nevyhrazený |
| NAFORMÁTOVANÝ | nevyhrazený | nevyhrazený | nevyhrazený |
| Od | rezervovaný | nevyhrazený | rezervovaný |
| ÚPLNÝ | rezervovaný | přísně-nevyhrazené | rezervovaný |
| FUNKCE | nevyhrazený | nevyhrazený | rezervovaný |
| FUNKCE | nevyhrazený | nevyhrazený | nevyhrazený |
| GENEROVANÝ | nevyhrazený | nevyhrazený | nevyhrazený |
| GLOBÁLNÍ | nevyhrazený | nevyhrazený | rezervovaný |
| GRANT | rezervovaný | nevyhrazený | rezervovaný |
| DOTACE | nevyhrazený | nevyhrazený | nevyhrazený |
| SKUPINA | rezervovaný | nevyhrazený | rezervovaný |
| SESKUPENÍ | nevyhrazený | nevyhrazený | rezervovaný |
| HAVING | rezervovaný | nevyhrazený | rezervovaný |
| HODINA | nevyhrazený | nevyhrazený | nevyhrazený |
| KDYŽ | nevyhrazený | nevyhrazený | nikoli klíčové slovo |
| IGNOROVAT | nevyhrazený | nevyhrazený | nevyhrazený |
| DOVOZ | nevyhrazený | nevyhrazený | nevyhrazený |
| V | rezervovaný | nevyhrazený | rezervovaný |
| Rejstřík | nevyhrazený | nevyhrazený | nevyhrazený |
| INDEXY | nevyhrazený | nevyhrazený | nevyhrazený |
| VNITŘNÍ | rezervovaný | přísně-nevyhrazené | rezervovaný |
| INPATH | nevyhrazený | nevyhrazený | nevyhrazený |
| Formát vstupu | nevyhrazený | nevyhrazený | nevyhrazený |
| INSERT | nevyhrazený | nevyhrazený | rezervovaný |
| PRŮSEČÍK | rezervovaný | přísně-nevyhrazené | rezervovaný |
| interval | nevyhrazený | nevyhrazený | rezervovaný |
| DO | rezervovaný | nevyhrazený | rezervovaný |
| JE | rezervovaný | nevyhrazený | rezervovaný |
| POLOŽKY | nevyhrazený | nevyhrazený | nevyhrazený |
| JOIN | rezervovaný | přísně-nevyhrazené | rezervovaný |
| JSON | nevyhrazený | nevyhrazený | nevyhrazený |
| KLÍČ | nevyhrazený | nevyhrazený | nevyhrazený |
| KLÍČE | nevyhrazený | nevyhrazený | nevyhrazený |
| POSLEDNÍ | nevyhrazený | nevyhrazený | nevyhrazený |
| BOČNÍ | rezervovaný | přísně-nevyhrazené | rezervovaný |
| LÍNÝ | nevyhrazený | nevyhrazený | nevyhrazený |
| VEDOUCÍ | rezervovaný | nevyhrazený | rezervovaný |
| LEVÝ | rezervovaný | přísně-nevyhrazené | rezervovaný |
| To se mi líbí | nevyhrazený | nevyhrazený | rezervovaný |
| ILIKE | nevyhrazený | nevyhrazený | nevyhrazený |
| LIMIT | nevyhrazený | nevyhrazený | nevyhrazený |
| ŘÁDKY | nevyhrazený | nevyhrazený | nevyhrazený |
| LIST | nevyhrazený | nevyhrazený | nevyhrazený |
| NÁKLAD | nevyhrazený | nevyhrazený | nevyhrazený |
| Lokální | nevyhrazený | nevyhrazený | rezervovaný |
| UMÍSTĚNÍ | nevyhrazený | nevyhrazený | nevyhrazený |
| ZAMKNOUT | nevyhrazený | nevyhrazený | nevyhrazený |
| ZÁMKY | nevyhrazený | nevyhrazený | nevyhrazený |
| LOGICKÝ | nevyhrazený | nevyhrazený | nevyhrazený |
| Makro | nevyhrazený | nevyhrazený | nevyhrazený |
| MAPA | nevyhrazený | nevyhrazený | nevyhrazený |
| SLÍCOVANÝ | nevyhrazený | nevyhrazený | nevyhrazený |
| SLOUČIT | nevyhrazený | nevyhrazený | nevyhrazený |
| MINUTA | nevyhrazený | nevyhrazený | nevyhrazený |
| MINUS | nevyhrazený | přísně-nevyhrazené | nevyhrazený |
| MĚSÍC | nevyhrazený | nevyhrazený | nevyhrazený |
| MSCK | nevyhrazený | nevyhrazený | nevyhrazený |
| NAMESPACE | nevyhrazený | nevyhrazený | nevyhrazený |
| OBORY NÁZVŮ | nevyhrazený | nevyhrazený | nevyhrazený |
| PŘIROZENÝ | rezervovaný | přísně-nevyhrazené | rezervovaný |
| NE | nevyhrazený | nevyhrazený | rezervovaný |
| NE | rezervovaný | nevyhrazený | rezervovaný |
| NULA | rezervovaný | nevyhrazený | rezervovaný |
| NULL | nevyhrazený | nevyhrazený | nevyhrazený |
| Z | nevyhrazený | nevyhrazený | rezervovaný |
| ZAPNUTO | rezervovaný | přísně-nevyhrazené | rezervovaný |
| POUZE | rezervovaný | nevyhrazený | rezervovaný |
| MOŽNOST | nevyhrazený | nevyhrazený | nevyhrazený |
| MOŽNOSTI | nevyhrazený | nevyhrazený | nevyhrazený |
| NEBO | rezervovaný | nevyhrazený | rezervovaný |
| OBJEDNÁVKA | rezervovaný | nevyhrazený | rezervovaný |
| VEN | nevyhrazený | nevyhrazený | rezervovaný |
| VNĚJŠÍ | rezervovaný | nevyhrazený | rezervovaný |
| Výstupní formát | nevyhrazený | nevyhrazený | nevyhrazený |
| PŘES | nevyhrazený | nevyhrazený | nevyhrazený |
| PŘEKRYVY | rezervovaný | nevyhrazený | rezervovaný |
| PŘEKRYTÍ | nevyhrazený | nevyhrazený | nevyhrazený |
| PŘEPSAT | nevyhrazený | nevyhrazený | nevyhrazený |
| PARTITION | nevyhrazený | nevyhrazený | rezervovaný |
| SEGMENTOVANÝ | nevyhrazený | nevyhrazený | nevyhrazený |
| ODDÍLY | nevyhrazený | nevyhrazený | nevyhrazený |
| PROCENTO | nevyhrazený | nevyhrazený | nevyhrazený |
| PIVOT | nevyhrazený | nevyhrazený | nevyhrazený |
| UMISŤOVÁNÍ | nevyhrazený | nevyhrazený | nevyhrazený |
| POSTAVENÍ | nevyhrazený | nevyhrazený | rezervovaný |
| PŘEDCHOZÍ | nevyhrazený | nevyhrazený | nevyhrazený |
| PRIMÁRNÍ | rezervovaný | nevyhrazený | rezervovaný |
| ŘEDITELÉ | nevyhrazený | nevyhrazený | nevyhrazený |
| VLASTNOSTI | nevyhrazený | nevyhrazený | nevyhrazený |
| Očista | nevyhrazený | nevyhrazený | nevyhrazený |
| QUALIFY | rezervovaný | nevyhrazený | rezervovaný |
| DOTAZ | nevyhrazený | nevyhrazený | nevyhrazený |
| ROZMEZÍ | nevyhrazený | nevyhrazený | rezervovaný |
| PŘÍJEMCE | nevyhrazený | nevyhrazený | nevyhrazený |
| RECIPIENTS | nevyhrazený | nevyhrazený | nevyhrazený |
| RECORDREADER | nevyhrazený | nevyhrazený | nevyhrazený |
| Zapisovač | nevyhrazený | nevyhrazený | nevyhrazený |
| ZOTAVIT SE | nevyhrazený | nevyhrazený | nevyhrazený |
| REDUKOVAT | nevyhrazený | nevyhrazený | nevyhrazený |
| ODKAZY | rezervovaný | nevyhrazený | rezervovaný |
| REFRESH | nevyhrazený | nevyhrazený | nevyhrazený |
| REGEXP | nevyhrazený | nevyhrazený | nikoli klíčové slovo |
| REMOVE | nevyhrazený | nevyhrazený | nevyhrazený |
| Přejmenovat | nevyhrazený | nevyhrazený | nevyhrazený |
| OPRAVIT | nevyhrazený | nevyhrazený | nevyhrazený |
| NAHRADIT | nevyhrazený | nevyhrazený | nevyhrazený |
| RESET | nevyhrazený | nevyhrazený | nevyhrazený |
| RESPEKT | nevyhrazený | nevyhrazený | nevyhrazený |
| OMEZIT | nevyhrazený | nevyhrazený | nevyhrazený |
| REVOKE | nevyhrazený | nevyhrazený | rezervovaný |
| PRAVÝ | rezervovaný | přísně-nevyhrazené | rezervovaný |
| RLIKE | nevyhrazený | nevyhrazený | nevyhrazený |
| Role | nevyhrazený | nevyhrazený | nevyhrazený |
| ROLE | nevyhrazený | nevyhrazený | nevyhrazený |
| VRÁCENÍ ZPĚT | nevyhrazený | nevyhrazený | rezervovaný |
| KUMULACE | nevyhrazený | nevyhrazený | rezervovaný |
| Řádek | nevyhrazený | nevyhrazený | rezervovaný |
| řádky | nevyhrazený | nevyhrazený | rezervovaný |
| SCHEMA | nevyhrazený | nevyhrazený | nevyhrazený |
| SCHÉMATA | nevyhrazený | nevyhrazený | nikoli klíčové slovo |
| VTEŘINA | nevyhrazený | nevyhrazený | nevyhrazený |
| SELECT | rezervovaný | nevyhrazený | rezervovaný |
| POLO | nevyhrazený | přísně-nevyhrazené | nevyhrazený |
| ODDĚLENÝ | nevyhrazený | nevyhrazený | nevyhrazený |
| SERDE | nevyhrazený | nevyhrazený | nevyhrazený |
| SERDEPROPERTIES | nevyhrazený | nevyhrazený | nevyhrazený |
| UŽIVATEL_SESSION | rezervovaný | nevyhrazený | rezervovaný |
| SET | nevyhrazený | nevyhrazený | rezervovaný |
| NASTAVUJE | nevyhrazený | nevyhrazený | nevyhrazený |
| SDÍLET | nevyhrazený | nevyhrazený | nevyhrazený |
| SHARES | nevyhrazený | nevyhrazený | nevyhrazený |
| UKÁZAT | nevyhrazený | nevyhrazený | nevyhrazený |
| ZKOSENÝ | nevyhrazený | nevyhrazený | nevyhrazený |
| NĚJAKÝ | rezervovaný | nevyhrazený | rezervovaný |
| ŘADIT | nevyhrazený | nevyhrazený | nevyhrazený |
| SEŘAZENÝ | nevyhrazený | nevyhrazený | nevyhrazený |
| ZAČÍNAT | nevyhrazený | nevyhrazený | rezervovaný |
| STATISTIKA | nevyhrazený | nevyhrazený | nevyhrazený |
| ULOŽENÝ | nevyhrazený | nevyhrazený | nevyhrazený |
| VRSTVIT | nevyhrazený | nevyhrazený | nevyhrazený |
| STRUKTURA | nevyhrazený | nevyhrazený | nevyhrazený |
| SUBSTR | nevyhrazený | nevyhrazený | nevyhrazený |
| podřetězec | nevyhrazený | nevyhrazený | nevyhrazený |
| SYNC | nevyhrazený | nevyhrazený | nevyhrazený |
| TABLE | rezervovaný | nevyhrazený | rezervovaný |
| TABLES | nevyhrazený | nevyhrazený | nevyhrazený |
| TABLESAMPLE | nevyhrazený | nevyhrazený | rezervovaný |
| TBLPROPERTIES | nevyhrazený | nevyhrazený | nevyhrazený |
| Dočasný pracovník | nevyhrazený | nevyhrazený | nikoli klíčové slovo |
| DOČASNÝ | nevyhrazený | nevyhrazený | nevyhrazený |
| UKONČENÝ | nevyhrazený | nevyhrazený | nevyhrazený |
| POTOM | rezervovaný | nevyhrazený | rezervovaný |
| ČAS | rezervovaný | nevyhrazený | rezervovaný |
| K | rezervovaný | nevyhrazený | rezervovaný |
| DOTYK | nevyhrazený | nevyhrazený | nevyhrazený |
| STOPOVÁNÍ | rezervovaný | nevyhrazený | rezervovaný |
| TRANSAKCE | nevyhrazený | nevyhrazený | nevyhrazený |
| TRANSAKCE | nevyhrazený | nevyhrazený | nevyhrazený |
| TRANSFORMOVAT | nevyhrazený | nevyhrazený | nevyhrazený |
| ZASTŘIHNOUT | nevyhrazený | nevyhrazený | nevyhrazený |
| PRAVDIVÝ | nevyhrazený | nevyhrazený | rezervovaný |
| ZKRÁTIT | nevyhrazený | nevyhrazený | rezervovaný |
| TRY_CAST | nevyhrazený | nevyhrazený | nevyhrazený |
| TYP | nevyhrazený | nevyhrazený | nevyhrazený |
| Obnovit z archivu | nevyhrazený | nevyhrazený | nevyhrazený |
| NEOMEZENÝ | nevyhrazený | nevyhrazený | nevyhrazený |
| zrušit cache | nevyhrazený | nevyhrazený | nevyhrazený |
| UNIE | rezervovaný | přísně-nevyhrazené | rezervovaný |
| JEDINEČNÝ | rezervovaný | nevyhrazený | rezervovaný |
| Neznámé | rezervovaný | nevyhrazený | rezervovaný |
| ODEMKNOUT | nevyhrazený | nevyhrazený | nevyhrazený |
| NENASTAVENÝ | nevyhrazený | nevyhrazený | nevyhrazený |
| UPDATE | nevyhrazený | nevyhrazený | rezervovaný |
| Použití | nevyhrazený | nevyhrazený | nevyhrazený |
| UŽIVATEL | rezervovaný | nevyhrazený | rezervovaný |
| Použití | rezervovaný | přísně-nevyhrazené | rezervovaný |
| VALUES | nevyhrazený | nevyhrazený | rezervovaný |
| ZOBRAZIT | nevyhrazený | nevyhrazený | nevyhrazený |
| VIEWS | nevyhrazený | nevyhrazený | nevyhrazený |
| Když... | rezervovaný | nevyhrazený | rezervovaný |
| WHERE | rezervovaný | nevyhrazený | rezervovaný |
| WINDOW | nevyhrazený | nevyhrazený | rezervovaný |
| S | rezervovaný | nevyhrazený | rezervovaný |
| ROK | nevyhrazený | nevyhrazený | nevyhrazený |
| ZÓNA | nevyhrazený | nevyhrazený | nevyhrazený |