في هذا الدرس 6تصفّح المواضيع
يمثل الأمر INSERT INTO عملية «الإنشاء» (Create) ضمن عمليات البيانات الأساسية الأربع CRUD. ويُستخدم لإضافة سجل جديد أو أكثر داخل الجدول عبر تحديد اسم الجدول، ثم قائمة الأعمدة المستهدفة بين قوسين، متبوعةً بالكلمة المفتاحية VALUES وقيم الحقول بالترتيب نفسه:
- القيم النصية والتواريخ: تُحاط النصوص والتواريخ القياسية (
'2026-11-08') بعلامتي اقتباس مفردتين. - القيم الرقمية: تُكتب الأرقام الصحيحة والعشرية (
149.99) مباشرةً بدون علامات اقتباس. - الأعمدة التلقائية: يُستحسن ترك عمود
AUTO_INCREMENTوأعمدة الوقت التلقائية خارج القائمة ليملأها MySQL ذاتياً.
INSERT INTO products (title, sku_code, unit_price, stock_qty)
VALUES ('Mechanical Keyboard', 'KB-800', 149.50, 25);
رغم أن SQL يسمح بحذف قائمة الأعمدة (INSERT INTO products VALUES (...)) بشرط تمرير جميع أعمدة الجدول بترتيبها الفعلي، فإن هذا الأسلوب خطر جداً في بيئات الإنتاج؛ إذ إن إضافة عمود واحد جديد لاحقاً عبر ALTER TABLE سيعطل جميع أوامر الإدراج في التطبيق. لذلك احرص دائماً على كتابة أسماء الأعمدة صراحةً:
-- Recommended: Explicit column list survives schema changes
INSERT INTO customers (full_name, email)
VALUES ('Nadia Al-Mansoor', '[email protected]');
بدلاً من إرسال عشرات الأوامر المنفصلة عبر الشبكة لإدراج كل صف على حدة، يتيح لك MySQL إدراج عدة سجلات في أمر دفعي واحد (Multi-Row Batch Insert) عبر الفصل بين أقواس الصفوف بفاصلة عادية:
- أداء فائق السرعة: يختصر زمن رحلات الشبكة المتكررة وتحليل جملة SQL وتحديث الفهارس في عملية واحدة.
- الذرية الكاملة في InnoDB: يُنفَّذ الأمر المتعدد كوحدة ذرية واحدة؛ فإذا خالف الصف الثالث أي قيد، يتراجع المحرك تلقائياً عن الصفين الأول والثاني لضمان تماسك البيانات.
INSERT INTO products (title, sku_code, unit_price, stock_qty)
VALUES
('Wireless Mouse', 'MS-200', 59.00, 40),
('USB-C Hub', 'HB-310', 89.00, 15),
('27-Inch 4K Monitor', 'MN-900', 899.00, 10);
عند إدراج دفعة صفوف متعددة ترغب في تمرير قيمة مخصصة لبعضها واستخدام القيمة الافتراضية لبعضها الآخر في نفس العمود، يمكنك كتابة الكلمة المفتاحية DEFAULT (بدون علامات اقتباس) داخل قائمة VALUES ليعوّضها MySQL بالقيمة الافتراضية المعرَّفة للعمود:
INSERT INTO products (title, sku_code, unit_price, stock_qty)
VALUES
('Laptop Stand', 'LS-100', 45.00, DEFAULT),
('Desk Mat XL', 'DM-500', 29.00, 100);
يدعم خادم MySQL صيغة بديلة شديدة الوضوح لإدراج سجل مفرد هي: INSERT INTO table_name SET col1 = val1, col2 = val2;. ولأن كل عمود يُكتب بجوار قيمته مباشرةً، فإنها تمنع أخطاء تبديل ترتيب الأعمدة في الجداول الكبيرة (مع الانتباه إلى أنها تدرج صفاً واحداً فقط في كل أمر):
INSERT INTO products
SET title = 'Studio Microphone',
sku_code = 'MC-700',
unit_price = 199.00,
stock_qty = 12;
يقارن الجدول التالي بين صيغ الإدراج الثلاث في MySQL 8:
| أسلوب الإدراج | بنية الأمر | عدد الصفوف | الميزة الهندسية الأبرز |
|---|---|---|---|
| الإدراج المفرد الصريح | INSERT INTO tbl (a, b) VALUES (1, 2); | صف واحد | قياسي عالمياً وآمن عند تعديل هيكل الجدول |
| الإدراج المتعدد الدفعي | INSERT INTO tbl (a, b) VALUES (1, 2), (3, 4); | عدة صفوف | أعلى سرعة إدراج دفعي في معاملة ذرية واحدة |
صياغة التعيين SET | INSERT INTO tbl SET a = 1, b = 2; | صف واحد | إقران كل عمود بقيمته مباشرةً بوضوح تام |
ملخص الدرس: تعلمت في هذا الدرس كيفية إدراج السجلات المفردة والمتعددة بأمر INSERT INTO ... VALUES، وأهمية تحديد قائمة الأعمدة الصريحة، واستخدام الكلمة المفتاحية DEFAULT، وصياغة التعيين المباشر INSERT INTO ... SET.
الخطوة التالية والدرس القادم: انتقل إلى الدرس التالي لتعلّم كيفية معالجة تعارض المفاتيح المكررة بذكاء عبر INSERT IGNORE وON DUPLICATE KEY UPDATE.
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
يمنحك الجمع بين قائمة الأعمدة الصريحة والإدراج المتعدد الدفعي كوداً متيناً وعالي الأداء في MySQL 8. الخطوة التالية: انتقل إلى درس «معالجة تعارض المفاتيح المكررة عبر INSERT IGNORE و Upsert».
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات5
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 INSERT Rows إدراج السجلات
- تعلّم إدراج السجلات المفردة والمتعددة بأمر INSERT في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
- للمراجعة
- 02 Inserting Single Rows with INSERT إدراج صف مفرد بأمر INSERT
- المفهوم الهندسي والصياغة العملية الخاصة بقسم إدراج صف مفرد بأمر INSERT في MySQL 8.
- للمراجعة
- 03 Explicit Column List Best Practice تحديد قائمة الأعمدة الصريحة
- المفهوم الهندسي والصياغة العملية الخاصة بقسم تحديد قائمة الأعمدة الصريحة في MySQL 8.
- للمراجعة
- 04 Multi Row Batch INSERT Syntax الإدراج المتعدد الدفعي للسجلات
- المفهوم الهندسي والصياغة العملية الخاصة بقسم الإدراج المتعدد الدفعي للسجلات في MySQL 8.
- للمراجعة
- 05 Using DEFAULT Keyword in VALUES استخدام DEFAULT داخل VALUES
- المفهوم الهندسي والصياغة العملية الخاصة بقسم استخدام DEFAULT داخل VALUES في MySQL 8.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 CRUD CRUD
- Create, Read, Update, Delete
- العمليات الأربع الأساسية لإدارة البيانات في قواعد البيانات: الإنشاء والقراءة والتحديث والحذف.
- للمراجعة
- 02 DML DML
- Data Manipulation Language
- عائلة أوامر معالجة البيانات في SQL المسؤولة عن إدراج واستعلام وتحديث وحذف السجلات.
- للمراجعة
- 03 ANSI ANSI
- American National Standards Institute (Standard SQL)
- المعيار القياسي للغة SQL الذي يحدد صياغة INSERT INTO ... VALUES المتوافقة بين جميع الأنظمة.
- للمراجعة
- 04 ISO ISO
- International Organization for Standardization (YYYY-MM-DD)
- التنسيق القياسي للتواريخ ('YYYY-MM-DD') المعتمد عند إدراج قيم التاريخ والوقت في MySQL.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
نفّذ أمثلة SQL المشروحة في قسم إدراج صف مفرد بأمر INSERT داخل قاعدة بياناتك المحلية وتحقق من النتيجة.
-
بدّل بين الحالات التفاعلية في قسم تحديد قائمة الأعمدة الصريحة وقارن كيف يعالج محرك MySQL 8 كل أمر.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي5 أسئلة تنتظرك +
ماذا يحدث في MySQL عندما يحدد أمر INSERT أربعة أعمدة في القائمة ولكنه يمرر 3 قيم فقط داخل VALUES (...)؟
يرفض MySQL الأمر فوراً بالخطأ رقم 1136 لعدم تطابق عدد الأعمدة مع عدد القيم الممررة.
إن كتابة أسماء الأعمدة صراحةً في جملة INSERT INTO تحمي استعلامات التطبيق من التعطل عند إضافة أعمدة جديدة للجدول مستقبلاً.
صواب؛ تحديد أسماء الأعمدة صراحةً يضمن استمرار عمل الاستعلامات بأمان حتى لو أُضيفت أعمدة جديدة للجدول.
كيف يمكنك إدراج ثلاثة صفوف دفعةً واحدة في أمر INSERT واحد داخل MySQL؟
تُكتب كلمة VALUES مرة واحدة متبوعةً بثلاثة أقواس قيم يفصل بين كل قوس والآخر فاصلة عادية.
ما الكلمة المفتاحية التي يمكن وضعها بدون علامات اقتباس داخل VALUES (...) لتوجيه MySQL لاستخدام القيمة الافتراضية للعمود؟
تمرير الكلمة المحجوزة DEFAULT يوجه MySQL لتعويض العمود بقيمته الافتراضية المعرَّفة في الجدول.
صياغة INSERT INTO table_name SET col1 = val1 في MySQL مخصصة لإدراج صف واحد فقط في كل أمر ولا تدعم الإدراج المتعدد.
صواب؛ صياغة INSERT ... SET تدرج سجلاً مفرداً واحداً فقط في كل أمر.