تنسيق SQL
قم بلصق جملة SQL مكوّنة من سطر واحد نُسخت من سجل أو من نظام إدارة علاقات البيانات (ORM)، وسيقوم برنامج التنسيق بتقسيمها إلى بنود مُدرجَة بحروف متماثلة، مع إضافة فواصل جديدة قبل كل رمز من الرموز التالية: SELECT، FROM، WHERE، وGROUP BY، بالإضافة إلى تنظيم أعمدة البيانات بشكل متناسق في النتائج الناتجة. يدعم هذا البرنامج لغات قواعد البيانات MySQL، PostgreSQL، SQL Server، Oracle، SQLite، وBigQuery، والتي تختلف بعضها عن الآخر في استخدام الكلمات المفتاحية والكلمات المحجوزة.
كيف يعمل تنسيق النصوص؟
-
1
لصق كود SQL الخاص بك.
كتلة خطية واحدة، أو مخرج مختصر من Hibernate، أو أي شيء من هذا القبيل؛ جميع العبارات المتعددة المفصولة برمز `;` مُهيأة بشكل صحيح.
-
2
اختر اللهجة والنمط
تتحكم اللهجة في قائمة الكلمات المفتاحية؛ بينما يتحكم النمط في موضع الفاصلة (في البداية أو في النهاية)، وعرض الإزاحة، وما إذا كانت الكلمات المفتاحية بأحرف كبيرة أو صغيرة.
-
3
تُحلَّل الرموز (tokens)، وليس يتم استبدالها باستخدام نصوص تنظيمية (regex).
يتعامل أداة التجزئة (Tokenizer) بشكل صحيح مع السلاسل النصية والتعليقات والأقواس والاستعلامات الفرعية، كما تُحفظ القيم النصية حرفيًا دون تعديل.
-
4
قم بنسخ الناتج المُهيأ.
SQL المعتمد، نفس الدلالات، وتصميم أكثر تنظيمًا.
قبل وبعد
قبل:
SELECT u.id,u.name,COUNT(o.id) AS orders FROM users u LEFT JOIN orders o ON o.user_id=u.id WHERE u.created_at>='2024-01-01' GROUP BY u.id,u.name HAVING COUNT(o.id)>5 ORDER BY orders DESC LIMIT 50;
بعد (فواصل أولية، كلمات مفتاحية كبيرة الحروف، انزياح بمقدار فاصلين):
SELECT
u.id
, u.name
, COUNT(o.id) AS orders
FROM users u
LEFT JOIN orders o
ON o.user_id = u.id
WHERE u.created_at >= '2024-01-01'
GROUP BY u.id, u.name
HAVING COUNT(o.id) > 5
ORDER BY orders DESC
LIMIT 50;
خيارات النمط المهمة
- الكلمات المفتاحية بأحرف كبيرة مقابل أحرف صغيرة: تُعد الأحرف الكبيرة تقليدية وسهلة التعرف عليها أثناء المسح البصري، بينما تكون الأحرف الصغيرة أكثر وضوحًا في محررات الكود الحديثة التي تُبرز تلوين البنية النحوية.
- الفاصلة في البداية مقابل الفاصلة في النهاية: تُسهّل الفاصلة في البداية (
, col) تعطيل عمود واحد كتعليق، بينما تبدو الفاصلة في النهاية (col,) أكثر طبيعية عند قراءتها في النص. - ترتيب الفواصل في
GROUP BY: عادةً تُوضع فاصلة واحدة لكل سطر في الجُمَل الطويلة، وتُكتب ضمن السطر نفسه في الجُمَل القصيرة. - إزاحة عبارات JOIN: هل تُكتب
ONفي السطر التالي (إزاحة معلّقة) أم على السطر نفسه؟ تستفيد الشروط الطويلة من الإزاحة المعلّقة. - الاستعلامات الفرعية: أزِح الاستعلام الفرعي بأكمله، وليس قوس الفتح فقط.
الأخطاء الشائعة الخاصة بكل لهجة
- علامات الاقتباس العكسية (backticks) في MySQL مقابل علامات الاقتباس المزدوجة في PostgreSQL للمُعرِّفات.
- عبارات
WITH(CTEs): يشترط نظام MS SQL وجود;قبلWITH؛ ويتولى أداة التنسيق معالجة هذا الشرط. - دوال النوافذ: تستفيد عبارات
OVER (...)الطويلة من توزيعPARTITION BYوORDER BYعلى أسطر متعددة. - BigQuery: يحتوي على
ARRAY_AGGوSTRUCTولواحق الجداول (مثل*_yyyymmdd)، ويجب على أداة التجزئة عدم كسرها. - Oracle: يستخدم صيغة الربط الخارجي
(+)؛ تحافظ أداة التنسيق على هذه الصيغة لكنها تصنّفها كصيغة قديمة.
ما لا تقوم به أداة التنسيق
- تصحيح الأخطاء: يظل عملية JOIN غير الصالحة غير صالحة.
- توسيع
SELECT *: لا تُستنتج قوائم الأعمدة من المخطط. - تحسين الاستعلامات: التخطيط فقط، وليس خطط التنفيذ.
- إعادة كتابة الاستعلامات الفرعية على شكل عبارات CTE: وهي مسألة مختلفة تمامًا.
الأسئلة الشائعة
لا؛ فالأمر تجميلي بحت. تتغير المسافات وفواصل الأسطر ومواضع الفواصل، لكن الكلمات المفتاحية والعوامل والقيم الحرفية والمُعرِّفات تبقى كما هي تمامًا.
مدعومة، CREATE TABLE وALTER وCREATE PROCEDURE والمُحفِّزات (triggers). كما تتعامل أداة التنسيق مع بنى الكتل (BEGIN ... END) واستمرار الأسطر داخل الإجراءات.
لا ينبغي أن يحدث ذلك؛ وإن حدث، فمن المرجح أن يكون بسبب عدم توافق اللهجة. حاول تبديل اللهجة. يرجى الإبلاغ عن أي إخفاقات متكررة؛ فنحن نعدّها أخطاءً برمجية.
يبدو كل من Flink SQL وCassandra CQL متشابهين، لكنهما يحتويان على كلمات مفتاحية خاصة بكل لهجة كثيرًا ما تُفسدها أدوات التنسيق الشائعة. استخدمهما بحذر، وتحقّق من أن المخرجات تعمل.
أدوات ذات صلة
مرجع جدول ASCII
جدول ASCII كامل من 0 إلى 127 مع التمثيل العشري والست عشري والثماني والثنائي والمرجع الرقمي في HTML لكل محرف، بما في ذلك أكواد التحكم مثل NUL وLF وDEL.
مرجع أحرف HTML
قائمة قابلة للبحث بكيانات HTML، مع رموزها المسمّاة والرقمية، بالإضافة إلى خيار النسخ بنقرة واحدة للأحرف والرموز الخاصة.
مرجع اختصارات لوحة المفاتيح
ابحث في الاختصارات الافتراضية الموثقة لـ VS Code وChrome وBash مع GNU Readline على macOS وWindows وLinux.
عدّاد FPS
قِس معدل الإطارات FPS في المتصفح عبر requestAnimationFrame: تنعيم، وأدنى وأقصى معدل إطارات، وحد تنبيه، ورسم بياني اختياري. يعمل محليًا بلا رفع ملفات وبلا API.
أداة إزالة التشفير في لغة جافا سكريبت (JavaScript Deobfuscator)
إزالة التشفير من كود جافا سكريبت مُصغَّر أو مُعبَّأ باستخدام إعادة تسمية المتغيرات، وفك ترميز السلاسل النصية ومصفوفات البيانات، بالإضافة إلى عكس تسطيح تدفق التحكم وتحسين هيكله.
مولد تراخيص
قم بإنشاء النص الكامل لترخيصات المصدر المفتوح مع إدخال اسمك والسنة المقابلة، ويشمل ذلك تراخيص MIT وApache 2.0 وGPLv3 وBSD-3 وMPL-2.0 وCC.
الأداة متاحة بلغات أخرى
- SQL 포매터 [KO]
- Formateur SQL [FR]
- Format SQL [ID]
- SQL-formaterare [SV]
- SQL-formatter [NL]
- รูปแบบ SQL [TH]
- Formater SQL [PL]
- SQL-Formatter [DE]
- Formateador SQL [ES]
- SQLフォーマッター [JA]
- Định dạng SQL [VI]
- Formatador SQL [PT]
- SQL Formatter [EN]
- Formatter SQL [IT]
- Форматтер SQL [RU]
- SQL Biçimlendirici [TR]
- SQL 格式化器 [ZH]