ما هي SQL، ولماذا تهمّ اللهجة؟
SQL هي لغة استعلام قواعد البيانات العلائقية، موحّدة في خطوطها العامة لكن مطبّقة بفروق لهجية — قواعد الاقتباس والدوال وLIMIT مقابل TOP وصيغ التواريخ — في PostgreSQL وMySQL وSQLite وSQL Server وOracle. يوحّد المنسّق الكلمات المفتاحية والمسافات البادئة وفواصل الأسطر ليمكن قراءة الاستعلام الطويل ومراجعته؛ ويحلّل المدقّق العبارة ليجد أخطاء الصياغة قبل وصولها إلى قاعدة البيانات.
ملاحظة أمنية: عبارات INSERT أو IN المولَّدة مخصصة لبيانات الاختبار والترحيلات. أما في شيفرة التطبيق فيجب أن تمر القيم عبر استعلامات مُعامَلة — بناء SQL من مدخلات المستخدم بربط النصوص هو الطريق إلى حقن SQL.
كيفية استخدام مدقّق استعلامات SQL
- الصق جملة واحدة أو أكثر مفصولة بفواصل منقوطة.
- اختر اللهجة.
- راجع جدول المشكلات — فالأخطاء (ERROR) تمنع التنفيذ، والتحذيرات (WARNING) أنماط خطرة، وصفوف INFO (التي تُحصى تحت «التلميحات») نصائح أسلوبية.
مزايا مدقّق استعلامات SQL
- فحوصات معجمية: السلاسل النصية والتعليقات والمعرّفات المقتبسة غير المغلقة
- توازن الأقواس وأزواج CASE … END، والفواصل الزائدة في النهاية، والعوامل المعلّقة
- ترتيب العبارات في SELECT (FROM → WHERE → GROUP BY → HAVING → WINDOW → ORDER BY → LIMIT / OFFSET / FETCH)
- تحذيرات أمان: UPDATE/DELETE بدون WHERE، وJOIN بدون ON، والمقارنة "= NULL"
- عدم تطابق عدد الأعمدة والقيم في INSERT
- مؤشرات الحقن: دمج السلاسل النصية مع المتغيرات، والشروط الصحيحة دائماً مثل OR 1=1
- تلميحات خاصة باللهجة (LIMIT مقابل TOP، وعلامات الاقتباس المائلة مقابل الأقواس المربعة)
مثال على مدقّق استعلامات SQL
اكتشاف خطأ في ترتيب العبارات
الإدخال:
SELECT * FROM users ORDER BY id WHERE active = 1النتيجة:
ERROR line 1: WHERE appears after ORDER BY; the expected order is SELECT → FROM → WHERE → GROUP BY → HAVING → WINDOW → ORDER BY → LIMIT.
INFO line 1: SELECT * returns every column.الأسئلة الشائعة حول مدقّق استعلامات SQL
هل يتصل بقاعدة بياناتي؟
لا. التحقق بنيوي بحت ويعمل في متصفحك: فهو يفحص علامات الاقتباس والأقواس وترتيب العبارات والأنماط الخطرة، لكنه لا يستطيع معرفة ما إذا كانت الجداول والأعمدة موجودة.
ما أنواع المشكلات التي يكتشفها؟
السلاسل النصية والتعليقات غير المغلقة، والأقواس غير المتوازنة، والعبارات بترتيب خاطئ (مثل WHERE بعد ORDER BY)، والفواصل الزائدة في النهاية، والعوامل المعلّقة، وعدم تطابق عدد الأعمدة والقيم في INSERT، وغياب WHERE في UPDATE/DELETE، وJOIN بدون ON، والمقارنات "= NULL"، والصياغات الخاصة بلهجة معيّنة مثل LIMIT في SQL Server.
ما تحذير الحقن؟
يُعلِّم السلاسل النصية الحرفية المدموجة مع المتغيرات ('…' + @user)، والشروط الصحيحة دائماً مثل OR 1=1، والقيم الحرفية الشبيهة بالحمولات الخبيثة. استخدم المعاملات المربوطة (bound parameters) بدلاً من بناء SQL من السلاسل النصية.
هل يمكنني التحقق من عدة جمل؟
نعم. تُقسَّم الجمل عند الفواصل المنقوطة ويُبلَّغ عن كل منها بفهرسها ونوعها ومشكلاتها الخاصة.
ملاحظات تقنية
لأن المدقّق لا يعرف مخطط قاعدة بياناتك، فلا يمكنه الإبلاغ عن الجداول أو الأعمدة غير المعروفة. وهو خط دفاع أول سريع للاستعلامات المكتوبة يدوياً ومراجعات الكود وفحوصات CI على سكربتات الترحيل (migration).
المراجع
- PostgreSQL Documentation: SQL Syntaxالبنية المعجمية لـ SQL في PostgreSQL: المعرّفات والاقتباس والثوابت النصية والتهريب.
- SQL As Understood By SQLiteقواعد SQL التي يقبلها SQLite، عبارة تلو الأخرى، مع مخططات نحوية.
- SQL Injectionكيف يعمل حقن SQL ولماذا الاستعلامات المُعامَلة، لا بناء النصوص، هي الدفاع.