منسّق SQL

الصق استعلام SQL واحصل عليه معاد تنسيقه، بحيث توضع كل جملة (SELECT، FROM، WHERE، JOIN، GROUP BY…) في سطرها الخاص مع مسافة بادئة.

1,127 مشاهدة

كيف تعمل الأداة

استعلام SQL طويل مكتوب في سطر واحد يصعب مسحه بالعين لفهم بنيته — أين تنتهي جملة WHERE وأين تبدأ GROUP BY، وأي JOIN ينتمي إلى أي جدول؟ تأخذ هذه الأداة SQL الخام وتقسمه إلى أسطر منفصلة عند كل حدّ رئيسي لجملة: SELECT وFROM وWHERE وعائلة JOIN بأكملها (INNER JOIN وLEFT JOIN وRIGHT JOIN…) وGROUP BY وORDER BY وHAVING وUNION. الشروط المتسلسلة بـAND/OR، وشروط الربط بعد ON، تُوضع بمسافة بادئة بمستوى واحد تحت الجملة التي تنتمي إليها، وتُكتب الكلمات المفتاحية اختياريًا بأحرف كبيرة للاتساق. استعلام مثل select id,name from users where active=1 and role='admin' order by name يصبح كتلة يبدأ فيها كل من SELECT وFROM وWHERE وORDER BY سطره الخاص، ويكون شرط AND بمسافة بادئة تحت WHERE — المعلومات نفسها، لكن مرتَّبة كما لو كُتبت يدويًا أثناء مراجعة الكود.

هذا مهم تحديدًا في المكان الذي يصعب فيه القيام بذلك يدويًا: الاستعلامات ذات عدة جداول مربوطة، أو استعلام فرعي مدفون داخل جملة WHERE، أو تعبير CASE متعدد الفروع. المسافة البادئة المتّسقة هي ما يتيح للمُراجِع اكتشاف شرط ربط مفقود أو قوس في غير مكانه بنظرة واحدة بدلًا من قراءته حرفًا حرفًا.

ما يجب أن تعرفه

هذه أداة تنسيق، لا تحقق — تكتفي بإعادة ترتيب المسافات وفواصل الأسطر حول مجموعة ثابتة من الكلمات المفتاحية التي تتعرّف عليها؛ ولا تحلّل الاستعلام أبدًا إلى شجرة نحوية ولا تنفّذه أبدًا على قاعدة بيانات. أداة تحقق حقيقية مدركة للهجة تحتاج إلى محلّل كامل لكل نوع من أنواع SQL، لأن MySQL وPostgreSQL وSQL Server وSQLite تختلف جميعها في تفاصيل مثل وضع المعرّفات بين علامات اقتباس، ودوال التاريخ، وحتى أي العبارات قانونية — أما فحص سطحي من جانب المتصفح يتظاهر بالتحقق من كل ذلك فلن يُنتج سوى ثقة زائفة. إذا بدا الخرج المنسَّق غريبًا، فهذا يعني عادةً أن المدخل كان يحتوي أصلًا على خطأ إملائي أو قوس غير متوازن؛ ستقوم الأداة بالتنسيق حوله بدلًا من الإبلاغ عنه.

لأنها تعمل بحتًا على تخطيط النص، فهي آمنة للتشغيل على استعلامات الإنتاج: المعرّفات والقيم الحرفية النصية والقيم الرقمية والمعاملات لا تُعاد كتابتها ولا تُضاف ولا تُحذف أبدًا — يتغيّر المسافات فقط، بالإضافة إلى حالة الأحرف الاختيارية للكلمات المفتاحية. لا يُرسل شيء إلى أي مكان ولا يُنفَّذ شيء؛ لا يغادر الاستعلام المتصفح أبدًا.

الأسئلة الشائعة

هل تخبرني هذه الأداة إن كان SQL الخاص بي صحيحًا؟

لا — عن قصد. التحقق الحقيقي من SQL يعتمد على قاعدة البيانات المستهدفة (لكل من MySQL وPostgreSQL وSQL Server خصائص نحوية مختلفة)، ولا يمكن لأداة متصفح خفيفة أن تفعل ذلك بأمانة. هذه الأداة تعيد تنسيق التخطيط فقط، ولا تدّعي أبدًا أن استعلامك صالح أو غير صالح.

هل يمكن أن تُفسد استعلامي؟

لا — تُدرج فقط فواصل الأسطر والمسافات البادئة، وتحوّل الكلمات المفتاحية اختياريًا إلى أحرف كبيرة. نص SQL نفسه (المعرّفات، القيم، المعاملات) لا يُغيَّر أبدًا.

هل يمكنني استخدام هذا مع أي لهجة SQL (MySQL، PostgreSQL، SQL Server)؟

نعم، على مستوى التخطيط — الكلمات المفتاحية للجُمل التي تتعرّف عليها هذه الأداة (SELECT وFROM وWHERE وJOIN وGROUP BY وما إلى ذلك) مشتركة بين كل لهجة SQL تقريبًا. ما لن تفعله هو التحقق من الصياغة أو الدوال أو قواعد وضع علامات الاقتباس الخاصة بلهجة معيّنة؛ فهذه تختلف بما يكفي بين المحركات بحيث لا يمكن تأكيد الصحة إلا بتشغيل الاستعلام فعليًا على قاعدة البيانات الحقيقية.

ماذا يحدث مع الاستعلامات الفرعية أو تعبيرات CTE؟

تُنسَّق عبارات SELECT المتداخلة وكتل WITH (تعبير الجدول الشائع) بنفس قواعد تقسيم الجُمل بشكل تكراري، بحيث يحصل الاستعلام الداخلي على بنيته الخاصة ذات المسافة البادئة داخل الاستعلام الخارجي — وهذا هو بالضبط المكان الذي يساعد فيه التنسيق أكثر ما يكون، لأن الاستعلامات المتداخلة بعمق هي الأصعب قراءةً كسطر واحد.

هل سيغيّر التنسيق سلوك استعلامي؟

لا. لا يُلمَس سوى المسافات وفواصل الأسطر وحالة الأحرف الاختيارية للكلمات المفتاحية. يبقى كل معرّف وقيمة حرفية ومقارنة ومعامل كما كُتب تمامًا، لذا فإن الاستعلام المنسَّق مطابق وظيفيًا للأصل — فهو يُنتج مجموعة النتائج نفسها في كلتا الحالتين.

التعليقات

لا توجد تعليقات بعد — كن أول من يكتب تعليقًا!

أدوات مشابهة