انتقل إلى محتوى الدرس
الدرس 21
دورة MySQL

إدراج السجلات المفردة والمتعددة بأمر INSERT في MySQLMySQL INSERT Statement and Multi Row Inserts

تعلّم إدراج السجلات المفردة والمتعددة بأمر INSERT في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
أقسام الدرس
6
الأمثلة
5
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
8
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

يمثل الأمر INSERT INTO عملية «الإنشاء» (Create) ضمن عمليات البيانات الأساسية الأربع CRUD. ويُستخدم لإضافة سجل جديد أو أكثر داخل الجدول عبر تحديد اسم الجدول، ثم قائمة الأعمدة المستهدفة بين قوسين، متبوعةً بالكلمة المفتاحية VALUES وقيم الحقول بالترتيب نفسه:

  • القيم النصية والتواريخ: تُحاط النصوص والتواريخ القياسية ('2026-11-08') بعلامتي اقتباس مفردتين.
  • القيم الرقمية: تُكتب الأرقام الصحيحة والعشرية (149.99) مباشرةً بدون علامات اقتباس.
  • الأعمدة التلقائية: يُستحسن ترك عمود AUTO_INCREMENT وأعمدة الوقت التلقائية خارج القائمة ليملأها MySQL ذاتياً.
مخطط يوضح إدراج صف مفرد بأمر INSERT INTO والإدراج المتعدد الدفعي وصياغة INSERT INTO ... SET في MySQL 8
SQL
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 سيعطل جميع أوامر الإدراج في التطبيق. لذلك احرص دائماً على كتابة أسماء الأعمدة صراحةً:

SQL
-- 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: يُنفَّذ الأمر المتعدد كوحدة ذرية واحدة؛ فإذا خالف الصف الثالث أي قيد، يتراجع المحرك تلقائياً عن الصفين الأول والثاني لضمان تماسك البيانات.
SQL
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 بالقيمة الافتراضية المعرَّفة للعمود:

SQL
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;. ولأن كل عمود يُكتب بجوار قيمته مباشرةً، فإنها تمنع أخطاء تبديل ترتيب الأعمدة في الجداول الكبيرة (مع الانتباه إلى أنها تدرج صفاً واحداً فقط في كل أمر):

SQL
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);عدة صفوفأعلى سرعة إدراج دفعي في معاملة ذرية واحدة
صياغة التعيين SETINSERT 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

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 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

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 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.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. نفّذ أمثلة SQL المشروحة في قسم إدراج صف مفرد بأمر INSERT داخل قاعدة بياناتك المحلية وتحقق من النتيجة.

  2. بدّل بين الحالات التفاعلية في قسم تحديد قائمة الأعمدة الصريحة وقارن كيف يعالج محرك MySQL 8 كل أمر.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

5أسئلة 2أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي5 أسئلة تنتظرك
01

ماذا يحدث في MySQL عندما يحدد أمر INSERT أربعة أعمدة في القائمة ولكنه يمرر 3 قيم فقط داخل VALUES (...)؟

يرفض MySQL الأمر فوراً بالخطأ رقم 1136 لعدم تطابق عدد الأعمدة مع عدد القيم الممررة.

02

إن كتابة أسماء الأعمدة صراحةً في جملة INSERT INTO تحمي استعلامات التطبيق من التعطل عند إضافة أعمدة جديدة للجدول مستقبلاً.

صواب؛ تحديد أسماء الأعمدة صراحةً يضمن استمرار عمل الاستعلامات بأمان حتى لو أُضيفت أعمدة جديدة للجدول.

03

كيف يمكنك إدراج ثلاثة صفوف دفعةً واحدة في أمر INSERT واحد داخل MySQL؟

تُكتب كلمة VALUES مرة واحدة متبوعةً بثلاثة أقواس قيم يفصل بين كل قوس والآخر فاصلة عادية.

04

ما الكلمة المفتاحية التي يمكن وضعها بدون علامات اقتباس داخل VALUES (...) لتوجيه MySQL لاستخدام القيمة الافتراضية للعمود؟

تمرير الكلمة المحجوزة DEFAULT يوجه MySQL لتعويض العمود بقيمته الافتراضية المعرَّفة في الجدول.

05

صياغة INSERT INTO table_name SET col1 = val1 في MySQL مخصصة لإدراج صف واحد فقط في كل أمر ولا تدعم الإدراج المتعدد.

صواب؛ صياغة INSERT ... SET تدرج سجلاً مفرداً واحداً فقط في كل أمر.