Dodržování předpisů ANSI v Databricks Runtime

Platí pro:check marked yes 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.

Pokud spark.sql.ansi.enabled je nastavená hodnota true, Spark SQL místo toho, aby byl kompatibilní s Hivem, používá dialekt kompatibilní se standardem ANSI. Spark například vyvolá výjimku za běhu místo vrácení výsledků s hodnotou null, pokud jsou vstupy operátoru NEBO funkce SQL neplatné. Některé funkce dialektu ANSI nemusí být přímo ze standardu ANSI SQL, ale jejich chování odpovídá stylu ANSI SQL.

Spark SQL má navíc nezávislou možnost řídit implicitní chování přetypování při ukládání řádků do tabulky. Chování přetypování je definováno jako pravidla přiřazení úložiště ve standardu.

Pokud spark.sql.storeAssignmentPolicy je nastavená hodnota ANSI, Spark SQL splňuje pravidla přiřazení úložiště ANSI. Jedná se o samostatnou konfiguraci, protože její výchozí hodnota je ANSI, zatímco konfigurace spark.sql.ansi.enabled je ve výchozím nastavení zakázaná.

Následující tabulka shrnuje chování:

Název vlastnosti Výchozí Význam
spark.sql.ansi.enabled false (nepravda) Pokud je hodnota true, Spark se pokusí splnit specifikaci ANSI SQL:

* Vyvolá výjimku za běhu, pokud dojde k přetečení v jakékoli operaci s celočíselnou nebo desetinnou čárkou.
* Zakáže použití vyhrazených klíčových slov ANSI SQL jako identifikátorů v analyzátoru SQL.
spark.sql.storeAssignmentPolicy 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, legacya strict.

* ANSI: Spark provede převod typu podle ANSI SQL. V praxi je chování většinou stejné jako PostgreSQL. Nepovoluje určité nerozumné převody typu, jako je převod řetězce na hodnotu int nebo double na logickou hodnotu.
* legacy: Spark umožňuje převod typu tak dlouho, dokud se jedná o platné přetypování, což je velmi volné. Například převod řetězce na hodnotu int nebo double na logickou hodnotu je povolený. Je to také jediné chování Ve Sparku 2.x a je kompatibilní s Hivem.
* strict: Spark neumožňuje jakoukoli možnou ztrátu přesnosti nebo zkrácení dat v převodu typu, například převod double na int nebo decimal na double není povolený.

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 a tento článek je představí jeden po druhém: přetypování, uložení přiřazení a 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ých míst. Pokud spark.sql.ansi.enabled je nastavená true hodnota a přetečení probíhá v numerických a intervalových aritmetických operacích, vyvolá za běhu aritmetickou výjimku.

-- `spark.sql.ansi.enabled=true`
> SELECT 2147483647 + 1;
 error: integer overflow

-- `spark.sql.ansi.enabled=false`
> SELECT 2147483647 + 1;
  -2147483648

Změna typu

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 "specifikace přetypování" ve standardu ISO/IEC 9075-2:2011 Informační technologie – databázové jazyky – SQL – část 2: Foundation (SQL/Foundation) s výjimkou speciálních jednoduchých převodů typů, které jsou zakázány podle standardu ANSI:

  • NumericType <=> BooleanType
  • 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 Řetězcové Datum Časové razítko Interval Logická hodnota Binární Pole Mapovat Struktura
Číslo Y Y N N N Y N N N N
String Y Y Y Y Y Y Y N N N
Datum N Y Y Y N N N N N N
Časové razítko N Y Y Y N N N N N N
Interval N Y N N Y N N N N N
Logická hodnota Y Y N N N Y N N N N
Binární Y N N N N N Y N N N
Pole N N N N N N N Y N N
Mapovat N N N N N N N N Y N
Struktura 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` (This is a default behavior)
> 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.storeAssignmentPolicyANSIje . Pokud se při tomto nastavení datové typy zdrojových hodnot neshodují s cílovými typy sloupců, Spark SQL automaticky přidá klauzule ANSI CAST do příkazu INSERT. Během vkládání tabulek v rámci této zásady Spark vyhledá a odmítne neplatné přetypování a vyvolá výjimku, která zajistí 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 nastavená hodnota spark.sql.storeAssignmentPolicyLEGACY, Spark SQL se vrátí k chování, které přebíná až do Sparku 2.x. V tomto režimu místo použití přetypování ANSI použije starší operace CAST. 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)

Převod typu

Povýšení a priorita typu

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 priority list(od nejužšího po nejširší)
Byte Bajt - Krátký ->> Int -> Dlouhý -> Desetinné číslo -> Float* -> Double
Krátké Short - Int ->> Long -> Decimal-> Float* -> Double
Int Int - Long ->> Decimal -> Float* -> Double
Dlouhé celé číslo Long - Decimal ->> Float* -> Double
Desetinné číslo Desetinné číslo -> Float* -> Double
Float Plovák –> double
Hodnota s dvojitou přesností Hodnota s dvojitou přesností
Datum Datum –> časové razítko
Časové razítko Časové razítko
String Řetězcové
Binární Binární
Logické Logické
Interval Interval
Mapovat Mapu**
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: Graphical representation of precedence rules

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.
  • Odvozujte typ argumentu pro funkce, které očekávají typ sdíleného argumentu pro více parametrů, například shod, nejméně nebo největší.
  • Odvozujte typy operandů pro operátory, jako jsou aritmetické operace nebo porovnání.
  • Odvozujte typ výsledku pro výrazy, jako je výraz velká a malá písmena.
  • Odvození elementu, klíče nebo hodnotových typů pro maticové a mapové konstruktory

Pokud se nejméně běžný typ přeloží na FLOAT, použijí se speciální pravidla. Pokud je některý z typů TYPU INT, BIGINT nebo DECIMAL, nejméně společný typ se vloží do double, aby nedošlo ke 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 výjimku, pokud klíč v mapě neexistuje.
  • elt: Tato funkce vyvolá výjimku 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á, ArrayIndexOutOfBoundsException pokud používá neplatné indexy.
  • map_col[key]: Tento operátor vyvolá, NoSuchElementException pokud 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á s tím rozdílem CAST, že vrací NULL výsledek místo vyvolání výjimky při chybě za běhu.
  • try_add: shodný s operátorem +sčítání , s tím rozdílem, že vrátí NULL výsledek místo vyvolání výjimky při přetečení celočíselné hodnoty.
  • try_divide: shodný s operátorem /dělení s tím rozdílem, že vrátí NULL výsledek místo vyvolání výjimky při dělení 0.

Klíčová slova SQL

Pokud spark.sql.ansi.enabled je true, Spark SQL použije analyzátor režimu ANSI. V tomto režimu má Spark SQL dva druhy klíčových slov:

  • Vyhrazená klíčová slova: Vyhrazená klíčová slova, která se nedají použít jako identifikátory pro tabulku, zobrazení, sloupec, funkci, alias atd.
  • Nezařazený klíčová slova: Klíčová slova, která mají zvláštní význam pouze v konkrétních kontextech a lze ji použít jako identifikátory v jiných kontextech. Jedná se například EXPLAIN SELECT ... o příkaz, ale funkci EXPLAIN je možné použít jako identifikátory na jiných místech.

Pokud je režim ANSI zakázaný, Spark SQL má dva druhy klíčových slov:

  • Nezaplacená klíčová slova: Stejná definice jako ta, která je povolená v režimu ANSI.
  • Klíčová slova typu Strict-Non-reserved: Striktní verze nevyhraděných klíčových slov, která nelze použít jako alias tabulky.

Ve výchozím nastavení spark.sql.ansi.enabled je false.

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
ADD nezařazený nezařazený nezařazený
PO nezařazený nezařazený nezařazený
ALL Vyhrazena nezařazený Vyhrazena
ZMĚNA nezařazený nezařazený Vyhrazena
VŽDY nezařazený nezařazený nezařazený
ANALÝZA nezařazený nezařazený nezařazený
A Vyhrazena nezařazený Vyhrazena
ANTI nezařazený strict-non-reserved nezařazený
LIBOVOLNÉ Vyhrazena nezařazený Vyhrazena
ARCHIV nezařazený nezařazený nezařazený
POLE nezařazený nezařazený Vyhrazena
AS Vyhrazena nezařazený Vyhrazena
ASC nezařazený nezařazený nezařazený
AT nezařazený nezařazený Vyhrazena
AUTORIZACE Vyhrazena nezařazený Vyhrazena
BETWEEN nezařazený nezařazený Vyhrazena
OBOJÍ Vyhrazena nezařazený Vyhrazena
KBELÍK nezařazený nezařazený nezařazený
KBELÍKY nezařazený nezařazený nezařazený
BY nezařazený nezařazený Vyhrazena
MEZIPAMĚTI nezařazený nezařazený nezařazený
KASKÁDY nezařazený nezařazený nezařazený
CASE Vyhrazena nezařazený Vyhrazena
CAST Vyhrazena nezařazený Vyhrazena
ZMĚNIT nezařazený nezařazený nezařazený
ZKONTROLUJTE Vyhrazena nezařazený Vyhrazena
JASNÉ nezařazený nezařazený nezařazený
CLUSTERU nezařazený nezařazený nezařazený
CLUSTERED nezařazený nezařazený nezařazený
CODEGEN nezařazený nezařazený nezařazený
COLLATE Vyhrazena nezařazený Vyhrazena
COLLECTION nezařazený nezařazený nezařazený
SLOUPEC Vyhrazena nezařazený Vyhrazena
SLOUPCE nezařazený nezařazený nezařazený
COMMENT nezařazený nezařazený nezařazený
SPÁCHAT nezařazený nezařazený Vyhrazena
KOMPAKTNÍ nezařazený nezařazený nezařazený
KOMPRIMACE nezařazený nezařazený nezařazený
COMPUTE nezařazený nezařazený nezařazený
ZŘETĚZIT nezařazený nezařazený nezařazený
OMEZENÍ Vyhrazena nezařazený Vyhrazena
NÁKLADY nezařazený nezařazený nezařazený
CREATE Vyhrazena nezařazený Vyhrazena
KŘÍŽ Vyhrazena strict-non-reserved Vyhrazena
Datové krychle nezařazený nezařazený Vyhrazena
AKTUÁLNÍ nezařazený nezařazený Vyhrazena
CURRENT_DATE Vyhrazena nezařazený Vyhrazena
CURRENT_TIME Vyhrazena nezařazený Vyhrazena
CURRENT_TIMESTAMP Vyhrazena nezařazený Vyhrazena
CURRENT_USER Vyhrazena nezařazený Vyhrazena
DATA nezařazený nezařazený nezařazený
DATABÁZE nezařazený nezařazený nezařazený
DATABÁZE nezařazený nezařazený nezařazený
DAY nezařazený nezařazený nezařazený
DBPROPERTIES nezařazený nezařazený nezařazený
DEFINOVÁNY nezařazený nezařazený nezařazený
DELETE nezařazený nezařazený Vyhrazena
ODDĚLENÝ nezařazený nezařazený nezařazený
DESC nezařazený nezařazený nezařazený
POPISUJÍ nezařazený nezařazený Vyhrazena
Systém souborů DFS nezařazený nezařazený nezařazený
ADRESÁŘE nezařazený nezařazený nezařazený
ADRESÁŘ nezařazený nezařazený nezařazený
ODLIŠNÉ Vyhrazena nezařazený Vyhrazena
DISTRIBUOVAT nezařazený nezařazený nezařazený
DIV nezařazený nezařazený nikoli klíčové slovo
DROP nezařazený nezařazený Vyhrazena
ELSE Vyhrazena nezařazený Vyhrazena
END Vyhrazena nezařazený Vyhrazena
UNIKNOUT Vyhrazena nezařazený Vyhrazena
UTEKL nezařazený nezařazený nezařazený
EXCEPT Vyhrazena strict-non-reserved Vyhrazena
EXCHANGE nezařazený nezařazený nezařazený
EXISTS nezařazený nezařazený Vyhrazena
EXPLAIN nezařazený nezařazený nezařazený
VÝVOZNÍ nezařazený nezařazený nezařazený
EXTENDED nezařazený nezařazený nezařazený
EXTERNÍ nezařazený nezařazený Vyhrazena
EXTRAHOVAT nezařazený nezařazený Vyhrazena
FALSE Vyhrazena nezařazený Vyhrazena
NAČTENÍ Vyhrazena nezařazený Vyhrazena
POLE nezařazený nezařazený nezařazený
FILTR Vyhrazena nezařazený Vyhrazena
FILEFORMAT nezařazený nezařazený nezařazený
FIRST nezařazený nezařazený nezařazený
FN nezařazený nezařazený nezařazený
NÁSLEDUJÍCÍ nezařazený nezařazený nezařazený
FOR Vyhrazena nezařazený Vyhrazena
ZAHRANIČNÍ Vyhrazena nezařazený Vyhrazena
FORMÁT nezařazený nezařazený nezařazený
FORMÁTOVANÝ nezařazený nezařazený nezařazený
FROM Vyhrazena nezařazený Vyhrazena
PLNÉ Vyhrazena strict-non-reserved Vyhrazena
FUNCTION nezařazený nezařazený Vyhrazena
FUNKCE nezařazený nezařazený nezařazený
GENEROVANÉ nezařazený nezařazený nezařazený
GLOBÁLNÍ nezařazený nezařazený Vyhrazena
GRANT Vyhrazena nezařazený Vyhrazena
GRANTY nezařazený nezařazený nezařazený
GROUP Vyhrazena nezařazený Vyhrazena
SESKUPENÍ nezařazený nezařazený Vyhrazena
HAVING Vyhrazena nezařazený Vyhrazena
HODINU nezařazený nezařazený nezařazený
IF nezařazený nezařazený nikoli klíčové slovo
IGNORE nezařazený nezařazený nezařazený
IMPORT nezařazený nezařazený nezařazený
IN Vyhrazena nezařazený Vyhrazena
INDEX nezařazený nezařazený nezařazený
INDEXY nezařazený nezařazený nezařazený
VNITŘNÍ Vyhrazena strict-non-reserved Vyhrazena
INPATH nezařazený nezařazený nezařazený
INPUTFORMAT nezařazený nezařazený nezařazený
INSERT nezařazený nezařazený Vyhrazena
INTERSECT Vyhrazena strict-non-reserved Vyhrazena
INTERVAL nezařazený nezařazený Vyhrazena
INTO Vyhrazena nezařazený Vyhrazena
IS Vyhrazena nezařazený Vyhrazena
POLOŽKY nezařazený nezařazený nezařazený
JOIN Vyhrazena strict-non-reserved Vyhrazena
KEY nezařazený nezařazený nezařazený
KLÍČE nezařazený nezařazený nezařazený
LAST nezařazený nezařazený nezařazený
BOČNÍ Vyhrazena strict-non-reserved Vyhrazena
LÍNÝ nezařazený nezařazený nezařazený
VEDOUCÍ Vyhrazena nezařazený Vyhrazena
LEFT Vyhrazena strict-non-reserved Vyhrazena
LIKE nezařazený nezařazený Vyhrazena
ILIKE nezařazený nezařazený nezařazený
LIMIT nezařazený nezařazený nezařazený
ŘÁDKY nezařazený nezařazený nezařazený
SEZNAM nezařazený nezařazený nezařazený
NAČÍST nezařazený nezařazený nezařazený
LOCAL nezařazený nezařazený Vyhrazena
UMÍSTĚNÍ nezařazený nezařazený nezařazený
ZÁMEK nezařazený nezařazený nezařazený
ZÁMKY nezařazený nezařazený nezařazený
LOGICKÉ nezařazený nezařazený nezařazený
MACRO nezařazený nezařazený nezařazený
MAPU nezařazený nezařazený nezařazený
ODPOVÍDAJÍCÍ nezařazený nezařazený nezařazený
SLOUČIT nezařazený nezařazený nezařazený
MINUTU nezařazený nezařazený nezařazený
MINUS nezařazený strict-non-reserved nezařazený
MONTH nezařazený nezařazený nezařazený
MSCK nezařazený nezařazený nezařazený
OBOR NÁZVŮ nezařazený nezařazený nezařazený
OBORY NÁZVŮ nezařazený nezařazený nezařazený
PŘÍRODNÍ Vyhrazena strict-non-reserved Vyhrazena
NE nezařazený nezařazený Vyhrazena
NOT Vyhrazena nezařazený Vyhrazena
NULL Vyhrazena nezařazený Vyhrazena
NULLS nezařazený nezařazený nezařazený
OF nezařazený nezařazený Vyhrazena
ON Vyhrazena strict-non-reserved Vyhrazena
POUZE Vyhrazena nezařazený Vyhrazena
OPTION nezařazený nezařazený nezařazený
OPTIONS nezařazený nezařazený nezařazený
NEBO Vyhrazena nezařazený Vyhrazena
OBJEDNÁVKY Vyhrazena nezařazený Vyhrazena
OUT nezařazený nezařazený Vyhrazena
VNĚJŠÍ Vyhrazena nezařazený Vyhrazena
OUTPUTFORMAT nezařazený nezařazený nezařazený
PŘES nezařazený nezařazený nezařazený
OVERLAPS Vyhrazena nezařazený Vyhrazena
PŘEKRYTÍ nezařazený nezařazený nezařazený
PŘEPSAT nezařazený nezařazený nezařazený
ODDÍL nezařazený nezařazený Vyhrazena
ROZDĚLENY nezařazený nezařazený nezařazený
ODDÍLY nezařazený nezařazený nezařazený
PROCENT nezařazený nezařazený nezařazený
PIVOT nezařazený nezařazený nezařazený
UMÍSTĚNÍ nezařazený nezařazený nezařazený
POZICI nezařazený nezařazený Vyhrazena
PŘEDCHOZÍ nezařazený nezařazený nezařazený
PRIMÁRNÍ Vyhrazena nezařazený Vyhrazena
OBJEKTY nezařazený nezařazený nezařazený
VLASTNOSTI nezařazený nezařazený nezařazený
PURGE nezařazený nezařazený nezařazený
NÁROK Vyhrazena nezařazený Vyhrazena
DOTAZ nezařazený nezařazený nezařazený
ROZSAH nezařazený nezařazený Vyhrazena
PŘÍJEMCE nezařazený nezařazený nezařazený
PŘÍJEMCI nezařazený nezařazený nezařazený
RECORDREADER nezařazený nezařazený nezařazený
RECORDWRITER nezařazený nezařazený nezařazený
OBNOVIT nezařazený nezařazený nezařazený
SNÍŽIT nezařazený nezařazený nezařazený
ODKAZY Vyhrazena nezařazený Vyhrazena
REFRESH nezařazený nezařazený nezařazený
REGEXP nezařazený nezařazený nikoli klíčové slovo
ODEBRAT nezařazený nezařazený nezařazený
RENAME nezařazený nezařazený nezařazený
OPRAVY nezařazený nezařazený nezařazený
REPLACE nezařazený nezařazený nezařazený
RESET nezařazený nezařazený nezařazený
RESPEKT nezařazený nezařazený nezařazený
OMEZIT nezařazený nezařazený nezařazený
REVOKE nezařazený nezařazený Vyhrazena
RIGHT Vyhrazena strict-non-reserved Vyhrazena
RLIKE nezařazený nezařazený nezařazený
ROLE nezařazený nezařazený nezařazený
ROLE nezařazený nezařazený nezařazený
VRÁCENÍ ZPĚT nezařazený nezařazený Vyhrazena
KUMULATIVNÍ nezařazený nezařazený Vyhrazena
ROW nezařazený nezařazený Vyhrazena
řádky nezařazený nezařazený Vyhrazena
SCHÉMA nezařazený nezařazený nezařazený
SCHÉMATA nezařazený nezařazený nikoli klíčové slovo
DRUHÉ nezařazený nezařazený nezařazený
VÝBĚR Vyhrazena nezařazený Vyhrazena
SEMI nezařazený strict-non-reserved nezařazený
ODDĚLENÉ nezařazený nezařazený nezařazený
SERDE nezařazený nezařazený nezařazený
SERDEPROPERTIES nezařazený nezařazený nezařazený
SESSION_USER Vyhrazena nezařazený Vyhrazena
SET nezařazený nezařazený Vyhrazena
NASTAVÍ nezařazený nezařazený nezařazený
SDÍLET nezařazený nezařazený nezařazený
AKCIE nezařazený nezařazený nezařazený
UKÁZAT nezařazený nezařazený nezařazený
ZKOSENÝ nezařazený nezařazený nezařazený
NĚKTERÉ Vyhrazena nezařazený Vyhrazena
ŘAZENÍ nezařazený nezařazený nezařazený
SEŘAZENY nezařazený nezařazený nezařazený
START nezařazený nezařazený Vyhrazena
STATISTIKY nezařazený nezařazený nezařazený
ULOŽENY nezařazený nezařazený nezařazený
STRATIFY nezařazený nezařazený nezařazený
STRUCT nezařazený nezařazený nezařazený
SUBSTR nezařazený nezařazený nezařazený
SUBSTRING nezařazený nezařazený nezařazený
SYNCHRONIZACE nezařazený nezařazený nezařazený
TABULKA Vyhrazena nezařazený Vyhrazena
TABULKY nezařazený nezařazený nezařazený
TABLESAMPLE nezařazený nezařazený Vyhrazena
TBLPROPERTIES nezařazený nezařazený nezařazený
TEMP nezařazený nezařazený nikoli klíčové slovo
DOČASNÉ nezařazený nezařazený nezařazený
UKONČENA nezařazený nezařazený nezařazený
THEN Vyhrazena nezařazený Vyhrazena
TIME Vyhrazena nezařazený Vyhrazena
TO Vyhrazena nezařazený Vyhrazena
TOUCH nezařazený nezařazený nezařazený
KONCOVÉ Vyhrazena nezařazený Vyhrazena
TRANSAKCE nezařazený nezařazený nezařazený
TRANSAKCE nezařazený nezařazený nezařazený
TRANSFORMACE nezařazený nezařazený nezařazený
TRIM nezařazený nezařazený nezařazený
TRUE nezařazený nezařazený Vyhrazena
ZKRÁTIT nezařazený nezařazený Vyhrazena
TRY_CAST nezařazený nezařazený nezařazený
TYP nezařazený nezařazený nezařazený
UNARCHIVE nezařazený nezařazený nezařazený
NEOMEZENĚ nezařazený nezařazený nezařazený
UNCACHE nezařazený nezařazený nezařazený
UNION Vyhrazena strict-non-reserved Vyhrazena
JEDINEČNÝ Vyhrazena nezařazený Vyhrazena
Neznámé Vyhrazena nezařazený Vyhrazena
ODEMKNOUT nezařazený nezařazený nezařazený
ODSTAVENÍ nezařazený nezařazený nezařazený
UPDATE nezařazený nezařazený Vyhrazena
USE nezařazený nezařazený nezařazený
UŽIVATEL Vyhrazena nezařazený Vyhrazena
USING Vyhrazena strict-non-reserved Vyhrazena
HODNOTY nezařazený nezařazený Vyhrazena
ZOBRAZIT nezařazený nezařazený nezařazený
ZOBRAZENÍ nezařazený nezařazený nezařazený
Když... Vyhrazena nezařazený Vyhrazena
WHERE Vyhrazena nezařazený Vyhrazena
OKNO nezařazený nezařazený Vyhrazena
WITH Vyhrazena nezařazený Vyhrazena
YEAR nezařazený nezařazený nezařazený
ZÓNY nezařazený nezařazený nezařazený