منسّق SQL ومُضغط – التوثيق الكامل، أفضل الممارسات والتكاملات

Avatar
Manuel Schulz · 18.10.2025 · التطوير · 20–25 دقيقة

الـZerlo SQL-Formatter & Minifier يجعل SQL قابلاً للقراءة فوراً (Beautify) أو مضغوطاً (Minify). أنت تتحكم في Indent (2/4/8 فراغات)، حالة الكلمات المفتاحية (UPPER/lower/Preserve) وفي قسم Advanced إزالة التعليقات إضافة إلى إجبار فاصلة منقوطة. من خلال Schnellzugriff ستجد أمثلة snippets جاهزة، ومع Self-Test تتحقق من السلوك خلال ثوانٍ. الصفحة متاحة هنا: zerlo.net/formattersql.

المحتوى

  1. بدء سريع
  2. نظرة عامة على الوظائف
  3. أمثلة وصول سريع (حالات الاستخدام)
  4. خيارات متقدمة (تفاصيل ومخاطر/عوائق)
  5. فئات تطبيق نموذجية (12 سيناريو)
  6. التكامل: موقع الويب، iFrame، Teams
  7. واجهة برمجة تطبيقات JSON اختيارية (مع أمثلة)
  8. اختبار ذاتي (خطوة بخطوة)
  9. نصائح احترافية، الأداء والأمان
  10. ملاحظات حول اللهجات والقيود
  11. استكشاف الأخطاء والأسئلة الشائعة
  12. جربها الآن

1) بدء سريع

  1. افتح zerlo.net/formattersql.
  2. ضع SQL على اليسار أو اكتبها.
  3. اختر الوضع: تحسين التنسيق (قابل للقراءة) أو تصغير (مضغوط).
  4. عيّن بادئة (2/4/8) و حالة الكلمات المفتاحية (UPPER/lower/Preserve) تم..
  5. اختياري: إزالة التعليقات, إجبار الفاصلة المنقوطة.
  6. انقر تنسيق – – النتيجة تظهر هنا على اليمين، بما في ذلك نسخ و حفظ كـ .sql.
  7. تحت اختبار ذاتي يمكنك اختبار أهم القواعد تلقائياً..

2) الوظائف في لمحة

3) أمثلة الوصول السريع (حالات الاستخدام)

تمتد هذه الأمثلة لتغطي الأنماط الأكثر شيوعاً وهي مثالية كنقطة انطلاق.

1_einfaches_select.sql
SELECT id, name FROM products WHERE status = 'active';
2_join_mit_aggregat.sql
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;
3_case_plus_subquery.sql
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;
4_cte_plus_window.sql
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;
5_insert_returning.sql
INSERT INTO users(email, role)
VALUES ('[email protected]', 'editor')
RETURNING id, email;
6_update_mit_case.sql
UPDATE accounts
SET status = CASE
  WHEN balance < 0 THEN 'overdue'
  WHEN balance = 0 THEN 'zero'
  ELSE 'ok'
END
WHERE active = 1;
7_delete_plus_exists.sql
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) خيارات متقدمة (تفاصيل ومخاطر/عوائق)

5) فئات تطبيق نموذجية (12 سيناريو)

  1. مراجعات الشفرة:: تصميم موحد يسرع عمليات المراجعة ويمنع نقاشات الأسلوب.
  2. تصحيح الأخطاء:: يتم رصد JOIN/CASE المعقدة فوراً بشكل بصري.
  3. تبادل المعرفة:: SQL قابل للقراءة لـ Wiki/Confluence/README.
  4. الترحيلات والسكريبتات:: سلامة الفاصلة المنقوطة، كتل فريدة.
  5. إدراج API:: تصغير + إزالة التعليقات، لإدراج SQL في التطبيقات/الخدمات.
  6. الـ BI/التقارير:: تنظيف الاستفسارات من أدوات BI قبل مشاركتها.
  7. التعلم والتدريب:: CTEs/دوال النوافذ بشكل منظم.
  8. إعادة الهيكلة:: ابدأ بالتحسين، ثم عزّل/حسّن أجزاء معينة.
  9. إعادة إنتاج الأخطاء:: استفسارات ذات بنية واضحة لتذاكر الدعم.
  10. فرض دليل الأسلوب:: اعتماد معيار الفريق (Indent/Case) بشكل متسق.
  11. القوالب:: „وصول سريع“ كأساس لاستفسارات جديدة.
  12. تحضير الإصدار:: تصغير لأجل أصول مخرجات مستقرة وقابلة للنقل..

6) التكامل مع الموقع/فِرق Teams

أ) الاستخدام المباشر

إليك الأداة هنا: zerlo.net/formattersql

ب) تضمين iFrame (شبكة داخلية/الواجهة الخلفية)

embed_iframe.html
<iframe src="https://zerlo.net/formattersql" title="SQL Formatter" width="100%" height="900" style="border:0; border-radius:12px;"></iframe>

ج) دليل أسلوب الفريق (أساس)

7) JSON-API اختيارية

يمكنك أتمتة التنسيق في الأدوات/CI/CD. مثال مبسط:

api_request.http
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 }
}
api_response.json
{
  "ok": true,
  "result": "SELECT id, name\nFROM users\nWHERE id = 1;",
  "stats": { "ms": 4, "inLen": 43, "outLen": 47 }
}
api_node.js
// 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);
api_php.php
<?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) الاختبار الذاتي (خطوة بخطوة)

  1. انقر في الأداة أدناه على اختبار ذاتي – – سيتم فحص ثلاث حالات أساسية تلقائياً..
  2. حالة تحسين التنسيق:: Keywords UPPER, الكلمات المفتاحية UPPER، فواصل واضحة، بادئة أنظف.
  3. حالة التصغير:: إزالة التعليقات (إذا كان الخيار مفعّلاً)، إخراج مضغوط.
  4. حالة بادئة:: تبدل واضح بين 2/4/8 فراغات..
  5. يظهر الناتج في لوحة الاختبار الذاتي؛ في حال وجود اختلاف: افحص الخيارات وربما غير الوضع.

9) نصائح احترافية، الأداء والأمان

10) ملاحظات حول اللهجات وحدودها

11) استكشاف الأخطاء والأسئلة الشائعة

„لا يتغير شيء؟“ – تحقق من الوضع والخيارات؛ الإدخال لا يجوز أن يكون فارغاً.

„فواصل منقوطة مكررة؟“ – الخيار 'إجبار' + وجود ;: عطل الخيار.

„لم تُحذف التعليقات“ – فعّل إزالة التعليقات أو اجعل الوضع على 'Minify'

„استعلامات طويلة جدًا تتعطل في المتصفح“ – تنسيق كتل كبيرة تدريجيًا أو استخدام API.

„تم تغيير الكلمات المفتاحية داخل السلاسل؟“ – لا ينبغي أن يحدث؛ تحقق مما إذا كانت سلاسل حقيقية (اقتباسات، ليست Backticks).

12) الآن جربه

ابدأ هنا: zerlo.net/formattersql

هل كان الدليل مفيداً؟ يسرنا مشاركته: