Databricks Runtime'da ANSI uyumluluğu

Şunlar için geçerlidir:check marked yes Databricks Runtime

Bu makalede Databricks Runtime'da ANSI uyumluluğu açıklanmaktadır. Databricks SQL'de ANSI modu için bkz . ANSI_MODE.

Spark SQL,ANSI SQL standardıyla uyumluluğu desteklemek için iki seçeneğe sahiptir: spark.sql.ansi.enabled ve spark.sql.storeAssignmentPolicy.

spark.sql.ansi.enabled olarak ayarlandığında trueSpark SQL, Hive uyumlu olmak yerine ANSI uyumlu bir diyalekt kullanır. Örneğin Spark, SQL işlecine/işlevine yapılan girişler geçersizse null sonuçlar döndürmek yerine çalışma zamanında bir özel durum oluşturur. Bazı ANSI diyalekt özellikleri doğrudan ANSI SQL standardına ait olmayabilir, ancak davranışları ANSI SQL'in stiliyle uyumludur.

Ayrıca, Spark SQL'in tablodaki satırları depolarken örtük atama davranışlarını denetlemeye yönelik bağımsız bir seçeneği vardır. Atama davranışları, standart depolama atama kuralları olarak tanımlanır.

spark.sql.storeAssignmentPolicy olarak ayarlandığında ANSISpark SQL, ANSI deposu atama kurallarına uyar. Varsayılan değeri ANSIolduğundan, yapılandırma varsayılan olarak devre dışı bırakıldığından bu ayrı bir yapılandırmadır spark.sql.ansi.enabled .

Aşağıdaki tabloda davranışı özetlemektedir:

Özellik Adı Varsayılan Anlamı
spark.sql.ansi.enabled yanlış Doğru olduğunda Spark, ANSI SQL belirtimine uymayı dener:

* Tamsayı veya ondalık alandaki herhangi bir işlemde taşma oluşursa çalışma zamanı özel durumu oluşturur.
* ANSI SQL'in ayrılmış anahtar sözcüklerini SQL ayrıştırıcısında tanımlayıcı olarak kullanmayı yasaklar.
spark.sql.storeAssignmentPolicy ANSI Spark, bir değeri farklı bir veri türüne sahip bir sütunda depolarken tür dönüştürme gerçekleştirir. Tür zorlama kuralları için üç ilke vardır: ANSI, legacyve strict.

* ANSI: Spark, ANSI SQL'e göre tür zorlaması gerçekleştirir. Pratikte davranış çoğunlukla PostgreSQL ile aynıdır. Dizeyi int'e veya çiftten boole'ye dönüştürme gibi bazı makul olmayan tür dönüştürmelerine izin vermiyor.
* legacy: Spark, çok gevşek olan geçerli bir Atama olduğu sürece tür zorlamasına izin verir. Örneğin, dizeyi int veya double'ı boole değerine dönüştürmeye izin verilir. Ayrıca Spark 2.x'teki tek davranıştır ve Hive ile uyumludur.
* strict: Spark, tür zorlamasında olası duyarlık kaybına veya veri kesilmesine izin vermez; örneğin, çifti int veya ondalıktan çifte dönüştürmeye izin verilmez.

Aşağıdaki alt bölümler, ANSI modu etkinleştirildiğinde aritmetik işlemlerde, tür dönüştürmelerinde ve SQL ayrıştırmada davranış değişiklikleri sunar. Spark SQL'de tür dönüştürmeleri için üç tür vardır ve bu makale bunları birer birer tanıtır: atama, mağaza ataması ve tür zorlaması.

Aritmetik işlemler

Spark SQL'de, sayısal türlerde gerçekleştirilen aritmetik işlemler (ondalık hariç) taşmalar için varsayılan olarak denetlenmemektedir. Bu, bir işlemin taşmalara neden olması durumunda sonucun Java veya Scala programındaki ilgili işlemle aynı olduğu anlamına gelir (Örneğin, 2 tamsayının toplamı temsil edilebilir maksimum değerden yüksekse, sonuç negatif bir sayıdır). Öte yandan, Spark SQL ondalık taşmalar için null döndürür. spark.sql.ansi.enabled olarak ayarlandığında true ve sayısal ve aralıklı aritmetik işlemlerde taşma oluştuğunda, çalışma zamanında aritmetik bir özel durum oluşturur.

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

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

Cast

spark.sql.ansi.enabled olarak ayarlandığındatrue, söz dizimine göre CAST açık atama, bir dizeden tamsayıya dönüştürmeler gibi standartta tanımlanan geçersiz atama desenleri için bir çalışma zamanı özel durumu oluşturur.

CAST Spark ANSI modunun yan tümcesi, ISO/IEC 9075-2:2011 Bilgi teknolojisi — Veritabanı dilleri - SQL — Bölüm 2: Temel (SQL/Foundation)'da bölüm 6.13 "atama belirtimi" söz dizimi kurallarına uyar, ancak ANSI standardına göre izin verilmeyen aşağıdaki basit tür dönüştürmelerine özel olarak izin verir:

  • NumericType <=> BooleanType
  • StringType <=> BinaryType

Bir ifadedeki CAST kaynak ve hedef veri türünün geçerli birleşimleri aşağıdaki tablo tarafından verilmiştir. "Y", birleşimin kısıtlama olmadan söz dizimsel olarak geçerli olduğunu ve "N" birleşimin geçerli olmadığını gösterir.

SourceTarget Sayısal String Tarih Zaman damgası Aralık Boolean İkilik Dizi Harita Yapı
Sayısal Y Y N N N Y N N N N
String Y Y Y Y Y Y Y N N N
Tarih N Y Y Y N N N N N N
Zaman damgası N Y Y Y N N N N N N
Aralık N Y N N Y N N N N N
Boolean Y Y N N N Y N N N N
İkilik Y N N N N N Y N N N
Dizi N N N N N N N Y N N
Harita N N N N N N N N Y N
Yapı 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

Mağaza ataması

Ayar spark.sql.storeAssignmentPolicy varsayılan olarak olarak ayarlanır ANSI. Bu ayarda, kaynak değerlerin veri türleri hedef sütun türleriyle eşleşmediğinde Spark SQL, INSERT deyimine otomatik olarak ANSI CAST yan tümceleri ekler. Spark, bu ilke altında tablo ekleme sırasında geçersiz atamaları denetler ve reddeder ve veri kalitesini sağlamak için bir özel durum oluşturur. Başka bir deyişle, tür uyuşmazlığı nedeniyle ekleme girişimi başarısız olursa, tabloya kısmen herhangi bir veri yazılmasıyla sonuçlanmaz.

Örnekler:

-- 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

Bu örnekler Spark SQL'in uyumsuz verilerin eklenmesini önleyerek veri bütünlüğünü korumasını gösterir.

spark.sql.storeAssignmentPolicy olarak ayarlandığında LEGACYSpark SQL, Spark 2.x'e kadar yaygın olan davranışa geri döner. Bu modda, ANSI CAST kullanmak yerine eski CAST işlemlerini uygular. Bu ilkenin altında, tablo eklemeleri sırasında geçersiz atamalar, özel durum oluşturma yerine NULL değerlerin veya yanlış değerlerin eklenmesiyle sonuçlanır. Örnekler:

-- 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)

Tür zorlaması

Tür Yükseltme ve Öncelik

spark.sql.ansi.enabled olarak ayarlandığında trueSpark SQL, veri türleri arasındaki çakışmaların nasıl çözüldüğünü yöneten çeşitli kurallar kullanır. Bu çakışma çözümünün merkezinde, belirli bir veri türünün değerlerinin örtük olarak başka bir veri türüne yükseltilip yükseltilemeyeceğini tanımlayan Tür Önceliği Listesi yer alır.

Veri türü öncelik listesi (en dardan en genişe)
Bayt Bayt - Kısa -> Int -> Uzun -> Ondalık -> Kayan* -> Çift>
Kısa Kısa -> Int -> Uzun -> Ondalık-> Kayan* -> Çift
Int Int -> Uzun -> Ondalık -> Kayan* -> Çift
Uzun Uzun -> Ondalık -> Kayan* -> Çift
Ondalık Ondalık -> Kayan* -> Çift
Satışa Arz Float -> Çift
Çift Çift
Tarih Tarih -> Zaman Damgası
Zaman damgası Zaman damgası
String String
İkilik İkilik
Boolean Boolean
Aralık Aralık
Harita Harita**
Dizi Dizi**
Yapı Yapı**
  • En az yaygın tür çözümlemesi için duyarlık kaybını önlemek için kayan nokta atlanır.

** Karmaşık bir tür için öncelik kuralı, bileşen öğelerine özyinelemeli olarak uygulanır.

Dize türü ve yazılmamış NULL için özel kurallar geçerlidir. Null başka bir türe yükseltilebilirken, Dize herhangi bir basit veri türüne yükseltilebilir.

Bu, öncelik listesinin yönlendirilmiş ağaç olarak grafiksel bir gösterimidir: Graphical representation of precedence rules

En Az Ortak Tür Çözümlemesi

Bir tür kümesindeki en az yaygın tür, tür kümesinin tüm öğeleri tarafından öncelik listesinden ulaşılabilen en dar türdür.

Aşağıdakiler için en az yaygın tür çözümlemesi kullanılır:

  • Türün parametresini bekleyen bir işlevin daha dar bir tür bağımsız değişkeni kullanılarak çağrılıp çağrılamayacağına karar verin.
  • Birleşim, en az veya en büyük gibi birden çok parametre için paylaşılan bir bağımsız değişken türü bekleyen işlevler için bağımsız değişken türünü türetin.
  • Aritmetik işlemler veya karşılaştırmalar gibi işleçler için işlenen türlerini türetin.
  • Büyük/küçük harf ifadesi gibi ifadeler için sonuç türünü türetin.
  • Dizi ve eşleme oluşturucuları için öğe, anahtar veya değer türlerini türetin.

En az ortak tür FLOAT olarak çözümlenirse özel kurallar uygulanır. Kayan tür değerleriyle, türlerden herhangi biri INT, BIGINT veya DECIMAL ise, olası basamak kaybını önlemek için en az ortak tür DOUBLE'a gönderilir.

-- 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.

SQL işlevleri

Bazı SQL işlevlerinin davranışı ANSI modu (spark.sql.ansi.enabled=true) altında farklı olabilir.

  • size: Bu işlev ANSI modunda null giriş için null döndürür.
  • element_at:
    • Bu işlev geçersiz dizinler ArrayIndexOutOfBoundsException kullanılıyorsa oluşturur.
    • Bu işlev, haritada anahtar yoksa oluşturur NoSuchElementException .
  • elt: Bu işlev geçersiz dizinler ArrayIndexOutOfBoundsException kullanılıyorsa oluşturur.
  • make_date: Sonuç tarihi geçersizse bu işlev bir özel durumla başarısız olur.
  • make_timestamp: Sonuç zaman damgası geçersizse bu işlev bir özel durumla başarısız olur.
  • make_interval: Sonuç aralığı geçersizse bu işlev bir özel durumla başarısız olur.
  • next_day: Giriş geçerli bir haftanın günü değilse bu işlev oluşturur IllegalArgumentException .
  • parse_url: Giriş dizesi geçerli bir URL değilse bu işlev oluşturur IllegalArgumentException .
  • to_date: Giriş dizesi ayrıştırılamıyorsa veya desen dizesi geçersizse bu işlev bir özel durumla başarısız olur.
  • to_timestamp: Giriş dizesi ayrıştırılamıyorsa veya desen dizesi geçersizse bu işlev bir özel durumla başarısız olur.
  • to_unix_timestamp: Giriş dizesi ayrıştırılamıyorsa veya desen dizesi geçersizse bu işlev bir özel durumla başarısız olur.
  • unix_timestamp: Giriş dizesi ayrıştırılamıyorsa veya desen dizesi geçersizse bu işlev bir özel durumla başarısız olur.

SQL işleçleri

Bazı SQL işleçlerinin davranışı ANSI modu (spark.sql.ansi.enabled=true ) altında farklı olabilir.

  • array_col[index]: Bu işleç geçersiz dizinler ArrayIndexOutOfBoundsException kullanılıyorsa oluşturur.
  • map_col[key]: Bu işleç, anahtar haritada yoksa atar NoSuchElementException .
  • CAST(string_col AS TIMESTAMP): Giriş dizesi ayrıştırılamıyorsa bu işleç özel durumla başarısız olur.
  • CAST(string_col AS DATE): Giriş dizesi ayrıştırılamıyorsa bu işleç özel durumla başarısız olur.

ANSI Modu için Yararlı İşlevler

ANSI modu açık olduğunda, geçersiz işlemler için özel durumlar oluşturur. Bu tür özel durumları engellemek için aşağıdaki SQL işlevlerini kullanabilirsiniz.

  • try_cast: ile aynıdır CAST, ancak çalışma zamanı hatasında özel durum oluşturmak yerine sonuç döndürür NULL .
  • try_add: add işleciyle +aynıdır, ancak tam sayı değeri taşmasında bir özel durum oluşturmak yerine sonuç döndürür NULL .
  • try_divide: bölme işleciyle /aynıdır, ancak 0'ı bölmek için bir özel durum oluşturmak yerine sonuç döndürür NULL .

SQL anahtar sözcükleri

Doğru olduğunda spark.sql.ansi.enabled Spark SQL ANSI modu ayrıştırıcısını kullanır. Bu modda Spark SQL'in iki tür anahtar sözcüğü vardır:

  • Ayrılmış anahtar sözcükler: Ayrılmış anahtar sözcüklerdir ve tablo, görünüm, sütun, işlev, diğer ad vb. için tanımlayıcı olarak kullanılamaz.
  • Ayrılmış olmayan anahtar sözcükler: Yalnızca belirli bağlamlarda özel bir anlamı olan ve diğer bağlamlarda tanımlayıcı olarak kullanılabilen anahtar sözcükler. Örneğin, EXPLAIN SELECT ... bir komut olsa da EXPLAIN başka yerlerde tanımlayıcı olarak kullanılabilir.

ANSI modu devre dışı bırakıldığında Spark SQL'in iki tür anahtar sözcüğü vardır:

  • Ayrılmış olmayan anahtar sözcükler: ANSI modu etkinleştirildiğinde kullanılanla aynı tanım.
  • Ayrılmış olmayan katı anahtar sözcükler: Tablo diğer adı olarak kullanılamayan, ayrılmış olmayan anahtar sözcüklerin katı bir sürümü.

Varsayılan olarak spark.sql.ansi.enabled false'tur.

Spark SQL'deki tüm anahtar sözcüklerin listesi aşağıdadır.

Anahtar sözcük Spark SQL ANSI Modu Spark SQL Varsayılan Modu SQL-2016
ADD ayrılmamış ayrılmamış ayrılmamış
SONRA ayrılmamış ayrılmamış ayrılmamış
TÜMÜ Saklı -dır ayrılmamış Saklı -dır
DEĞİŞTİR ayrılmamış ayrılmamış Saklı -dır
HER ZAMAN ayrılmamış ayrılmamış ayrılmamış
ANALİZ ayrılmamış ayrılmamış ayrılmamış
AND Saklı -dır ayrılmamış Saklı -dır
ANTİ ayrılmamış kesin olarak ayrılmamış ayrılmamış
HERHANGİ BİRİ Saklı -dır ayrılmamış Saklı -dır
ARŞİV ayrılmamış ayrılmamış ayrılmamış
DİZİ ayrılmamış ayrılmamış Saklı -dır
AS Saklı -dır ayrılmamış Saklı -dır
ASC ayrılmamış ayrılmamış ayrılmamış
AT ayrılmamış ayrılmamış Saklı -dır
YETKİLENDİRME Saklı -dır ayrılmamış Saklı -dır
BETWEEN ayrılmamış ayrılmamış Saklı -dır
HEM Saklı -dır ayrılmamış Saklı -dır
KOVA ayrılmamış ayrılmamış ayrılmamış
KOVA ayrılmamış ayrılmamış ayrılmamış
BY ayrılmamış ayrılmamış Saklı -dır
ÖNBELLEK ayrılmamış ayrılmamış ayrılmamış
CASCADE ayrılmamış ayrılmamış ayrılmamış
CASE Saklı -dır ayrılmamış Saklı -dır
CAST Saklı -dır ayrılmamış Saklı -dır
DEĞİŞTİRMEK ayrılmamış ayrılmamış ayrılmamış
KONTROL Saklı -dır ayrılmamış Saklı -dır
TEMİZLEYİN ayrılmamış ayrılmamış ayrılmamış
KÜME ayrılmamış ayrılmamış ayrılmamış
CLUSTERED ayrılmamış ayrılmamış ayrılmamış
CODEGEN ayrılmamış ayrılmamış ayrılmamış
COLLATE Saklı -dır ayrılmamış Saklı -dır
COLLECTION ayrılmamış ayrılmamış ayrılmamış
SÜTUN Saklı -dır ayrılmamış Saklı -dır
SÜTUN ayrılmamış ayrılmamış ayrılmamış
YORUM ayrılmamış ayrılmamış ayrılmamış
TAMAMLAMA ayrılmamış ayrılmamış Saklı -dır
KOMPAKT ayrılmamış ayrılmamış ayrılmamış
SıKıŞTıRMALAR ayrılmamış ayrılmamış ayrılmamış
BİLGİ İŞLEM ayrılmamış ayrılmamış ayrılmamış
ARADA ayrılmamış ayrılmamış ayrılmamış
KISITLAMA Saklı -dır ayrılmamış Saklı -dır
MALİYET ayrılmamış ayrılmamış ayrılmamış
CREATE Saklı -dır ayrılmamış Saklı -dır
ÇAPRAZ Saklı -dır kesin olarak ayrılmamış Saklı -dır
KÜP ayrılmamış ayrılmamış Saklı -dır
ŞU ANKİ ayrılmamış ayrılmamış Saklı -dır
CURRENT_DATE Saklı -dır ayrılmamış Saklı -dır
CURRENT_TIME Saklı -dır ayrılmamış Saklı -dır
CURRENT_TIMESTAMP Saklı -dır ayrılmamış Saklı -dır
ÖRNEİN Saklı -dır ayrılmamış Saklı -dır
VERİLER ayrılmamış ayrılmamış ayrılmamış
VERİTABANI ayrılmamış ayrılmamış ayrılmamış
VERİTABANLARI ayrılmamış ayrılmamış ayrılmamış
DAY ayrılmamış ayrılmamış ayrılmamış
DBPROPERTIES ayrılmamış ayrılmamış ayrılmamış
TANIMLANAN ayrılmamış ayrılmamış ayrılmamış
SİL ayrılmamış ayrılmamış Saklı -dır
SINIRLANDIRILMIŞ ayrılmamış ayrılmamış ayrılmamış
DESC ayrılmamış ayrılmamış ayrılmamış
AÇIKLAMAK ayrılmamış ayrılmamış Saklı -dır
DFS ayrılmamış ayrılmamış ayrılmamış
DİZİN ayrılmamış ayrılmamış ayrılmamış
DİZİN ayrılmamış ayrılmamış ayrılmamış
FARKLI Saklı -dır ayrılmamış Saklı -dır
DAĞITMAK ayrılmamış ayrılmamış ayrılmamış
DİV ayrılmamış ayrılmamış anahtar sözcük değil
DROP ayrılmamış ayrılmamış Saklı -dır
ELSE Saklı -dır ayrılmamış Saklı -dır
END Saklı -dır ayrılmamış Saklı -dır
KAÇIŞ Saklı -dır ayrılmamış Saklı -dır
KAÇTI ayrılmamış ayrılmamış ayrılmamış
EXCEPT Saklı -dır kesin olarak ayrılmamış Saklı -dır
EXCHANGE ayrılmamış ayrılmamış ayrılmamış
EXISTS ayrılmamış ayrılmamış Saklı -dır
EXPLAIN ayrılmamış ayrılmamış ayrılmamış
IHRACAT ayrılmamış ayrılmamış ayrılmamış
GENİŞLETİLMİŞ ayrılmamış ayrılmamış ayrılmamış
DIŞ ayrılmamış ayrılmamış Saklı -dır
AYIKLAMAK ayrılmamış ayrılmamış Saklı -dır
FALSE Saklı -dır ayrılmamış Saklı -dır
GETİR Saklı -dır ayrılmamış Saklı -dır
ALANLAR ayrılmamış ayrılmamış ayrılmamış
FİLTRE Saklı -dır ayrılmamış Saklı -dır
FİLEFORMAT ayrılmamış ayrılmamış ayrılmamış
FIRST ayrılmamış ayrılmamış ayrılmamış
FN ayrılmamış ayrılmamış ayrılmamış
AŞAĞIDAKİ ayrılmamış ayrılmamış ayrılmamış
FOR Saklı -dır ayrılmamış Saklı -dır
YABANCI Saklı -dır ayrılmamış Saklı -dır
BİÇİM ayrılmamış ayrılmamış ayrılmamış
BİÇİMLENDİRİLMİŞ ayrılmamış ayrılmamış ayrılmamış
FROM Saklı -dır ayrılmamış Saklı -dır
TAM Saklı -dır kesin olarak ayrılmamış Saklı -dır
FUNCTION ayrılmamış ayrılmamış Saklı -dır
İŞLEVLER ayrılmamış ayrılmamış ayrılmamış
OLUŞTURULAN ayrılmamış ayrılmamış ayrılmamış
GENEL ayrılmamış ayrılmamış Saklı -dır
GRANT Saklı -dır ayrılmamış Saklı -dır
VERİR ayrılmamış ayrılmamış ayrılmamış
GROUP Saklı -dır ayrılmamış Saklı -dır
GRUP -LANDIRMA ayrılmamış ayrılmamış Saklı -dır
HAVING Saklı -dır ayrılmamış Saklı -dır
SAAT ayrılmamış ayrılmamış ayrılmamış
IF ayrılmamış ayrılmamış anahtar sözcük değil
IGNORE ayrılmamış ayrılmamış ayrılmamış
ITHALAT ayrılmamış ayrılmamış ayrılmamış
IN Saklı -dır ayrılmamış Saklı -dır
DİZİN ayrılmamış ayrılmamış ayrılmamış
DİZİN ayrılmamış ayrılmamış ayrılmamış
Saklı -dır kesin olarak ayrılmamış Saklı -dır
INPATH ayrılmamış ayrılmamış ayrılmamış
INPUTFORMAT ayrılmamış ayrılmamış ayrılmamış
INSERT ayrılmamış ayrılmamış Saklı -dır
INTERSECT Saklı -dır kesin olarak ayrılmamış Saklı -dır
ARALIĞI ayrılmamış ayrılmamış Saklı -dır
INTO Saklı -dır ayrılmamış Saklı -dır
IS Saklı -dır ayrılmamış Saklı -dır
BİLEŞEN ayrılmamış ayrılmamış ayrılmamış
JOIN Saklı -dır kesin olarak ayrılmamış Saklı -dır
KEY ayrılmamış ayrılmamış ayrılmamış
ANAHTAR ayrılmamış ayrılmamış ayrılmamış
LAST ayrılmamış ayrılmamış ayrılmamış
LATERAL Saklı -dır kesin olarak ayrılmamış Saklı -dır
TEMBEL ayrılmamış ayrılmamış ayrılmamış
ÖNDE GELEN Saklı -dır ayrılmamış Saklı -dır
LEFT Saklı -dır kesin olarak ayrılmamış Saklı -dır
LIKE ayrılmamış ayrılmamış Saklı -dır
ILİKE ayrılmamış ayrılmamış ayrılmamış
LIMIT ayrılmamış ayrılmamış ayrılmamış
SATIR ayrılmamış ayrılmamış ayrılmamış
LİSTE ayrılmamış ayrılmamış ayrılmamış
YÜK ayrılmamış ayrılmamış ayrılmamış
LOCAL ayrılmamış ayrılmamış Saklı -dır
KONUM ayrılmamış ayrılmamış ayrılmamış
KİLİT ayrılmamış ayrılmamış ayrılmamış
KİLİT ayrılmamış ayrılmamış ayrılmamış
MANTIKSAL ayrılmamış ayrılmamış ayrılmamış
MACRO ayrılmamış ayrılmamış ayrılmamış
HARİTA ayrılmamış ayrılmamış ayrılmamış
EŞLEŞEN ayrılmamış ayrılmamış ayrılmamış
BİRLEŞTİRME ayrılmamış ayrılmamış ayrılmamış
DAKİKA ayrılmamış ayrılmamış ayrılmamış
EKSİ ayrılmamış kesin olarak ayrılmamış ayrılmamış
MONTH ayrılmamış ayrılmamış ayrılmamış
MSCK ayrılmamış ayrılmamış ayrılmamış
AD ALANI ayrılmamış ayrılmamış ayrılmamış
AD ALANLARI ayrılmamış ayrılmamış ayrılmamış
DOĞAL Saklı -dır kesin olarak ayrılmamış Saklı -dır
HAYIR ayrılmamış ayrılmamış Saklı -dır
NOT Saklı -dır ayrılmamış Saklı -dır
NULL Saklı -dır ayrılmamış Saklı -dır
NULLS ayrılmamış ayrılmamış ayrılmamış
OF ayrılmamış ayrılmamış Saklı -dır
AÇIK Saklı -dır kesin olarak ayrılmamış Saklı -dır
SADECE Saklı -dır ayrılmamış Saklı -dır
OPTION ayrılmamış ayrılmamış ayrılmamış
OPTIONS ayrılmamış ayrılmamış ayrılmamış
VEYA Saklı -dır ayrılmamış Saklı -dır
SİPARİŞ Saklı -dır ayrılmamış Saklı -dır
OUT ayrılmamış ayrılmamış Saklı -dır
DIŞ Saklı -dır ayrılmamış Saklı -dır
OUTPUTFORMAT ayrılmamış ayrılmamış ayrılmamış
ÜZERİNDE ayrılmamış ayrılmamış ayrılmamış
OVERLAPS Saklı -dır ayrılmamış Saklı -dır
KAPLAMA ayrılmamış ayrılmamış ayrılmamış
ÜZERİNE ayrılmamış ayrılmamış ayrılmamış
BÖLÜM ayrılmamış ayrılmamış Saklı -dır
BÖLÜMLENMİŞ ayrılmamış ayrılmamış ayrılmamış
BÖLÜMLER ayrılmamış ayrılmamış ayrılmamış
YÜZDE ayrılmamış ayrılmamış ayrılmamış
PİVOT ayrılmamış ayrılmamış ayrılmamış
YERLEŞTİR -EREK ayrılmamış ayrılmamış ayrılmamış
KONUM ayrılmamış ayrılmamış Saklı -dır
ÖNCEKİ ayrılmamış ayrılmamış ayrılmamış
BİRİNCİL Saklı -dır ayrılmamış Saklı -dır
SORUMLULARI ayrılmamış ayrılmamış ayrılmamış
ÖZELLİKLER ayrılmamış ayrılmamış ayrılmamış
PURGE ayrılmamış ayrılmamış ayrılmamış
HAK Saklı -dır ayrılmamış Saklı -dır
SORGU ayrılmamış ayrılmamış ayrılmamış
ARALIĞI ayrılmamış ayrılmamış Saklı -dır
ALICI ayrılmamış ayrılmamış ayrılmamış
ALICI ayrılmamış ayrılmamış ayrılmamış
RECORDREADER ayrılmamış ayrılmamış ayrılmamış
KAYIT YAZARI ayrılmamış ayrılmamış ayrılmamış
KURTARMAK ayrılmamış ayrılmamış ayrılmamış
AZALTMAK ayrılmamış ayrılmamış ayrılmamış
BAŞVURULAR Saklı -dır ayrılmamış Saklı -dır
REFRESH ayrılmamış ayrılmamış ayrılmamış
REGEXP ayrılmamış ayrılmamış anahtar sözcük değil
KALDIR ayrılmamış ayrılmamış ayrılmamış
RENAME ayrılmamış ayrılmamış ayrılmamış
ONARIM ayrılmamış ayrılmamış ayrılmamış
REPLACE ayrılmamış ayrılmamış ayrılmamış
RESET ayrılmamış ayrılmamış ayrılmamış
SAYGI ayrılmamış ayrılmamış ayrılmamış
KISITLAMAK ayrılmamış ayrılmamış ayrılmamış
REVOKE ayrılmamış ayrılmamış Saklı -dır
RIGHT Saklı -dır kesin olarak ayrılmamış Saklı -dır
RLIKE ayrılmamış ayrılmamış ayrılmamış
ROL ayrılmamış ayrılmamış ayrılmamış
ROLLERİ ayrılmamış ayrılmamış ayrılmamış
GERİ ALMA ayrılmamış ayrılmamış Saklı -dır
TOPLAMASI ayrılmamış ayrılmamış Saklı -dır
ROW ayrılmamış ayrılmamış Saklı -dır
SATIRLAR ayrılmamış ayrılmamış Saklı -dır
ŞEMA ayrılmamış ayrılmamış ayrılmamış
ŞEMALAR ayrılmamış ayrılmamış anahtar sözcük değil
IKİNCİ ayrılmamış ayrılmamış ayrılmamış
SELECT Saklı -dır ayrılmamış Saklı -dır
YARI ayrılmamış kesin olarak ayrılmamış ayrılmamış
AYRILMIŞ ayrılmamış ayrılmamış ayrılmamış
SERDE ayrılmamış ayrılmamış ayrılmamış
SERDEPROPERTIES ayrılmamış ayrılmamış ayrılmamış
SESSION_USER Saklı -dır ayrılmamış Saklı -dır
SET ayrılmamış ayrılmamış Saklı -dır
AYARLAR ayrılmamış ayrılmamış ayrılmamış
PAYLAŞ ayrılmamış ayrılmamış ayrılmamış
HİSSE ayrılmamış ayrılmamış ayrılmamış
GÖSTER ayrılmamış ayrılmamış ayrılmamış
ÇARPIK ayrılmamış ayrılmamış ayrılmamış
BAZI Saklı -dır ayrılmamış Saklı -dır
SIRALAMA ayrılmamış ayrılmamış ayrılmamış
SIRA -LANMIŞ ayrılmamış ayrılmamış ayrılmamış
BAŞLANGIÇ ayrılmamış ayrılmamış Saklı -dır
ISTATİSTİK ayrılmamış ayrılmamış ayrılmamış
SAKLI ayrılmamış ayrılmamış ayrılmamış
KATMANLAMA ayrılmamış ayrılmamış ayrılmamış
STRUCT ayrılmamış ayrılmamış ayrılmamış
SUBSTR ayrılmamış ayrılmamış ayrılmamış
SUBSTRING ayrılmamış ayrılmamış ayrılmamış
EŞİTLEME ayrılmamış ayrılmamış ayrılmamış
TABLO Saklı -dır ayrılmamış Saklı -dır
TABLOLAR ayrılmamış ayrılmamış ayrılmamış
TABLESAMPLE ayrılmamış ayrılmamış Saklı -dır
TBLPROPERTIES ayrılmamış ayrılmamış ayrılmamış
TEMP ayrılmamış ayrılmamış anahtar sözcük değil
GEÇİ -Cİ ayrılmamış ayrılmamış ayrılmamış
SONLANDIRILDI ayrılmamış ayrılmamış ayrılmamış
THEN Saklı -dır ayrılmamış Saklı -dır
TIME Saklı -dır ayrılmamış Saklı -dır
TO Saklı -dır ayrılmamış Saklı -dır
DOKUNMATİK ayrılmamış ayrılmamış ayrılmamış
IZLEYEN Saklı -dır ayrılmamış Saklı -dır
İŞLEM ayrılmamış ayrılmamış ayrılmamış
HAREKET ayrılmamış ayrılmamış ayrılmamış
DÖNÜŞTÜRMEK ayrılmamış ayrılmamış ayrılmamış
TRIM ayrılmamış ayrılmamış ayrılmamış
TRUE ayrılmamış ayrılmamış Saklı -dır
TRUNCATE ayrılmamış ayrılmamış Saklı -dır
TRY_CAST ayrılmamış ayrılmamış ayrılmamış
TÜR ayrılmamış ayrılmamış ayrılmamış
ARŞIVSIZ ayrılmamış ayrılmamış ayrılmamış
SINIRSIZ ayrılmamış ayrılmamış ayrılmamış
UNCACHE ayrılmamış ayrılmamış ayrılmamış
UNION Saklı -dır kesin olarak ayrılmamış Saklı -dır
BENZER -SİZ Saklı -dır ayrılmamış Saklı -dır
BİLİNMİYOR Saklı -dır ayrılmamış Saklı -dır
KİLİDİNİ ayrılmamış ayrılmamış ayrılmamış
UNSET ayrılmamış ayrılmamış ayrılmamış
UPDATE ayrılmamış ayrılmamış Saklı -dır
USE ayrılmamış ayrılmamış ayrılmamış
KULLANICI Saklı -dır ayrılmamış Saklı -dır
USING Saklı -dır kesin olarak ayrılmamış Saklı -dır
DEĞER ayrılmamış ayrılmamış Saklı -dır
GÖRÜNÜM ayrılmamış ayrılmamış ayrılmamış
GÖRÜNÜMLER ayrılmamış ayrılmamış ayrılmamış
Ne zaman… Saklı -dır ayrılmamış Saklı -dır
WHERE Saklı -dır ayrılmamış Saklı -dır
PENCERE ayrılmamış ayrılmamış Saklı -dır
WITH Saklı -dır ayrılmamış Saklı -dır
YEAR ayrılmamış ayrılmamış ayrılmamış
BÖLGE ayrılmamış ayrılmamış ayrılmamış