يوفر قسم SQL قاعدة بيانات SQLite مخصصة لكل مشروع. يمكنك إنشاء الجداول والفهارس والعروض، وتحرير البيانات يدويًا، وكتابة أي استعلامات، والوصول إلى قاعدة البيانات مباشرة من سير العمل الخاص بك. إنها SQLite كاملة الميزات مع صيغة غير مقيدة: أي شيء مدعوم من SQLite يعمل هنا أيضًا.

يتم تخزين قاعدة بيانات SQL بشكل منفصل عن الجداول في قسم الجداول. التغييرات التي تتم في أحدهما لا تؤثر على الآخر.

كيفية فتحها

المشروع ← الجداول ← انقر على SQL على يمين إضافة جدول.

للعودة إلى قائمة الجداول، انقر على السهم في رأس الصفحة.

قسم SQL متاح لأعضاء الفريق الذين لديهم إذن لتحرير الجداول. يمكن للمستخدمين الذين لديهم وصول للعرض فقط رؤية بنية قاعدة البيانات، ولكن لا يمكنهم الوصول إلى بياناتها أو استعلاماتها.

بنية قاعدة البيانات

يتم عرض شجرة قاعدة البيانات على اليمين. تحتوي على الجداول مع أعمدة وفهارسها، تليها العروض. يعرض كل عمود نوع البيانات الخاص به، ويتم تمييز أعمدة المفتاح الأساسي بأيقونة مفتاح، وتعرض الفهارس سمة UNIQUE والأعمدة المرتبطة بها.

جميع الإجراءات المتعلقة بالبنية متاحة من قائمة العقدة: انقر بزر الماوس الأيمن على عقدة، أو انقر على أيقونة التي تظهر عند التمرير، أو استخدم زر + فوق الشجرة.

العقدة الإجراءات
قاعدة البيانات إنشاء جدول، إنشاء عرض، تحديث، تنزيل قاعدة البيانات
الجدول فتح، إضافة عمود، إضافة فهرس، إعادة تسمية، DDL، تحديث، حذف
العمود إعادة تسمية، حذف
الفهرس DDL، حذف
العرض فتح، DDL، حذف

إنشاء جدول. حدد اسم الجدول والأعمدة: الاسم، النوع، القيمة الافتراضية، المفتاح الأساسي، وNOT NULL. يمكنك تحديد نوع بيانات من الاقتراحات أو إدخال النوع الخاص بك. إذا قمت بتمييز عدة أعمدة كمفتاح أساسي، فستشكل مفتاحًا أساسيًا مركبًا.

DDL يعرض عبارة CREATE الخاصة بالكائن في وحدة التحكم. هذا مفيد لنسخ بنيته أو إعادة إنشائه في مشروع آخر.

الأزرار فوق الشجرة تتيح لك إنشاء كائنات، تحديث قاعدة البيانات، إظهار أو إخفاء وحدة التحكم، عرض DDL للجدول المحدد، تنزيل قاعدة البيانات، أو مسح قاعدة البيانات.

بيانات الجدول

انقر على جدول في شجرة قاعدة البيانات لفتح بياناته. تعمل الشبكة إلى حد كبير مثل ورقة في قسم الجداول:

  • تحرير خلية بالنقر المزدوج عليها. اضغط Enter للحفظ أو Esc للإلغاء. تتم كتابة القيمة في قاعدة البيانات فورًا.
  • الصفوف. انقر على + لإضافة صف فارغ أو لحذف الصفوف المحددة. انقر على رقم الصف في العمود الأول لتحديده. استخدم Shift أو Cmd/Ctrl لتحديد صفوف متعددة.
  • يتم عرض قيم NULL كـ NULL. مسح خلية يكتب سلسلة فارغة في قاعدة البيانات. لكتابة قيمة NULL، استخدم استعلامًا.
  • حقول WHERE و ORDER BY فوق الشبكة تقبل شروط SQL وتعبيرات الفرز. أدخل تعبيرًا واضغط Enter. حقل ORDER BY له الأسبقية على الفرز المطبق عبر قائمة الأعمدة.
  • قائمة الأعمدة (الأيقونة في رأس العمود): فرز تصاعدي أو تنازلي، أو تصفية حسب سلسلة فرعية.
  • يتم تحميل البيانات أثناء التمرير، في دفعات من 100 صف. يعرض العداد على اليمين النطاق الحالي وإجمالي عدد الصفوف.
  • العروض للقراءة فقط.

وحدة التحكم

انقر على زر </> فوق شجرة قاعدة البيانات لفتح وحدة التحكم، والتي تتضمن محرر استعلامات مع تمييز الصيغة ونتائج الاستعلام.

  • قم بتشغيل استعلام باستخدام الزر أو Ctrl+Enter (Cmd+Enter على Mac).
  • يمكنك تشغيل استعلامات متعددة مفصولة بـ ;. تعرض النتيجة الصفوف التي أرجعها آخر استعلام أنتج بيانات، بالإضافة إلى إجمالي عدد الصفوف المتأثرة.
  • يتم عرض أخطاء SQLite كما هي. عند تشغيل استعلامات متعددة، يتم إضافة رقم الاستعلام إلى رسالة الخطأ: [2] no such table: ....
  • المفضلة. انقر على إضافة إلى المفضلة لحفظ الاستعلام الحالي تحت اسم. تظهر الاستعلامات المحفوظة كشرائح فوق المحرر: انقر على واحدة لتحميل الاستعلام أو انقر على الصليب لحذفها. يتم تخزين المفضلة في متصفحك بشكل منفصل لكل مشروع.
  • يتم الاحتفاظ بنص آخر استعلام لك بين الجلسات.

تنزيل ومسح قاعدة البيانات

تنزيل قاعدة البيانات يقوم بتنزيل قاعدة البيانات بأكملها كـ project_<id>_sql.sqlite3. يمكنك فتحها مع أي تطبيق متوافق مع SQLite، أو نقلها إلى مشروع آخر، أو استخدامها خارج Mavibot.

مسح قاعدة البيانات يحذف جميع الجداول والبيانات من قسم SQL. لا يمكن التراجع عن هذا الإجراء ويتطلب إدخال كلمة تأكيد. الجداول في قسم الجداول لا تتأثر.

دوال الحاسبة

تتيح لك دالتا حاسبة الوصول إلى قاعدة بيانات SQL من سير العمل الخاص بك. كلاهما متاح في اقتراحات المحرر ويتم التعرف عليهما من قبل المساعد.

sql(query, params=null, strict=true)

تنفذ استعلامًا.

الاستعلام القيمة المرجعة
استعلام بنتيجة (SELECT، RETURNING، PRAGMA) قائمة JSON من الصفوف، مع تمثيل كل صف ككائن: [{"id": 1, "name": "Anna"}, ...]
استعلام بدون نتيجة (INSERT، UPDATE، DELETE) عدد الصفوف المتأثرة
CREATE، DROP، وتغييرات مخطط أخرى 0
خطأ سلسلة ERROR: <رسالة خطأ SQLite>

مثال:

rows = sql("SELECT name, phone FROM clients WHERE city = ?", [city])
n = sql("UPDATE clients SET status = :s WHERE id = :id", {"s": "vip", "id": client_id})

sql_value(query, params=null, strict=true)

تعمل مثل sql، لكنها ترجع قيمة واحدة: العمود الأول من الصف الأول في النتيجة.

إذا لم تكن هناك صفوف، أو لا توجد نتيجة، أو كانت القيمة NULL، فإنها ترجع سلسلة فارغة.

total = sql_value("SELECT count(*) FROM clients")
name = sql_value("SELECT name FROM clients WHERE id = ?", [client_id])

المعاملات

params يمرر القيم إلى الاستعلام بشكل منفصل عن نص الاستعلام: استخدم مصفوفة JSON لـ ? أو كائن JSON لـ :name. داخل [...] و {...}، تتم كتابة المتغيرات كأسماء متغيرات عادية:

[client_id]، وليس [#{client_id}].

مرر أي قيم تتلقاها من عميل عبر params، مثل اسمه أو رقم هاتفه أو نص رسالته. القيمة المدمجة مباشرة في نص الاستعلام قد تعدل الاستعلام نفسه.

الوضع الصارم

بشكل افتراضي، strict=true: تقبل الدالة استعلامًا واحدًا بالضبط ولا تسمح بالتعليقات في نص الاستعلام. هذا يمنع قيمة مستلمة من رسالة عميل من إلحاق استعلام ثانٍ أو اقتطاع بقية الاستعلام الأصلي.

اضبط strict=false لإزالة هذا القيد، على سبيل المثال عند تشغيل استعلامات متعددة مفصولة بـ ;.

الحدود

الحد القيمة
وقت التنفيذ لاستعلام واحد أو دفعة استعلامات 5 ثوانٍ
الصفوف المرجعة حتى 1,000؛ لا يتم إرجاع صفوف إضافية
طول نص الاستعلام 64 كيلوبايت
حجم قاعدة البيانات 200 ميجابايت؛ بمجرد تجاوزها، تتوفر قراءة وحذف البيانات فقط

الأوامر الوحيدة المحظورة هي تلك التي تصل إلى موارد خارج قاعدة بيانات المشروع: ATTACH مع مسار ملف و VACUUM INTO.

كل شيء آخر، بما في ذلك VACUUM القياسي، PRAGMA، والمعاملات، مدعوم.