Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:
Databricks SQL
Databricks Runtime
Artikel ini menjelaskan kepatuhan ANSI di Databricks Runtime. Untuk mode ANSI di Databricks SQL, lihat ANSI_MODE.
SQL Spark memiliki dua opsi untuk mendukung kepatuhan terhadap standar SQL ANSI: spark.sql.ansi.enabled dan spark.sql.storeAssignmentPolicy.
spark.sql.ansi.enabled(Mode ANSI)- Menggunakan dialek SQL yang mematuhi ANSI, bukan dialek yang kompatibel dengan Apache Hive.
- Melemparkan pengecualian runtime untuk input yang tidak valid alih-alih mengembalikan null.
- Diaktifkan secara default di Apache Spark 4.0 dan Databricks Runtime 17.0 ke atas.
spark.sql.storeAssignmentPolicy(kebijakan penetapan penyimpanan)- Mengontrol transmisi implisit selama penyisipan tabel.
- Diatur default ke
ANSIdan tidak bergantung padaspark.sql.ansi.enabled.
Tabel berikut ini meringkas perilaku:
| Nama Properti | Bawaan | Makna |
|---|---|---|
spark.sql.ansi.enabled |
true | Jika true, Spark mencoba menyesuaikan dengan spesifikasi ANSI SQL:
|
spark.sql.storeAssignmentPolicy |
ANSI | Saat menyimpan nilai ke dalam kolom dengan jenis data yang berbeda, Spark melakukan konversi jenis. Ada tiga kebijakan untuk jenis aturan konversi eksplisit: ANSI, legacy, dan strict.
|
Subbagian berikut menyajikan perubahan perilaku dalam operasi aritmatika, konversi jenis, dan penguraian SQL saat mode ANSI diaktifkan. Untuk jenis konversi di SQL Spark, ada tiga jenisnya dan artikel ini akan memperkenalkannya satu per satu: transmisikan, penugasan penyimpanan, dan jenis konversi eksplisit.
Operasi aritmatika
Dalam SQL Spark, operasi aritmatika yang dilakukan pada jenis numerik (dengan pengecualian desimal) tidak diperiksa untuk luapan secara default.
Hal ini berarti bahwa jika operasi menyebabkan luapan, hasilnya sama dengan operasi yang sesuai dalam program Java atau Scala (Misalnya, jika jumlah 2 bilangan bulat lebih tinggi dari nilai maksimum yang dapat diwakili, hasilnya adalah angka negatif). Di sisi lain, SQL Spark mengembalikan null untuk luapan desimal.
Ketika spark.sql.ansi.enabled diatur ke true dan luapan terjadi dalam operasi aritmatika numerik dan interval, itu melemparkan pengecualian aritmatika pada runtime.
-- `spark.sql.ansi.enabled=true`
> SELECT 2147483647 + 1;
error: integer overflow
-- `spark.sql.ansi.enabled=false`
> SELECT 2147483647 + 1;
-2147483648
Transmisi
Ketika spark.sql.ansi.enabled diatur ke true, transmisi eksplisit dengan sintaks CAST melemparkan pengecualian runtime untuk pola cast ilegal yang ditentukan dalam standar, seperti transmisi dari string ke bilangan bulat.
Klausul CAST mode ANSI Spark mengikuti aturan sintaks dari bagian 6.13 “spesifikasi transmisi” di ISO/IEC 9075-2:2011 Teknologi informasi — Bahasa database - SQL — Bagian 2: Foundation (SQL/Foundation), kecuali secara khusus memungkinkan konversi jenis langsung berikut yang tidak diizinkan sesuai standar ANSI:
- NumericType <=> BooleanType
- StringType <=> BinaryType
Kombinasi tipe data sumber dan target yang valid dalam ekspresi CAST diberikan oleh tabel berikut.
“Y” menunjukkan bahwa kombinasi tersebut valid secara sintaksis tanpa batasan dan “N” menunjukkan bahwa kombinasi tersebut tidak valid.
| SourceTarget | Numerik | string | Tanggal | Tanda Waktu | Jarak Waktu | Boolean | Biner | Array | Peta | Struktur |
|---|---|---|---|---|---|---|---|---|---|---|
| Numerik | Ya | Ya | N | N | N | Ya | N | N | N | N |
| string | Ya | Ya | Ya | Ya | Ya | Ya | Ya | N | N | N |
| Tanggal | N | Ya | Ya | Ya | N | N | N | N | N | N |
| Tanda Waktu | N | Ya | Ya | Ya | N | N | N | N | N | N |
| Jarak Waktu | N | Ya | N | N | Ya | N | N | N | N | N |
| Boolean | Ya | Ya | N | N | N | Ya | N | N | N | N |
| Biner | Ya | N | N | N | N | N | Ya | N | N | N |
| Array | N | N | N | N | N | N | N | Ya | N | N |
| Peta | N | N | N | N | N | N | N | N | Ya | N |
| Struktur | N | N | N | N | N | N | N | N | N | Ya |
-- 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
Penugasan penyimpanan
Pengaturan spark.sql.storeAssignmentPolicy default ke ANSI. Dengan pengaturan ini, ketika jenis data nilai sumber tidak cocok dengan jenis kolom target, Spark SQL secara otomatis menambahkan klausa ANSI CAST ke INSERT pernyataan.
Selama penyisipan tabel di bawah kebijakan ini, Spark memeriksa dan menolak cast yang tidak valid, melemparkan pengecualian untuk memastikan kualitas data. Ini berarti jika upaya penyisipan gagal karena ketidakcocokan jenis, itu tidak akan mengakibatkan data apa pun ditulis sebagian ke tabel.
Contoh:
-- 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
Contoh-contoh ini menunjukkan Spark SQL mencegah data yang tidak kompatibel disisipkan, sehingga mempertahankan integritas data.
Ketika spark.sql.storeAssignmentPolicy diatur ke LEGACY, Spark SQL kembali ke perilaku yang lazim hingga Spark 2.x. Dalam mode ini, alih-alih menggunakan ANSI CAST, ia menerapkan operasi CAST warisan. Di bawah kebijakan ini, cast yang tidak valid selama penyisipan tabel mengakibatkan nilai NULL atau nilai yang salah dimasukkan, daripada melemparkan pengecualian.
Contoh:
-- 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)
Konversi eksplisit jenis
Jenis Promosi dan Prioritas
Saat spark.sql.ansi.enabled diatur ke true, Spark SQL menggunakan beberapa aturan yang mengatur bagaimana konflik antara jenis data diselesaikan.
Inti dari resolusi konflik ini adalah Daftar Prioritas Jenis yang menentukan apakah nilai jenis data tertentu dapat dipromosikan ke jenis data lain secara implisit.
| Jenis Data | daftar prioritas(dari tersempit ke terluas) |
|---|---|
| Bita | Byte -> Pendek -> Int -> Panjang -> Desimal -> Float* -> Ganda |
| Pendek | Pendek -> Int -> Panjang -> Desimal-> Float* -> Ganda |
| Integer | Int -> Panjang -> Desimal -> Float* -> Ganda |
| Panjang | Panjang -> Desimal -> Float* -> Ganda |
| Desimal | Desimal -> Float* -> Ganda |
| Mengapung | Float -> Ganda |
| Laju | Laju |
| Tanggal | Tanggal -> Stempel waktu |
| Tanda Waktu | Tanda Waktu |
| string | string |
| Biner | Biner |
| Boolean | Boolean |
| Jarak Waktu | Jarak Waktu |
| Peta | Peta** |
| Array | Array** |
| Struktur | Struktur** |
- Untuk float resolusi jenis yang paling tidak umum akan dilewati untuk menghindari hilangnya presisi.
** Untuk jenis yang kompleks, aturan prioritas berlaku secara berulang pada elemen komponennya.
Aturan khusus berlaku untuk jenis String dan NULL yang tidak diketik. NULL dapat dipromosikan ke jenis lain, sementara String dapat dipromosikan ke jenis data sederhana apa pun.
Ini adalah penggambaran grafis dari daftar prioritas sebagai pohon yang diarahkan: 
Resolusi Jenis yang Paling Tidak Umum
Jenis paling tidak umum dari sekumpulan jenis adalah jenis tersempit yang dapat dijangkau dari daftar prioritas oleh semua elemen dari kumpulan jenis.
Resolusi jenis yang paling tidak umum digunakan untuk:
- Menentukan apakah suatu fungsi yang mengharapkan parameter dari suatu jenis dapat dipanggil menggunakan argumen dari jenis yang lebih sempit.
- Mendapatkan jenis argumen untuk fungsi yang mengharapkan jenis argumen bersama untuk beberapa parameter, seperti coalesce, paling sedikit, atau terbesar.
- Memperoleh jenis operand untuk operator seperti operasi aritmatika atau perbandingan.
- Memperoleh jenis hasil untuk ekspresi seperti ekspresi kasus.
- Memperoleh elemen, kunci, atau jenis nilai untuk konstruktor array dan peta.
Aturan khusus diterapkan jika jenis yang paling tidak umum memutuskan untuk FLOAT. Dengan nilai jenis float, jika salah satu jenisnya adalah INT, BIGINT, atau DECIMAL, jenis yang paling tidak umum didorong ke DOUBLE untuk menghindari potensi hilangnya digit.
-- 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.
Fungsi SQL
Perilaku beberapa fungsi SQL dapat berbeda dalam mode ANSI (spark.sql.ansi.enabled=true).
-
size: Fungsi ini menghasilkan null untuk input null dalam mode ANSI. -
element_at:- Fungsi ini menampilkan
ArrayIndexOutOfBoundsExceptionjika menggunakan indeks yang tidak valid. - Fungsi ini menampilkan
NoSuchElementExceptionjika kunci tidak ada di peta.
- Fungsi ini menampilkan
-
elt: Fungsi ini menampilkanArrayIndexOutOfBoundsExceptionjika menggunakan indeks yang tidak valid. -
make_date: Fungsi ini gagal dengan pengecualian jika tanggal hasil tidak valid. -
make_timestamp: Fungsi ini gagal dengan pengecualian jika stempel waktu tidak valid. -
make_interval: Fungsi ini gagal dengan pengecualian jika interval hasil tidak valid. -
next_day: Fungsi ini menampilkanIllegalArgumentExceptionjika input bukan hari yang valid dalam seminggu. -
parse_url: Fungsi ini menampilkanIllegalArgumentExceptionjika input string bukan url yang valid. -
to_date: Fungsi ini gagal dengan pengecualian jika string input tidak dapat diurai, atau string pola tidak valid. -
to_timestamp: Fungsi ini gagal dengan pengecualian jika string input tidak dapat diurai, atau string pola tidak valid. -
to_unix_timestamp: Fungsi ini gagal dengan pengecualian jika string input tidak dapat diurai, atau string pola tidak valid. -
unix_timestamp: Fungsi ini gagal dengan pengecualian jika string input tidak dapat diurai, atau string pola tidak valid.
Operator SQL
Perilaku beberapa operator SQL dapat berbeda dalam mode ANSI (spark.sql.ansi.enabled=true).
-
array_col[index]: Operator ini menampilkanArrayIndexOutOfBoundsExceptionjika menggunakan indeks yang tidak valid. -
map_col[key]: Operator ini menampilkanNoSuchElementExceptionjika kunci tidak ada di peta. -
CAST(string_col AS TIMESTAMP): Operator ini gagal dengan pengecualian jika string input tidak dapat diurai. -
CAST(string_col AS DATE): Operator ini gagal dengan pengecualian jika string input tidak dapat diurai.
Fungsi yang berguna untuk Mode ANSI
Saat mode ANSI diaktifkan, mode ini menampilkan pengecualian untuk operasi yang tidak valid. Anda dapat menggunakan fungsi SQL berikut untuk menyembunyikan pengecualian tersebut.
-
try_cast: identik denganCAST, kecuali bahwa ia menampilkan hasilNULLalih-alih memberikan pengecualian pada kesalahan runtime. -
try_add: identik dengan operator tambah+, kecuali bahwa ia menampilkan hasilNULLalih-alih menampilkan pengecualian pada luapan nilai integral. -
try_divide: identik dengan operator pembagian/, kecuali bahwa itu mengembalikan hasilNULLalih-alih memberikan pengecualian pada pembagian 0.
Kata kunci SQL
Ketika keduanya spark.sql.ansi.enabled=true dan spark.sql.ansi.enforceReservedKeywords=true, Spark SQL menggunakan pengurai ANSI.
Secara default, spark.sql.ansi.enforceReservedKeywords adalah false.
Dalam mode pengurai ANSI, kata kunci termasuk dalam dua kategori:
- Dicadangkan: Tidak dapat dipakai sebagai pengidentifikasi (tabel, view, kolom, fungsi, alias, dan sebagainya).
- Tidak dicadangkan: Bertindak sebagai kata kunci hanya dalam konteks tertentu; selain itu, dapat digunakan sebagai pengenal. Misalnya,
EXPLAIN SELECT ...adalah perintah, tetapiEXPLAINdapat digunakan sebagai pengidentifikasi di tempat lain.
Ketika pengurai ANSI tidak digunakan, kata kunci termasuk dalam:
- Tidak dicadangkan: Definisi yang sama seperti di atas.
- Strict-non-reserved: Mirip dengan non-reserved, tetapi tidak dapat digunakan sebagai alias tabel.
Di bawah ini adalah daftar semua kata kunci di Spark SQL.
| Kata kunci | Spark SQL ANSI Mode | Spark SQL Mode Bawaan | SQL-2016 |
|---|---|---|---|
| TAMBAH | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| SESUDAH | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| SEMUA | dicadangkan | tidak dicadangkan | dicadangkan |
| UBAH | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| SELALU | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| MENGANALISIS | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| DAN | dicadangkan | tidak dicadangkan | dicadangkan |
| ANTI | tidak dicadangkan | ketat yang tidak dicadangkan | tidak dicadangkan |
| Apa saja | dicadangkan | tidak dicadangkan | dicadangkan |
| ARSIP | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| ARRAY | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| Amerika Serikat | dicadangkan | tidak dicadangkan | dicadangkan |
| ASC | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| DI | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| OTORISASI | dicadangkan | tidak dicadangkan | dicadangkan |
| ANTARA | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| KEDUANYA | dicadangkan | tidak dicadangkan | dicadangkan |
| EMBER | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| EMBER | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| OLEH | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| TEMBOLOK | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| Rangkaian | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| KASUS | dicadangkan | tidak dicadangkan | dicadangkan |
| Pemeran | dicadangkan | tidak dicadangkan | dicadangkan |
| UBAH | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| CEK | dicadangkan | tidak dicadangkan | dicadangkan |
| KOSONGKAN | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| KELOMPOK | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| TERKUMPUL DALAM GUGUS | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| CODEGEN | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| KOMPILASI | dicadangkan | tidak dicadangkan | dicadangkan |
| KUMPULAN | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| COLUMN | dicadangkan | tidak dicadangkan | dicadangkan |
| COLUMNS | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| KOMENTAR | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| MELAKUKAN | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| PADAT | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| PEMADATAN | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| MENGHITUNG | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| MENGGABUNGKAN | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| CONSTRAINT | dicadangkan | tidak dicadangkan | dicadangkan |
| BIAYA | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| MENCIPTAKAN | dicadangkan | tidak dicadangkan | dicadangkan |
| SALIB | dicadangkan | ketat yang tidak dicadangkan | dicadangkan |
| KUBUS | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| SAAT INI | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| (TANGGAL_SAAT_INI) | dicadangkan | tidak dicadangkan | dicadangkan |
| WAKTU_SAAT_INI | dicadangkan | tidak dicadangkan | dicadangkan |
| CURRENT_TIMESTAMP (stempel waktu saat ini) | dicadangkan | tidak dicadangkan | dicadangkan |
| PENGGUNA_SAAT_INI | dicadangkan | tidak dicadangkan | dicadangkan |
| DATA | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| BASIS DATA | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| DATABASE | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| HARI | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| DBPROPERTIES | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| DIDEFINISIKAN | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| MENGHAPUS | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| DIBATASI | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| Deskripsi | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| URAIKAN | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| DFS | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| DIREKTORI | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| DIREKTORI | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| NYATA | dicadangkan | tidak dicadangkan | dicadangkan |
| MENDISTRIBUSIKAN | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| DIV | tidak dicadangkan | tidak dicadangkan | bukan kata kunci |
| Jatuhkan | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| LAIN | dicadangkan | tidak dicadangkan | dicadangkan |
| AKHIR | dicadangkan | tidak dicadangkan | dicadangkan |
| MELARIKAN DIRI | dicadangkan | tidak dicadangkan | dicadangkan |
| TERLEPAS | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| KECUALI | dicadangkan | ketat yang tidak dicadangkan | dicadangkan |
| PERTUKARAN | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| ADA | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| EXPLAIN | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| EKSPOR | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| DIPERPANJANG | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| EKSTERNAL | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| EKSTRAK | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| SALAH | dicadangkan | tidak dicadangkan | dicadangkan |
| AMBIL | dicadangkan | tidak dicadangkan | dicadangkan |
| RUANG | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| SARINGAN | dicadangkan | tidak dicadangkan | dicadangkan |
| FILEFORMAT | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| FIRST | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| FN | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| BERIKUT | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| untuk | dicadangkan | tidak dicadangkan | dicadangkan |
| ASING | dicadangkan | tidak dicadangkan | dicadangkan |
| Format | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| Terformat | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| DARI | dicadangkan | tidak dicadangkan | dicadangkan |
| PENUH | dicadangkan | ketat yang tidak dicadangkan | dicadangkan |
| FUNGSI | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| FUNGSI | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| DIHASILKAN | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| Global | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| GRANT | dicadangkan | tidak dicadangkan | dicadangkan |
| HIBAH | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| KELOMPOK | dicadangkan | tidak dicadangkan | dicadangkan |
| PENGELOMPOKAN | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| HAVING | dicadangkan | tidak dicadangkan | dicadangkan |
| JAM | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| JIKA | tidak dicadangkan | tidak dicadangkan | bukan kata kunci |
| MENGABAIKAN | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| MENGIMPOR | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| DI | dicadangkan | tidak dicadangkan | dicadangkan |
| INDEKS | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| INDEKS | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| Dalam | dicadangkan | ketat yang tidak dicadangkan | dicadangkan |
| INPATH | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| format masukan | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| INSERT | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| PERPOTONGAN | dicadangkan | ketat yang tidak dicadangkan | dicadangkan |
| Selang | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| KE | dicadangkan | tidak dicadangkan | dicadangkan |
| Negara Islam | dicadangkan | tidak dicadangkan | dicadangkan |
| ITEM | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| JOIN | dicadangkan | ketat yang tidak dicadangkan | dicadangkan |
| JSON | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| KUNCI | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| KUNCI | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| TERAKHIR | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| samping | dicadangkan | ketat yang tidak dicadangkan | dicadangkan |
| MALAS | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| Terkemuka | dicadangkan | tidak dicadangkan | dicadangkan |
| KIRI | dicadangkan | ketat yang tidak dicadangkan | dicadangkan |
| Suka | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| ILIKE | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| LIMIT | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| BARIS | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| LIST | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| MUAT | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| LOKAL | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| TEMPAT | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| KUNCI | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| KUNCI | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| LOGIS | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| MAKRO | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| PETA | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| COCOK | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| GABUNG | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| MENIT | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| MINUS | tidak dicadangkan | ketat yang tidak dicadangkan | tidak dicadangkan |
| BULAN | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| MSCK | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| Ruang Nama (NAMESPACE) | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| NAMESPACE | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| ALAMI | dicadangkan | ketat yang tidak dicadangkan | dicadangkan |
| TIDAK | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| TIDAK | dicadangkan | tidak dicadangkan | dicadangkan |
| NOL | dicadangkan | tidak dicadangkan | dicadangkan |
| NULL | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| DARI | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| AKTIF | dicadangkan | ketat yang tidak dicadangkan | dicadangkan |
| HANYA | dicadangkan | tidak dicadangkan | dicadangkan |
| PILIHAN | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| OPSI | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| ATAU | dicadangkan | tidak dicadangkan | dicadangkan |
| PERINTAH | dicadangkan | tidak dicadangkan | dicadangkan |
| KELUAR | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| LUAR | dicadangkan | tidak dicadangkan | dicadangkan |
| OUTPUTFORMAT | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| ATAS | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| Tumpang Tindih | dicadangkan | tidak dicadangkan | dicadangkan |
| Lapisan Tambahan | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| MENIMPA | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| PARTITION | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| DIPARTISI | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| PARTISI | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| PERSEN | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| PIVOT | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| MENEMPATKAN | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| POSISI | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| SEBELUMNYA | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| UTAMA | dicadangkan | tidak dicadangkan | dicadangkan |
| KEPALA SEKOLAH | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| PROPERTI | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| HAPUS MENYELURUH | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| QUALIFY | dicadangkan | tidak dicadangkan | dicadangkan |
| Kueri | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| kisaran | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| PENERIMA | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| RECIPIENTS | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| Pembaca Rekaman | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| Penulis Data Rekaman | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| SEMBUH | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| KURANGI | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| REFERENSI | dicadangkan | tidak dicadangkan | dicadangkan |
| REFRESH | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| REGEXP | tidak dicadangkan | tidak dicadangkan | bukan kata kunci |
| REMOVE | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| UBAH NAMA | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| MEMPERBAIKI | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| Mengganti | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| RESET | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| HORMAT | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| BATASI | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| REVOKE | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| benar | dicadangkan | ketat yang tidak dicadangkan | dicadangkan |
| RLIKE | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| PERAN | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| PERAN | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| Pengguliran Kembali | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| Penggulungan | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| BARIS | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| BARIS | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| SCHEMA | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| SKEMA | tidak dicadangkan | tidak dicadangkan | bukan kata kunci |
| KEDUA | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| SELECT | dicadangkan | tidak dicadangkan | dicadangkan |
| SEMI | tidak dicadangkan | ketat yang tidak dicadangkan | tidak dicadangkan |
| TERPISAH | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| SERDE | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| SERDEPROPERTIES | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| PENGGUNA_SESI | dicadangkan | tidak dicadangkan | dicadangkan |
| SET | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| SET | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| BAGIKAN | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| SHARES | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| MENAMPILKAN | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| MIRING | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| BEBERAPA | dicadangkan | tidak dicadangkan | dicadangkan |
| URUTKAN | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| DIURUTKAN | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| MULAI | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| STATISTIK | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| DISIMPAN | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| Stratifikasi | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| STRUKTUR | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| SUBSTR | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| substring | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| SYNC | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| TABLE | dicadangkan | tidak dicadangkan | dicadangkan |
| TABLES | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| TABLESAMPLE | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| TBLPROPERTIES | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| TEMP | tidak dicadangkan | tidak dicadangkan | bukan kata kunci |
| SEMENTARA | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| DIAKHIRI | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| MAKA | dicadangkan | tidak dicadangkan | dicadangkan |
| WAKTU | dicadangkan | tidak dicadangkan | dicadangkan |
| KE | dicadangkan | tidak dicadangkan | dicadangkan |
| SENTUH | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| Tertinggal | dicadangkan | tidak dicadangkan | dicadangkan |
| TRANSAKSI | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| TRANSAKSI | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| MENGUBAH | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| PANGKAS | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| BENAR | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| MEMANGKAS | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| TRY_CAST | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| JENIS | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| TIDAK BERSERTIFIKAT | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| TIDAK TERIKAT | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| Bersihkan Cache | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| GABUNGAN | dicadangkan | ketat yang tidak dicadangkan | dicadangkan |
| UNIK | dicadangkan | tidak dicadangkan | dicadangkan |
| TIDAK DIKETAHUI | dicadangkan | tidak dicadangkan | dicadangkan |
| Buka Kunci | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| UNSET | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| UPDATE | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| GUNAKAN | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| PENGGUNA | dicadangkan | tidak dicadangkan | dicadangkan |
| Menggunakan | dicadangkan | ketat yang tidak dicadangkan | dicadangkan |
| VALUES | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| TAMPILAN | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| VIEWS | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| KAPAN | dicadangkan | tidak dicadangkan | dicadangkan |
| WHERE | dicadangkan | tidak dicadangkan | dicadangkan |
| WINDOW | tidak dicadangkan | tidak dicadangkan | dicadangkan |
| DENGAN | dicadangkan | tidak dicadangkan | dicadangkan |
| TAHUN | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |
| ZONA | tidak dicadangkan | tidak dicadangkan | tidak dicadangkan |