التوافق مع ANSI

لدى Spark SQL خياران لدعم التوافق مع معيار SQL ANSI: spark.sql.ansi.enabled و spark.sql.storeAssignmentPolicy .

عند spark.sql.ansi.enabled تعيين إلى ، يستخدم Spark SQL true لهجة متوافقة مع ANSI بدلا من أن تكون متوافقة مع الخلية. على سبيل المثال، سوف Spark طرح استثناء في وقت التشغيل بدلا من إرجاع نتائج فارغة إذا كانت الإدخالات إلى عامل تشغيل SQL/دالة غير صالحة. قد لا تكون بعض ميزات لهجة ANSI من معيار SQL ANSI مباشرة، ولكن سلوكياتها تتوافق مع نمط SQL ANSI.

وعلاوة على ذلك، لدى Spark SQL خيار مستقل للتحكم في سلوكيات الصب الضمنية عند إدراج صفوف في جدول. يتم تعريف سلوكيات الصب على أنها قواعد تعيين المتجر في المعيار.

عندما spark.sql.storeAssignmentPolicy يتم تعيين إلى ، يتوافق Spark SQL مع قواعد تعيين مخزن ANSI ANSI. هذا تكوين منفصل لأن قيمته الافتراضية ANSI هي ، بينما يتم تعطيل التكوين بشكل spark.sql.ansi.enabled افتراضي.

يلخص الجدول التالي السلوك:

اسم الخاصية افتراضية المعنى
spark.sql.ansi.enabled false عند true، يحاول Spark التوافق مع مواصفات SQL ANSI:

* يطرح استثناء وقت التشغيل إذا حدث تجاوز في أي عملية على عدد صحيح أو حقل عشري.
* يمنع استخدام الكلمات الرئيسية المحجوزة من ANSI SQL كمعرفات في محلل SQL.
spark.sql.storeAssignmentPolicy ANSI عند إدراج قيمة في عمود بنوع بيانات مختلف، تقوم Spark بإجراء تحويل النوع. هناك ثلاث سياسات لقواعد الإكراه النوعي: ANSI و legacy و strict .

* ANSISpark ينفذ نوع الإكراه وفقا SQL ANSI. في الممارسة العملية ، والسلوك هو في الغالب نفس PostgreSQL. فإنه لا يسمح بعض التحويلات نوع غير معقول مثل تحويل سلسلة إلى int أو مزدوجة إلى منطقية.
* legacyشرارة يسمح نوع الإكراه طالما أنها هي المدلى بها صالحة، والتي هي فضفاضة جدا. على سبيل المثال، يسمح بتحويل السلسلة إلى int أو مزدوجة إلى منطقية. بل هو أيضا السلوك الوحيد في سبارك 2.x وأنه متوافق مع الخلية.
* strictلا تسمح Spark بأي فقدان دقة محتمل أو اقتطاع البيانات في نوع الإكراه، على سبيل المثال، تحويل مزدوج إلى int أو عشري إلى ضعف غير مسموح به.

الأقسام الفرعية التالية تقديم تغييرات السلوك في العمليات الحسابية، تحويلات النوع، SQL تحليل عند تمكين وضع ANSI. بالنسبة إلى تحويلات النوع في Spark SQL ، هناك ثلاثة أنواع منها ، وستقدمها هذه المقالة واحدا تلو الآخر: cast ، تعيين المتجر والإكراه على النوع.

العمليات الحسابية

في Spark SQL، لا يتم التحقق من العمليات الحسابية التي يتم إجراؤها على الأنواع الرقمية (باستثناء العشرية) للتحقق من تجاوز السعة بشكل افتراضي. وهذا يعني أنه في حالة حدوث تجاوز للسعة، تكون النتيجة هي نفسها مع العملية المطابقة في برنامج Java أو Scala (على سبيل المثال، إذا كان مجموع عدد صحيحين أكبر من القيمة القصوى القابلة للمثل، تكون النتيجة رقما سالبا). من ناحية أخرى، ترجع Spark SQL null لتجاوزات عشرية. عند spark.sql.ansi.enabled تعيين true إلى و حدوث تجاوز في العمليات الحسابية الرقمية والفاصل الزمني، فإنه يطرح استثناء حسابي في وقت التشغيل.

-- `spark.sql.ansi.enabled=true`
SELECT 2147483647 + 1;
java.lang.ArithmeticException: integer overflow

-- `spark.sql.ansi.enabled=false`
SELECT 2147483647 + 1;
+----------------+
|(2147483647 + 1)|
+----------------+
|     -2147483648|
+----------------+

يلقي

عندما spark.sql.ansi.enabled يتم تعيين إلى ، يلقي صب true صريحة بناء CAST الجملة استثناء وقت التشغيل لأنماط التمثيل غير قانونية المعرفة في المعيار، مثل casts من سلسلة إلى عدد صحيح.

CASTيتبع بند وضع Spark ANSI قواعد بناء الجملة للقسم 6.13 "مواصفات التمثيل" في CAST، إلا أنه يسمح خصيصا بالتحويلات التالية المباشرة التي لا يسمح بها وفقا لمعيار ANSI:

  • NumericType < = > نوع منطقي
  • StringType < = > ثنائي النوع

يتم إعطاء مجموعات صالحة من نوع البيانات المصدر والهدف في CAST تعبير بواسطة الجدول التالي. "Y" يشير إلى أن التركيبة صالحة بشكل بناء بدون قيود و "N" يشير إلى أن التركيبة غير صالحة.

مصدرالاستهداف عددي سلسلة التاريخ طابع زمني ‏‏الفاصل الزمني منطقي ثنائي صفيف الخريطة البنية
عددي ذ. Y ن. -N ن. ذ. ن. -N -N -N
سلسلة Y Y Y Y Y Y Y ن. -N -N
التاريخ ن. ذ. Y Y ن. -N -N -N -N -N
طابع زمني ن. ذ. Y Y ن. -N -N -N -N -N
‏‏الفاصل الزمني ن. ذ. ن. ن. ذ. ن. -N -N -N -N
منطقي Y Y ن. -N ن. ذ. ن. -N -N -N
ثنائي ذ. ن. -N -N -N ن. ذ. ن. -N -N
صفيف -N -N -N -N -N -N ن. ذ. ن. -N
الخريطة -N -N -N -N -N -N -N ن. ذ. ن.
البنية -N -N -N -N -N -N -N -N ن. ذ.
-- Examples of explicit casting

-- `spark.sql.ansi.enabled=true`
SELECT CAST('a' AS INT);
java.lang.NumberFormatException: invalid input syntax for type numeric: a

SELECT CAST(2147483648L AS INT);
java.lang.ArithmeticException: Casting 2147483648 to int causes overflow

SELECT CAST(DATE'2020-01-01' AS INT)
org.apache.spark.sql.AnalysisException: cannot resolve 'CAST(DATE '2020-01-01' AS INT)' due to data type mismatch: cannot cast date to int.
To convert values from date to int, you can use function UNIX_DATE instead.

-- `spark.sql.ansi.enabled=false` (This is a default behavior)
SELECT CAST('a' AS INT);
+--------------+
|CAST(a AS INT)|
+--------------+
|          null|
+--------------+

SELECT CAST(2147483648L AS INT);
+-----------------------+
|CAST(2147483648 AS INT)|
+-----------------------+
|            -2147483648|
+-----------------------+

SELECT CAST(DATE'2020-01-01' AS INT)
+------------------------------+
|CAST(DATE '2020-01-01' AS INT)|
+------------------------------+
|                          null|
+------------------------------+

-- Examples of store assignment rules
CREATE TABLE t (v INT);

-- `spark.sql.storeAssignmentPolicy=ANSI`
INSERT INTO t VALUES ('1');
org.apache.spark.sql.AnalysisException: Cannot write incompatible data to table '`default`.`t`':
- Cannot safely cast 'v': string to int;

-- `spark.sql.storeAssignmentPolicy=LEGACY` (This is a legacy behavior until Spark 2.x)
INSERT INTO t VALUES ('1');
SELECT * FROM t;
+---+
|  v|
+---+
|  1|
+---+

تعيين المتجر

كما هو مذكور في البداية، عندما spark.sql.storeAssignmentPolicy يتم تعيين إلى ANSI (الذي هو القيمة الافتراضية)، spark SQL يتوافق مع قواعد تعيين مخزن ANSI على إدراج الجدول. يتم إعطاء مجموعات صالحة من نوع البيانات المصدر والهدف في إدراج الجدول بواسطة الجدول التالي.

مصدرالاستهداف عددي سلسلة التاريخ طابع زمني ‏‏الفاصل الزمني منطقي ثنائي صفيف الخريطة البنية
عددي ذ. Y ن. -N -N -N -N -N -N -N
سلسلة ن. ذ. ن. -N -N -N -N -N -N -N
التاريخ ن. ذ. Y Y ن. -N -N -N -N -N
طابع زمني ن. ذ. Y Y ن. -N -N -N -N -N
‏‏الفاصل الزمني ن. ذ. ن. ن. ذ. ن. -N -N -N -N
منطقي ن. ذ. ن. -N ن. ذ. ن. -N -N -N
ثنائي ن. ذ. ن. -N -N ن. ذ. ن. -N -N
صفيف -N -N -N -N -N -N -N Y* -N -N
الخريطة -N -N -N -N -N -N -N -N Y* -N
البنية -N -N -N -N -N -N -N -N -N Y*
  • بالنسبة لأنواع الصفيف/الخريطة/البنية، تطبق قاعدة التحقق من نوع البيانات بشكل متكرر على عناصر المكون الخاصة بها.

أثناء إدراج الجدول، سوف Throw استثناء على تجاوز القيمة الرقمية.

CREATE TABLE test(i INT);
INSERT INTO test VALUES (2147483648L);
java.lang.ArithmeticException: Casting 2147483648 to int causes overflow

نوع الإكراه

نوع الترقية والأسبقية

عند spark.sql.ansi.enabled تعيين إلى ، يستخدم Spark SQL العديد من القواعد التي تحكم كيفية حل true التعارضات بين أنواع البيانات. في قلب حل التعارض هذا قائمة الأسبقية Type الذي يعرف ما إذا كان يمكن ترقية قيم نوع بيانات معين إلى نوع بيانات آخر ضمنيا.

نوع البيانات قائمة الأسبقية (من الأضيق إلى الأوسع)
بايت بايت - > قصير - > Int - طويل - >> عشري - Float * - >> مزدوج
قصير قصيرة - > Int - > طويل - > عشري- > تعويم * - > مزدوج
Int Int - > طويل - > عشري - > تعويم * - > مزدوج
Long طويل - > عشري - > تعويم * - > مزدوج
العدد العشري عشري - > تعويم * - > مزدوج
قيمة Float تعويم - > مزدوج
مزدوج مزدوج
التاريخ التاريخ - > الطابع الزمني
Timestamp Timestamp
سلسلة سلسلة
ثنائي ثنائي
منطقي منطقي
‏‏الفاصل الزمني ‏‏الفاصل الزمني
الخريطة خريطة**
صفيف صفيف**
البنية هيكلة **
  • بالنسبة إلى تعويم دقة النوع الأقل شيوعا يتم تخطي لتجنب فقدان الدقة.

** بالنسبة لنوع معقد، تنطبق قاعدة الأسبقية بشكل متكرر على عناصر المكون الخاصة به.

تنطبق قواعد خاصة على القيم الحرفية للسلسلة و NULL غير المنوعة. يمكن ترقية NULL إلى أي نوع آخر، بينما يمكن ترقية قيمة حرفية سلسلة إلى أي نوع بيانات بسيط.

هذا هو تصوير رسومي لقائمة الأسبقية كشجرة موجهة: Graphical representation of precedence rules

تحليل النوع الأقل شيوعا

النوع الأقل شيوعا من مجموعة من الأنواع هو أضيق نوع يمكن الوصول إليه من قائمة الأسبقية من قبل كافة عناصر مجموعة الأنواع.

يتم استخدام دقة النوع الأقل شيوعا إلى:

  • تقرر ما إذا كان يمكن استدعاء دالة تتوقع معلمة من نوع باستخدام وسيطة من نوع أضيق.
  • اشتقاق نوع الوسيطة للوظائف التي تتوقع نوع وسيطة مشتركة لمعلمات متعددة، مثل التحام، الأقل، أو الأعظم.
  • اشتقاق أنواع معامل عوامل التشغيل مثل العمليات الحسابية أو المقارنات.
  • اشتقاق نوع النتيجة لتعبيرات مثل تعبير الحالة.
  • اشتقاق العنصر أو المفتاح أو أنواع القيمة لدالات إنشاء الصفيف والخريطة.

يتم تطبيق قواعد خاصة إذا حل النوع الأقل شيوعا إلى FLOAT. مع قيم نوع عائم إذا كان أي من الأنواع هو INT أو BIGINT أو DECIMAL يتم دفع النوع الأقل شيوعا إلى DOUBLE لتجنب فقدان المحتملة من الأرقام.

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

سلوك بعض وظائف SQL يمكن أن تكون مختلفة تحت وضع ANSI ( spark.sql.ansi.enabled=true ).

  • sizeإرجاع هذه الدالة null للإدخال فارغة ضمن وضع ANSI.
  • element_at:
    • هذه الدالة يطرح ArrayIndexOutOfBoundsException إذا كان استخدام فهارس غير صالحة.
    • تلقي هذه الدالة NoSuchElementException إذا كان المفتاح غير موجود في الخريطة.
  • eltهذه الدالة يطرح ArrayIndexOutOfBoundsException إذا كان استخدام الفهارس غير صالحة.
  • make_dateتفشل هذه الدالة مع استثناء إذا كان تاريخ النتيجة غير صالح.
  • make_timestampتفشل هذه الدالة مع استثناء إذا كان الطابع الزمني النتيجة غير صالح.
  • make_intervalتفشل هذه الدالة مع استثناء إذا كان الفاصل الزمني للنتيجة غير صالح.
  • next_dayهذه الدالة يطرح IllegalArgumentException إذا الإدخال غير صالح يوم من الأسبوع.
  • parse_urlرمي هذه الدالة IllegalArgumentException إذا لم تكن سلسلة إدخال url صالح.
  • to_dateفشل هذه الدالة مع استثناء إذا تعذر تحليل سلسلة الإدخال أو سلسلة النقش غير صالحة.
  • to_timestampفشل هذه الدالة مع استثناء إذا تعذر تحليل سلسلة الإدخال أو سلسلة النقش غير صالحة.
  • to_unix_timestampفشل هذه الدالة مع استثناء إذا تعذر تحليل سلسلة الإدخال أو سلسلة النقش غير صالحة.
  • unix_timestampفشل هذه الدالة مع استثناء إذا تعذر تحليل سلسلة الإدخال أو سلسلة النقش غير صالحة.

SQL مشغلي

يمكن أن يكون سلوك بعض عوامل التشغيل SQL مختلفة تحت وضع ANSI ( spark.sql.ansi.enabled=true ).

  • array_col[index]يقوم عامل التشغيل هذا بطرح ArrayIndexOutOfBoundsException إذا كان يستخدم فهارس غير صالحة.
  • map_col[key]يلقي عامل التشغيل هذا NoSuchElementException إذا كان المفتاح غير موجود في الخريطة.
  • CAST(string_col AS TIMESTAMP)فشل عامل التشغيل هذا مع استثناء إذا تعذر تحليل سلسلة الإدخال.
  • CAST(string_col AS DATE)فشل عامل التشغيل هذا مع استثناء إذا تعذر تحليل سلسلة الإدخال.

دالات مفيدة لوضع ANSI

عندما يكون وضع ANSI قيد التشغيل، فإنه يطرح استثناءات للعمليات غير الصالحة. يمكنك استخدام الدالات SQL التالية لمنع مثل هذه الاستثناءات.

  • try_castمطابقة ل CAST , باستثناء أنه يرجع NULL النتيجة بدلا من طرح استثناء على خطأ وقت التشغيل.
  • try_addمطابقة لعوامل التشغيل إضافة + ، إلا أنه بإرجاع NULL النتيجة بدلا من طرح استثناء على تجاوز قيمة متكاملة.
  • try_divideمطابقة لمشغل / القسمة، باستثناء أنه يرجع NULL النتيجة بدلا من طرح استثناء على القسمة 0.

SQL الكلمات الرئيسية

عندما spark.sql.ansi.enabled يكون صحيحا، سيستخدم spark SQL محلل وضع ANSI. في هذا الوضع، يحتوي Spark SQL على نوعين من الكلمات الرئيسية:

  • الكلمات الرئيسية المحجوزة: الكلمات الرئيسية المحجوزة ولا يمكن استخدامها كمعرفات للجدول أو العرض أو العمود أو الوظيفة أو الاسم المستعار أو غير ذلك.
  • الكلمات الأساسية غير المحجوزة: كلمات رئيسية لها معنى خاص فقط في سياقات معينة ويمكن استخدامها كمعرفات في سياقات أخرى. على سبيل المثال، EXPLAIN SELECT ... أمر، ولكن يمكن استخدام EXPLAIN كمعرفات في أماكن أخرى.

عند تعطيل وضع ANSI، يحتوي Spark SQL على نوعين من الكلمات الأساسية:

  • الكلمات الأساسية غير المحجوزة: نفس تعريف التعريف الذي تم تمكين وضع ANSI عنده.
  • الكلمات الأساسية غير المحجوزة: إصدار صارم من الكلمات الرئيسية غير المحجوزة، والتي لا يمكن استخدامها كاسم مستعار للجدول.

بشكل افتراضي spark.sql.ansi.enabled غير صحيح.

فيما يلي قائمة بجميع الكلمات الرئيسية في Spark SQL.

‏‏الكلمة الأساسية Spark SQL
وضع ANSI
Spark SQL
الوضع الافتراضي
SQL-2016
جمع غير محجوز غير محجوز غير محجوز
بعد غير محجوز غير محجوز غير محجوز
ALL محجوز غير محجوز محجوز
ALTER غير محجوز غير محجوز محجوز
دوما غير محجوز غير محجوز غير محجوز
حلل غير محجوز غير محجوز غير محجوز
و محجوز غير محجوز محجوز
مضاد غير محجوز صارمة غير محجوزة غير محجوز
ANY محجوز غير محجوز محجوز
أرشيف غير محجوز غير محجوز غير محجوز
صفيف غير محجوز غير محجوز محجوز
AS محجوز غير محجوز محجوز
الرابطه غير محجوز غير محجوز غير محجوز
AT غير محجوز غير محجوز محجوز
إذن محجوز غير محجوز محجوز
‏‏بين غير محجوز غير محجوز محجوز
كلا محجوز غير محجوز محجوز
دلو غير محجوز غير محجوز غير محجوز
الجرادل غير محجوز غير محجوز غير محجوز
BY غير محجوز غير محجوز محجوز
تخزين مؤقت غير محجوز غير محجوز غير محجوز
تتالي غير محجوز غير محجوز غير محجوز
الحالة محجوز غير محجوز محجوز
CAST محجوز غير محجوز محجوز
تغيير غير محجوز غير محجوز غير محجوز
فحص محجوز غير محجوز محجوز
مسح غير محجوز غير محجوز غير محجوز
عنقود غير محجوز غير محجوز غير محجوز
متفاوت المسافات غير محجوز غير محجوز غير محجوز
كودجن غير محجوز غير محجوز غير محجوز
جمع محجوز غير محجوز محجوز
مجموعة غير محجوز غير محجوز غير محجوز
العمود محجوز غير محجوز محجوز
الاعمده غير محجوز غير محجوز غير محجوز
التعليق غير محجوز غير محجوز غير محجوز
ارتكب غير محجوز غير محجوز محجوز
الاتفاق غير محجوز غير محجوز غير محجوز
الضغطات غير محجوز غير محجوز غير محجوز
حسب غير محجوز غير محجوز غير محجوز
سلسله غير محجوز غير محجوز غير محجوز
القيد محجوز غير محجوز محجوز
كلف غير محجوز غير محجوز غير محجوز
CREATE محجوز غير محجوز محجوز
عبر محجوز صارمة غير محجوزة محجوز
المكعب غير محجوز غير محجوز محجوز
حالي غير محجوز غير محجوز محجوز
CURRENT_DATE محجوز غير محجوز محجوز
CURRENT_TIME محجوز غير محجوز محجوز
CURRENT_TIMESTAMP محجوز غير محجوز محجوز
CURRENT_USER محجوز غير محجوز محجوز
بيانات غير محجوز غير محجوز غير محجوز
قاعدة البيانات غير محجوز غير محجوز غير محجوز
قواعد البيانات غير محجوز غير محجوز غير محجوز
DAY غير محجوز غير محجوز غير محجوز
DBPROPERTIES غير محجوز غير محجوز غير محجوز
تعريف غير محجوز غير محجوز غير محجوز
DELETE غير محجوز غير محجوز محجوز
محدد غير محجوز غير محجوز غير محجوز
تنازلي غير محجوز غير محجوز غير محجوز
وصف غير محجوز غير محجوز محجوز
DFS غير محجوز غير محجوز غير محجوز
الدلائل غير محجوز غير محجوز غير محجوز
دليل غير محجوز غير محجوز غير محجوز
مميز محجوز غير محجوز محجوز
قسم غير محجوز غير محجوز غير محجوز
شعبه غير محجوز غير محجوز ليست كلمة رئيسية
DROP غير محجوز غير محجوز محجوز
اخر محجوز غير محجوز محجوز
انتهاء محجوز غير محجوز محجوز
فرار محجوز غير محجوز محجوز
هرب غير محجوز غير محجوز غير محجوز
EXCEPT محجوز صارمة غير محجوزة محجوز
EXCHANGE غير محجوز غير محجوز غير محجوز
موجود غير محجوز غير محجوز محجوز
شرح غير محجوز غير محجوز غير محجوز
تصدير غير محجوز غير محجوز غير محجوز
ممتد غير محجوز غير محجوز غير محجوز
خارجي غير محجوز غير محجوز محجوز
استخرج غير محجوز غير محجوز محجوز
خطأ محجوز غير محجوز محجوز
جلب محجوز غير محجوز محجوز
حقول غير محجوز غير محجوز غير محجوز
راووق محجوز غير محجوز محجوز
شكل الملف غير محجوز غير محجوز غير محجوز
FIRST غير محجوز غير محجوز غير محجوز
الجبهه الوطنيه غير محجوز غير محجوز غير محجوز
التاليه غير محجوز غير محجوز غير محجوز
من أجل محجوز غير محجوز محجوز
أجنبي محجوز غير محجوز محجوز
تنسيق غير محجوز غير محجوز غير محجوز
تنسيق غير محجوز غير محجوز غير محجوز
من محجوز غير محجوز محجوز
كامل محجوز صارمة غير محجوزة محجوز
دالة غير محجوز غير محجوز محجوز
وظائف غير محجوز غير محجوز غير محجوز
انشاء غير محجوز غير محجوز غير محجوز
عالمي غير محجوز غير محجوز محجوز
المنحة محجوز غير محجوز محجوز
منح غير محجوز غير محجوز غير محجوز
مجموعة محجوز غير محجوز محجوز
تجميع غير محجوز غير محجوز محجوز
HAVING محجوز غير محجوز محجوز
ساعة غير محجوز غير محجوز غير محجوز
IF غير محجوز غير محجوز ليست كلمة رئيسية
تجاهل غير محجوز غير محجوز غير محجوز
استورد غير محجوز غير محجوز غير محجوز
IN محجوز غير محجوز محجوز
فهرس غير محجوز غير محجوز غير محجوز
الفهارس غير محجوز غير محجوز غير محجوز
INNER محجوز صارمة غير محجوزة محجوز
إنباث غير محجوز غير محجوز غير محجوز
شكل الإدخال غير محجوز غير محجوز غير محجوز
INSERT غير محجوز غير محجوز محجوز
INTERSECT محجوز صارمة غير محجوزة محجوز
الفاصل غير محجوز غير محجوز محجوز
INTO محجوز غير محجوز محجوز
IS محجوز غير محجوز محجوز
العناصر غير محجوز غير محجوز غير محجوز
انضمام محجوز صارمة غير محجوزة محجوز
مفتاح غير محجوز غير محجوز غير محجوز
المفاتيح غير محجوز غير محجوز غير محجوز
LAST غير محجوز غير محجوز غير محجوز
جانبي محجوز صارمة غير محجوزة محجوز
كسلان غير محجوز غير محجوز غير محجوز
رئيسي محجوز غير محجوز محجوز
LEFT محجوز صارمة غير محجوزة محجوز
LIKE غير محجوز غير محجوز محجوز
ILIKE غير محجوز غير محجوز غير محجوز
حد غير محجوز غير محجوز غير محجوز
اسطر غير محجوز غير محجوز غير محجوز
قائمة غير محجوز غير محجوز غير محجوز
حمل غير محجوز غير محجوز غير محجوز
محلي غير محجوز غير محجوز محجوز
الموقع غير محجوز غير محجوز غير محجوز
قفل غير محجوز غير محجوز غير محجوز
اقفال غير محجوز غير محجوز غير محجوز
منطقي غير محجوز غير محجوز غير محجوز
ماكرو غير محجوز غير محجوز غير محجوز
تعيين غير محجوز غير محجوز غير محجوز
مطابقه غير محجوز غير محجوز غير محجوز
دمج غير محجوز غير محجوز غير محجوز
دقيقة غير محجوز غير محجوز غير محجوز
ناقص غير محجوز صارمة غير محجوزة غير محجوز
MONTH غير محجوز غير محجوز غير محجوز
MSCK غير محجوز غير محجوز غير محجوز
مساحة الاسم غير محجوز غير محجوز غير محجوز
مساحات الاسم غير محجوز غير محجوز غير محجوز
طبيعي محجوز صارمة غير محجوزة محجوز
لا غير محجوز غير محجوز محجوز
NOT محجوز غير محجوز محجوز
NULL محجوز غير محجوز محجوز
القيم الخاليه غير محجوز غير محجوز غير محجوز
من غير محجوز غير محجوز محجوز
تشغيل محجوز صارمة غير محجوزة محجوز
فقط محجوز غير محجوز محجوز
خيار غير محجوز غير محجوز غير محجوز
الخيارات غير محجوز غير محجوز غير محجوز
أو محجوز غير محجوز محجوز
ترتيب محجوز غير محجوز محجوز
خارج غير محجوز غير محجوز محجوز
خارجي محجوز غير محجوز محجوز
إخراجفورمات غير محجوز غير محجوز غير محجوز
OVER غير محجوز غير محجوز غير محجوز
التداخلات محجوز غير محجوز محجوز
تراكب غير محجوز غير محجوز غير محجوز
الكتابه غير محجوز غير محجوز غير محجوز
قسم غير محجوز غير محجوز محجوز
تقسيم غير محجوز غير محجوز غير محجوز
اقسام غير محجوز غير محجوز غير محجوز
المائه غير محجوز غير محجوز غير محجوز
محور غير محجوز غير محجوز غير محجوز
وضع غير محجوز غير محجوز غير محجوز
موضع غير محجوز غير محجوز محجوز
سابق غير محجوز غير محجوز غير محجوز
PRIMARY محجوز غير محجوز محجوز
مديري المدارس غير محجوز غير محجوز غير محجوز
خصائص غير محجوز غير محجوز غير محجوز
تطهير غير محجوز غير محجوز غير محجوز
التاهل محجوز غير محجوز محجوز
استفسار غير محجوز غير محجوز غير محجوز
نطاق غير محجوز غير محجوز محجوز
المستلم غير محجوز غير محجوز غير محجوز
المستلمين غير محجوز غير محجوز غير محجوز
قارئ السجلات غير محجوز غير محجوز غير محجوز
كاتب السجلات غير محجوز غير محجوز غير محجوز
أفاق غير محجوز غير محجوز غير محجوز
قلل غير محجوز غير محجوز غير محجوز
REFERENCES محجوز غير محجوز محجوز
تحديث غير محجوز غير محجوز غير محجوز
REGEXP غير محجوز غير محجوز ليست كلمة رئيسية
أبعد غير محجوز غير محجوز غير محجوز
RENAME غير محجوز غير محجوز غير محجوز
رم غير محجوز غير محجوز غير محجوز
REPLACE غير محجوز غير محجوز غير محجوز
اعاده تعيين غير محجوز غير محجوز غير محجوز
احترام غير محجوز غير محجوز غير محجوز
تقيد غير محجوز غير محجوز غير محجوز
إبطال غير محجوز غير محجوز محجوز
RIGHT محجوز صارمة غير محجوزة محجوز
RLIKE غير محجوز غير محجوز غير محجوز
الدور غير محجوز غير محجوز غير محجوز
ادوار غير محجوز غير محجوز غير محجوز
العوده غير محجوز غير محجوز محجوز
القيمة المحتسبة غير محجوز غير محجوز محجوز
صف غير محجوز غير محجوز محجوز
الصفوف غير محجوز غير محجوز محجوز
مخطط غير محجوز غير محجوز غير محجوز
المخططات غير محجوز غير محجوز ليست كلمة رئيسية
ثان غير محجوز غير محجوز غير محجوز
SELECT محجوز غير محجوز محجوز
شبه غير محجوز صارمة غير محجوزة غير محجوز
منفصل غير محجوز غير محجوز غير محجوز
سيردي غير محجوز غير محجوز غير محجوز
الخصائص المرجعية غير محجوز غير محجوز غير محجوز
SESSION_USER محجوز غير محجوز محجوز
SET غير محجوز غير محجوز محجوز
طقوم غير محجوز غير محجوز غير محجوز
سهم غير محجوز غير محجوز غير محجوز
الاسهم غير محجوز غير محجوز غير محجوز
‏‏إظهار غير محجوز غير محجوز غير محجوز
منحرفه غير محجوز غير محجوز غير محجوز
بعض محجوز غير محجوز محجوز
صنف غير محجوز غير محجوز غير محجوز
فرز غير محجوز غير محجوز غير محجوز
START غير محجوز غير محجوز محجوز
الاحصاءات غير محجوز غير محجوز غير محجوز
تخزين غير محجوز غير محجوز غير محجوز
استراتيجية التقسيم الطبقي غير محجوز غير محجوز غير محجوز
البنيه غير محجوز غير محجوز غير محجوز
STR الفرعي غير محجوز غير محجوز غير محجوز
SUBSTRING غير محجوز غير محجوز غير محجوز
مزامنه غير محجوز غير محجوز غير محجوز
جدول محجوز غير محجوز محجوز
المناضد غير محجوز غير محجوز غير محجوز
جدولابل غير محجوز غير محجوز محجوز
الخصائص الملبرومية غير محجوز غير محجوز غير محجوز
TEMP غير محجوز غير محجوز ليست كلمة رئيسية
مؤقت غير محجوز غير محجوز غير محجوز
انهاء غير محجوز غير محجوز غير محجوز
ثم محجوز غير محجوز محجوز
الوقت محجوز غير محجوز محجوز
معدل فقد الكرة محجوز غير محجوز محجوز
يلمس غير محجوز غير محجوز غير محجوز
زائده محجوز غير محجوز محجوز
المعاملات غير محجوز غير محجوز غير محجوز
المعاملات غير محجوز غير محجوز غير محجوز
تحول غير محجوز غير محجوز غير محجوز
TRIM غير محجوز غير محجوز غير محجوز
صواب غير محجوز غير محجوز محجوز
اقتطاع غير محجوز غير محجوز محجوز
TRY_CAST غير محجوز غير محجوز غير محجوز
النوع غير محجوز غير محجوز غير محجوز
إلغاء الأرشفة غير محجوز غير محجوز غير محجوز
غير محدود غير محجوز غير محجوز غير محجوز
الأوناش غير محجوز غير محجوز غير محجوز
وحدة محجوز صارمة غير محجوزة محجوز
فريد محجوز غير محجوز محجوز
مجهول محجوز غير محجوز محجوز
فتح غير محجوز غير محجوز غير محجوز
مجموعة الأمم المتحدة للانهاء غير محجوز غير محجوز غير محجوز
UPDATE غير محجوز غير محجوز محجوز
استخدم غير محجوز غير محجوز غير محجوز
المستخدم محجوز غير محجوز محجوز
استخدام محجوز صارمة غير محجوزة محجوز
القيم غير محجوز غير محجوز محجوز
منظر غير محجوز غير محجوز غير محجوز
طرق عرض غير محجوز غير محجوز غير محجوز
متى محجوز غير محجوز محجوز
WHERE‬ محجوز غير محجوز محجوز
نافذة غير محجوز غير محجوز محجوز
مع محجوز غير محجوز محجوز
YEAR غير محجوز غير محجوز غير محجوز
منطقة غير محجوز غير محجوز غير محجوز