ما هي SQL، ولماذا تهمّ اللهجة؟
SQL هي لغة استعلام قواعد البيانات العلائقية، موحّدة في خطوطها العامة لكن مطبّقة بفروق لهجية — قواعد الاقتباس والدوال وLIMIT مقابل TOP وصيغ التواريخ — في PostgreSQL وMySQL وSQLite وSQL Server وOracle. يوحّد المنسّق الكلمات المفتاحية والمسافات البادئة وفواصل الأسطر ليمكن قراءة الاستعلام الطويل ومراجعته؛ ويحلّل المدقّق العبارة ليجد أخطاء الصياغة قبل وصولها إلى قاعدة البيانات.
ملاحظة أمنية: عبارات INSERT أو IN المولَّدة مخصصة لبيانات الاختبار والترحيلات. أما في شيفرة التطبيق فيجب أن تمر القيم عبر استعلامات مُعامَلة — بناء SQL من مدخلات المستخدم بربط النصوص هو الطريق إلى حقن SQL.
كيفية استخدام مولّد مجموعات بيانات SQL
- عرّف الأعمدة بأنواع المولّدات.
- أدخل اسم الجدول واللهجة وحجم الدفعة.
- اضغط «توليد» (Generate) وشغّل السكربت على قاعدة بيانات اختبارية.
مزايا مولّد مجموعات بيانات SQL
- جملة CREATE TABLE بأنواع خاصة بكل لهجة مستنتَجة من المولّدات
- جمل INSERT مجمّعة متعددة الصفوف أو جملة لكل صف؛ مع معاملة (transaction) اختيارية
- MySQL/MariaDB وPostgreSQL وSQL Server وOracle (بصيغة INSERT ALL) وSQLite
- تبقى السلاسل النصية سلاسل (الهواتف والرموز)، بينما تحصل الأعداد والقيم المنطقية والتواريخ ومعرّفات UUID على قيم حرفية مطبَّعة
- معرّفات آمنة (snake_case) ومفتاح أساسي على عمود id
- حتى 5,000 صف، قابل للتوليد ببذرة (seed)، مع عدد الجمل والحجم
مثال على مولّد مجموعات بيانات SQL
تهيئة PostgreSQL
الإدخال:
id:id
full_name:fullName
phone:phone:SA
hired_on:date · Table: employees · Dialect: PostgreSQLالنتيجة:
CREATE TABLE IF NOT EXISTS employees (
id INT NOT NULL,
full_name VARCHAR(40) NOT NULL,
phone VARCHAR(20) NOT NULL,
hired_on DATE NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO employees (id, full_name, phone, hired_on) VALUES
(1, 'Freddie Mitchell', '+966545797509', '2021-05-31'),
(2, 'Aurora Taylor', '+966590325497', '2019-06-10');الأسئلة الشائعة حول مولّد مجموعات بيانات SQL
ما اللهجات المدعومة؟
MySQL/MariaDB وPostgreSQL وSQL Server وOracle (بصيغة INSERT ALL) وSQLite، مع اقتباس وقيم منطقية حرفية وأنواع تاريخ/وقت خاصة بكل لهجة.
كيف تُختار أنواع الأعمدة؟
من المولّد: تصبح الأعداد الصحيحة INT، والعشرية DECIMAL، والقيم المنطقية BOOLEAN/BIT/TINYINT(1)، والتواريخ DATE، ومعرّفات UUID من نوع UUID/CHAR(36)، والنصوص VARCHAR(n). وتبقى أرقام الهواتف والرموز سلاسل نصية حتى لو بدت رقمية.
هل يمكنني تجميع جمل INSERT في دفعات؟
نعم — حدّد عدد الصفوف لكل جملة INSERT (يحدّها SQL Server بـ 1000) أو بدّل إلى جملة INSERT لكل صف، ولفّ كل شيء في معاملة (transaction) اختيارياً.
كيف أحصل على قيم NULL في عمود ما؟
أضف علامة ? بعد اسم العمود، مثل manager_id?:int:1-20 أو notes?:sentence. عندها يُصدَر نحو 15% من صفوف ذلك العمود بقيمة NULL، ويعلن جدول CREATE TABLE أنه يقبل القيم الفارغة بينما تحصل بقية الأعمدة على القيد NOT NULL. كما يُعلَن العمود المسمى id مفتاحاً أساسياً (PRIMARY KEY).
المراجع
- PostgreSQL Documentation: SQL Syntaxالبنية المعجمية لـ SQL في PostgreSQL: المعرّفات والاقتباس والثوابت النصية والتهريب.
- SQL As Understood By SQLiteقواعد SQL التي يقبلها SQLite، عبارة تلو الأخرى، مع مخططات نحوية.
- SQL Injectionكيف يعمل حقن SQL ولماذا الاستعلامات المُعامَلة، لا بناء النصوص، هي الدفاع.
- RFC 4180: Common Format and MIME Type for Comma-Separated Values (CSV) Filesقواعد CSV الشائعة: الفاصلة كفاصل، ونهايات الأسطر CRLF، وتحويط الحقول التي تحتوي فواصل أو علامات اقتباس أو أسطر جديدة.