الصق استعلام SQL مضغوطًا واحصل على مخرجات مقروءة ومسنّنة. اختر اللهجة وعرض الإزاحة وحالة الكلمات الأساسية؛ كل شيء يعمل محليًا في متصفحك.
اجعل جدار SQL قابلاً للقراءة مرة أخرى. الصق استعلامًا - سطرًا واحدًا أو ألفًا - وسيُعاد تنسيقه أثناء كتابتك. اختر اللهجة حتى لا تُفسد الصياغة الخاصة باللهجة، ثم اختر الإزاحة وحالة الكلمات الأساسية التي يستخدمها فريقك.
فشل تحميل مكتبة تنسيق SQL. يرجى إعادة تحميل الصفحة.
تنسيق SQL الذي سيتعين على الآخرين قراءته
لماذا يهم اختيار اللهجة
SQL معيار بنفس الطريقة تقريبًا التي يكون بها الإملاء الإنجليزي معيارًا. تنفذ كل محرك النواة المشتركة ثم تضيف صياغة لا يملكها أي شخص آخر، والمنسق الذي لا يعرف المحرك الذي تستهدفه سيسيء تفسير تلك الصياغة أو يمررها بصمت دون تنسيق.
الاختلافات ليست غريبة. اقتباس المعرفات وحده يقسم المجال: MySQL يستخدم backticks، وPostgreSQL وSQL القياسي يستخدمان علامات اقتباس مزدوجة، وSQL Server يستخدم أقواسًا مربعة. منسق يفترض الاتفاقية الخاطئة قد يعامل المعرف المقتبس كسلسلة نصية ويعيد تدفق الاستعلام حول حدود غير موجودة. بعد الاقتباس هناك LIMIT مقابل TOP مقابل FETCH FIRST، وعامل التحويل :: في PostgreSQL، ومتغيرات T-SQL المسبوقة بـ @، ومسارات مشاريع BigQuery الملفوفة بـ backticks، وجملة Snowflake QUALIFY. اختيار اللهجة الصحيحة هو ما يبقيها سليمة.
الإزاحة قرار متعلق بالفرق
عرض الإزاحة وحالة الكلمات الأساسية يبدوان تجميليين، لكنهما يحددان شكل سجل التحكم في الإصدارات لديك. التنسيق مفيد فقط عندما يكون متسقًا، لأنه لحظة تنسيق شخصين الملف نفسه بشكل مختلف، يحمل كل commit موجة من تغييرات المسافات غير ذات الصلة ويتوقف مراجعة الكود عن العمل. اختر إعدادًا واحدًا، واكتبه في المستودع، وطبّقه ميكانيكيًا.
الكلمات الأساسية الكبيرة هي الاتفاقية الأكثر شيوعًا وهي تساعد عند قراءة استعلام كثيف، لأن الكلمات البنيوية تنفصل بصريًا عن أسماء الجداول والأعمدة. اكتسبت الأحرف الصغيرة أرضية في قواعد الشفرات التي تعامل SQL ككود عادي وتكره الصراخ. الإبقاء هو الاختيار الصحيح عند تنسيق استعلام شخص آخر وتريد تغيير التخطيط دون لمس حرف واحد من نصه، مما يجعل الفرق الناتج بنيويًا بحتًا.
التبويب مقابل المسافات له الجدل المعتاد، مع تفصيلة خاصة بـ SQL: الاستعلامات تُلصق كثيرًا في الطرفيات وأنظمة التذاكر وعملاء الدردشة التي تعرض التبويب كثمانية أعمدة. استعلام متداخل بعمق مع إزاحة بتبويبات يمكن أن يلتف بشكل غير مقروء في الأماكن التي يُرجح أن تشاركها فيها.
ما لن يفعله المنسق
التنسيق عرضي بحت. لن يجعل الاستعلام أسرع، ولا يغير شيئًا في الخطة التي ينتجها المحسِّن. الاستعلام الفرعي المرتبط الجميل المسنّن ما زال يعمل مرة واحدة لكل صف. استخدم EXPLAIN لأعمال الأداء؛ واستخدم المنسق للوضوح.
كما أنه لا يتحقق من الصحة. تحلل هذه الأداة بما يكفي لإعادة تدفق النص، لكنها ليست محلّل المحرك وستنسق بسعادة استعلامًا بعمود مكتوب خطأ أو بشرط ربط مفقود. التنسيق النظيف ليس فحص صياغة، والسلطة الوحيدة على صحة الاستعلام هي قاعدة البيانات التي تنوي تشغيله عليها.
العادة الوحيدة الجديرة بالتبني إلى جانب التنسيق هي الاستعلامات المرمّزة. تنسيق استعلام بقيم مدمجة في السلسلة يجعل خطر الحقن أكثر قابلية للقراءة لكنه ليس أقل حقيقية. إذا وجدت نفسك تنسق SQL يحتوي إدخال مستخدم مدمجًا مباشرة في النص، فالتنسيق ليس المشكلة الجديرة بالإصلاح أولاً.
الأسئلة الشائعة
ما لهجات SQL المدعومة؟
أربع عشرة: SQL القياسي، MySQL، MariaDB، PostgreSQL، SQLite، SQL Server T-SQL، Oracle PL/SQL، IBM Db2، BigQuery، Snowflake، Redshift، Hive، Spark SQL وTrino. اختيار الصحيح يحافظ على الصياغة الخاصة باللهجة مثل اقتباس المعرفات وعوامل التحويل.
هل يغير التنسيق ما يفعله استعلامي؟
لا. تتغير المسافات وفواصل الأسطر وحالة الكلمات الأساسية فقط، لذا فالعبارة متطابقة دلاليًا. لاحظ أن تغيير حالة الكلمات الأساسية آمن لأن كلمات SQL الأساسية غير حساسة لحالة الأحرف؛ ولا يُعاد تغيير حالة معرفاتك أو سلاسلك النصية أبدًا.
هل سيجعل هذا استعلامي يعمل أسرع؟
لا. التنسيق عرضي والمحسِّن يرى نفس العبارة في كلتا الحالتين. للأداء، شغّل EXPLAIN أو EXPLAIN ANALYZE على قاعدة بياناتك الفعلية وانظر إلى الخطة.
هل يُرسل SQL إلى خادم؟
لا. يعمل sql-formatter بالكامل في متصفحك ولا يُنقل أي شيء. هذا مهم هنا لأن الاستعلامات الحقيقية غالبًا ما تضمّن أسماء جداول وتفاصيل مخطط وأحيانًا قيمًا حرفية من بيئة الإنتاج.
لماذا يفشل استعلامي في التنسيق؟
عادة عدم توازن في الاقتباسات أو الأقواس، أو صياغة خاصة باللهجة تُحلَّل تحت لهجة خاطئة. بدّل محدد اللهجة ليطابق قاعدة بياناتك أولاً؛ إذا فشل بعد ذلك، ابحث عن سلسلة نصية غير مغلقة.
هل يجب أن أستخدم التبويبات أم المسافات؟
أيهما، طالما استخدم الفريق كله نفسه. تظهر المسافات بشكل متطابق في كل مكان، وهو ما يساعد عند لصق الاستعلامات في الطرفيات أو التذاكر أو الدردشة؛ التبويبات تسمح لكل قارئ باختيار عرضه الخاص في المحرر.