منسّق SQL ومُضغط – التوثيق الكامل، أفضل الممارسات والتكاملات
الـZerlo SQL-Formatter & Minifier يجعل SQL قابلاً للقراءة فوراً (Beautify) أو مضغوطاً (Minify). أنت تتحكم في Indent (2/4/8 فراغات)، حالة الكلمات المفتاحية (UPPER/lower/Preserve) وفي قسم Advanced إزالة التعليقات إضافة إلى إجبار فاصلة منقوطة. من خلال Schnellzugriff ستجد أمثلة snippets جاهزة، ومع Self-Test تتحقق من السلوك خلال ثوانٍ. الصفحة متاحة هنا: zerlo.net/formattersql.
المحتوى
- بدء سريع
- نظرة عامة على الوظائف
- أمثلة وصول سريع (حالات الاستخدام)
- خيارات متقدمة (تفاصيل ومخاطر/عوائق)
- فئات تطبيق نموذجية (12 سيناريو)
- التكامل: موقع الويب، iFrame، Teams
- واجهة برمجة تطبيقات JSON اختيارية (مع أمثلة)
- اختبار ذاتي (خطوة بخطوة)
- نصائح احترافية، الأداء والأمان
- ملاحظات حول اللهجات والقيود
- استكشاف الأخطاء والأسئلة الشائعة
- جربها الآن
1) بدء سريع
- افتح zerlo.net/formattersql.
- ضع SQL على اليسار أو اكتبها.
- اختر الوضع: تحسين التنسيق (قابل للقراءة) أو تصغير (مضغوط).
- عيّن بادئة (2/4/8) و حالة الكلمات المفتاحية (UPPER/lower/Preserve) تم..
- اختياري: إزالة التعليقات, إجبار الفاصلة المنقوطة.
- انقر تنسيق – – النتيجة تظهر هنا على اليمين، بما في ذلك نسخ و حفظ كـ .sql.
- تحت اختبار ذاتي يمكنك اختبار أهم القواعد تلقائياً..
2) الوظائف في لمحة
- تحسين التنسيق:: سلاسل الأسطر والتباعد لـ
SELECT,FROM,JOIN,WHERE,GROUP BY,HAVING,ORDER BY,LIMIT,UNION,WITH,CASE… - تصغير:: يزيل المسافات البيضاء غير الضرورية؛ مثالي للنقل/التضمين. اختياري مع إزالة التعليقات.
- حالة الكلمات المفتاحية:: UPPER, lower أو Preserve (السلاسل/المعرّفات تبقى كما هي).
- ملف بادئة المسافة:: 2, 4 أو 8 Spaces – متسق على مستوى الفريق..
- متقدم:: إزالة التعليقات (أحادادية/متعددة الأسطر) & إجبار الفاصلة المنقوطة.
- وصول سريع:: أمثلة محددة: بسيطة
SELECT, JOIN مع دالة تجميع, CASE + استعلام فرعي, CTE + نافذة, إدراج … إرجاع, UPDATE مع CASE, DELETE + EXISTS. - اختبار ذاتي:: 1-Klick-Verifikation: قواعد تحسين التنسيق، سلوك التصغير، تبدّل بادئة، حالة الكلمات المفتاحية، والفاصلة المنقوطة.
- أزرار عملية:: تنسيق, JSON-API (POST) جربه هنا, نسخ, حفظ كـ .sql.
- الإخراجات:: لوحة النتائج، اختبار ذاتي, -لوحة،.
3) أمثلة الوصول السريع (حالات الاستخدام)
تمتد هذه الأمثلة لتغطي الأنماط الأكثر شيوعاً وهي مثالية كنقطة انطلاق.
SELECT id, name FROM products WHERE status = 'active';
SELECT c.id, c.title, COUNT(p.id) AS products
FROM categories c
LEFT JOIN products p ON p.category_id = c.id
GROUP BY c.id, c.title
ORDER BY products DESC;
SELECT u.id, u.email,
CASE
WHEN o.total >= 1000 THEN 'gold'
WHEN o.total >= 200 THEN 'silver'
ELSE 'bronze'
END AS tier
FROM users u
LEFT JOIN LATERAL (
SELECT SUM(total) AS total
FROM orders
WHERE user_id = u.id
) o ON TRUE;
WITH ranked AS (
SELECT id, customer_id, total,
ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY total DESC) AS rn
FROM orders
)
SELECT * FROM ranked WHERE rn = 1;
INSERT INTO users(email, role)
VALUES ('[email protected]', 'editor')
RETURNING id, email;
UPDATE accounts
SET status = CASE
WHEN balance < 0 THEN 'overdue'
WHEN balance = 0 THEN 'zero'
ELSE 'ok'
END
WHERE active = 1;
DELETE FROM sessions s
WHERE EXISTS (
SELECT 1 FROM users u
WHERE u.id = s.user_id AND u.deleted_at IS NOT NULL
);
4) خيارات متقدمة (تفاصيل ومخاطر/عوائق)
- إزالة التعليقات:: يزيل
-- ...و/* ... */. جيد للنقل «نظيف» (CI، تضمين). تنبيه: ستفقد تعليقات التوثيق — قم باستخراجها/أرشفتها مسبقاً إذا لزم الأمر. - إجبار فاصلة منقوطة:: يضيف
;إذا لم يوجد في النهاية – يمنع أخطاء المحلل في السكريبتات. إذا كان;موجوداً بالفعل، لا يتم التكرار.
5) فئات تطبيق نموذجية (12 سيناريو)
- مراجعات الشفرة:: تصميم موحد يسرع عمليات المراجعة ويمنع نقاشات الأسلوب.
- تصحيح الأخطاء:: يتم رصد
JOIN/CASEالمعقدة فوراً بشكل بصري. - تبادل المعرفة:: SQL قابل للقراءة لـ Wiki/Confluence/README.
- الترحيلات والسكريبتات:: سلامة الفاصلة المنقوطة، كتل فريدة.
- إدراج API:: تصغير + إزالة التعليقات، لإدراج SQL في التطبيقات/الخدمات.
- الـ BI/التقارير:: تنظيف الاستفسارات من أدوات BI قبل مشاركتها.
- التعلم والتدريب:: CTEs/دوال النوافذ بشكل منظم.
- إعادة الهيكلة:: ابدأ بالتحسين، ثم عزّل/حسّن أجزاء معينة.
- إعادة إنتاج الأخطاء:: استفسارات ذات بنية واضحة لتذاكر الدعم.
- فرض دليل الأسلوب:: اعتماد معيار الفريق (Indent/Case) بشكل متسق.
- القوالب:: „وصول سريع“ كأساس لاستفسارات جديدة.
- تحضير الإصدار:: تصغير لأجل أصول مخرجات مستقرة وقابلة للنقل..
6) التكامل مع الموقع/فِرق Teams
أ) الاستخدام المباشر
إليك الأداة هنا: zerlo.net/formattersql
ب) تضمين iFrame (شبكة داخلية/الواجهة الخلفية)
<iframe src="https://zerlo.net/formattersql" title="SQL Formatter" width="100%" height="900" style="border:0; border-radius:12px;"></iframe>
ج) دليل أسلوب الفريق (أساس)
- بادئة: 2 أو 4 فراغات (إجمالاً).
- حالة الكلمات المفتاحية: UPPER (السلاسل/المعرّفات تبقى كما هي).
- JOINs: الشروط مباشرة على
JOIN ... ON; دون فلاتر خفية فيWHERE. - CASE: CASE: كل
WHEN/THENفي سطر خاص؛ منطقي; مفيدELSE. - Semikolon: ضعها في السكريبتات دائماً.
7) JSON-API اختيارية
يمكنك أتمتة التنسيق في الأدوات/CI/CD. مثال مبسط:
POST https://zerlo.net/formattersql?api=1
Content-Type: application/json
{
"sql": "select id,name from users where id=1",
"mode": "beautify",
"options": { "indent": 4, "keywordCase": "upper", "stripComments": false, "ensureSemicolon": true }
}
{
"ok": true,
"result": "SELECT id, name\nFROM users\nWHERE id = 1;",
"stats": { "ms": 4, "inLen": 43, "outLen": 47 }
}
// Node.js (fetch)
const res = await fetch("https://zerlo.net/formattersql?api=1", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
sql: "SELECT * FROM orders WHERE created_at >= NOW() - INTERVAL '7 days';",
mode: "beautify",
options: { indent: 2, keywordCase: "upper", stripComments: true, ensureSemicolon: true }
})
});
const data = await res.json();
console.log(data.result);
<?php
// PHP
$payload = [
"sql" => "SELECT COUNT(*) FROM products;",
"mode" => "minify",
"options" => [ "indent" => 2, "keywordCase" => "preserve", "stripComments" => true, "ensureSemicolon" => true ]
];
$ch = curl_init("https://zerlo.net/formattersql?api=1");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["Content-Type: application/json"],
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_RETURNTRANSFER => true
]);
$resp = curl_exec($ch);
curl_close($ch);
echo $resp;
8) الاختبار الذاتي (خطوة بخطوة)
- انقر في الأداة أدناه على اختبار ذاتي – – سيتم فحص ثلاث حالات أساسية تلقائياً..
- حالة تحسين التنسيق:: Keywords UPPER, الكلمات المفتاحية UPPER، فواصل واضحة، بادئة أنظف.
- حالة التصغير:: إزالة التعليقات (إذا كان الخيار مفعّلاً)، إخراج مضغوط.
- حالة بادئة:: تبدل واضح بين 2/4/8 فراغات..
- يظهر الناتج في لوحة الاختبار الذاتي؛ في حال وجود اختلاف: افحص الخيارات وربما غير الوضع.
9) نصائح احترافية، الأداء والأمان
- سكريبتات كبيرة:: بعد 'تحسين التنسيق' قسمها إلى كتلات موضعية (CTEs، DDL مقابل DML)، ثم اصدرها بإصدارات منفصلة..
- وتيرة المراجعة:: استخدم 'الوصول السريع' كنمط قياسي؛ لتجنب الانتشار العشوائي عند استعلامات جديدة..
- تقليل مصادر الأخطاء:: „إجبار فاصلة منقوطة“ تفعيلها في خطوط أنابيب التهجير/الترحيل.
- السلاسل تبقى كما هي:: المُنسَّق لا يعدّل محتويات الأقواس المقتبسة؛ منطق الأعمال يبقى آمناً..
- الخصوصية:: لا تنفيذ لـ SQL – نص فقط. لا تقم بتخزين المحتوى الحساس بشكل دائم في أدوات طرف ثالث..
- سهولة المقارنة:: ابدأ بـ Beautify، ثم قارنها باستخدام Git-Diff – الفروقات ستظهر بوضوح..
10) ملاحظات حول اللهجات وحدودها
- MySQL/MariaDB: الكلمات المفتاحية القياسية والدوال يتم التعرف عليها بشكل جيد..
- PostgreSQL/SQLite: CTEs/Window-Funktionen CTEs/دوال النافذة ستُدرج بشكل مرتب؛ وهذا مناسب.
RETURNINGهذا مناسب.. - الإستثناءات:: لهجات نادرة جدًا (مثلاً إشارات خاصة) تبقى محتواها كما هو، لكن التنسيق يتم بشكل عام..
- لا تحليل دلالي:: المُنسّق لا يفهم المنطق – هو يقوم ببناء البنية النصية. تبقى أخطاء بناء الجملة أخطاء بنيوية..
11) استكشاف الأخطاء والأسئلة الشائعة
„لا يتغير شيء؟“ – تحقق من الوضع والخيارات؛ الإدخال لا يجوز أن يكون فارغاً.
„فواصل منقوطة مكررة؟“ – الخيار 'إجبار' + وجود ;: عطل الخيار.
„لم تُحذف التعليقات“ – فعّل إزالة التعليقات أو اجعل الوضع على 'Minify'
„استعلامات طويلة جدًا تتعطل في المتصفح“ – تنسيق كتل كبيرة تدريجيًا أو استخدام API.
„تم تغيير الكلمات المفتاحية داخل السلاسل؟“ – لا ينبغي أن يحدث؛ تحقق مما إذا كانت سلاسل حقيقية (اقتباسات، ليست Backticks).
12) الآن جربه
ابدأ هنا: zerlo.net/formattersql