شرح INSERT INTO في SQL: كيفية إدخال البيانات إلى الجداول مع أمثلة عملية
ما هي جملة INSERT INTO في SQL؟
تُستخدم جملة INSERT INTO في SQL لإضافة بيانات جديدة إلى جدول داخل قاعدة البيانات. وهي من أكثر الأوامر الأساسية التي يحتاجها أي مطور أو محلل بيانات عند التعامل مع السجلات، سواء كان الهدف هو إدخال صف واحد، أو عدة صفوف دفعة واحدة، أو حتى نقل بيانات من جدول إلى آخر.
في هذا الدليل، ستتعرف على طريقة استخدام INSERT INTO بشكل عملي، مع توضيح الأخطاء الشائعة التي يجب تجنبها عند إدخال البيانات.

الصيغة الأساسية لأمر INSERT INTO
في أبسط صورة، يُستخدم الأمر بهذه البنية:
INSERT INTO table_name (column1, column2, column3, etc)
VALUES (value1, value2, value3, etc);
يتكوّن هذا الأمر من جزأين رئيسيين:
- الجزء الأول يحدد اسم الجدول والأعمدة التي ستُدرج فيها البيانات.
- الجزء الثاني يحتوي على القيم الفعلية التي سيتم حفظها في الصف الجديد.
من الضروري أن يتطابق عدد القيم داخل VALUES مع عدد الأعمدة المحددة، وإلا ستظهر رسالة خطأ عند التنفيذ.
كيفية إضافة صف واحد إلى جدول SQL
لنفترض أن لدينا جدولاً باسم dogs ويحتوي على الأعمدة التالية:
idnamegender
إذا أردنا إضافة كلب واحد باسم AXEL، فسيكون الاستعلام كالتالي:
INSERT INTO dogs( id , name , gender)
VALUES ( 1 , 'AXEL' , 'M' );
بهذا الشكل سيتم إنشاء صف جديد داخل الجدول بالقيم المحددة.

ماذا يحدث إذا لم يتطابق عدد القيم مع عدد الأعمدة؟
من أكثر الأخطاء شيوعاً عند استخدام INSERT INTO هو تمرير عدد قيم أقل أو أكثر من عدد الأعمدة المحددة في الاستعلام.
على سبيل المثال، إذا كتبنا الاستعلام التالي:
INSERT INTO dogs( id , name , gender)
VALUES ( 1 , 'AXEL' );
فسيؤدي ذلك إلى خطأ، لأننا حددنا 3 أعمدة لكننا مررنا قيمتين فقط.

القاعدة هنا بسيطة:
- إذا حددت أعمدة معينة، فيجب أن توفر قيمة لكل عمود.
- ترتيب القيم يجب أن يطابق ترتيب الأعمدة المكتوبة.
- أي نقص أو زيادة سيؤدي عادة إلى فشل تنفيذ الاستعلام.
تأثير قيود الأعمدة عند الإدخال
عند إنشاء الجداول في SQL، من الشائع إضافة قيود مثل NOT NULL أو UNIQUE أو PRIMARY KEY. هذه القيود تُعد قواعد إلزامية يجب احترامها عند إدخال البيانات.
في جدول dogs، لنفترض أن العمودين name وgender يحتويان على القيد NOT NULL. هذا يعني أنه لا يمكن ترك أي منهما بدون قيمة.
إذا حاولنا إدخال NULL في العمود gender، فسيظهر خطأ:
INSERT INTO dogs( id , name , gender)
VALUES ( 1 , 'AXEL' , NULL );

لذلك، قبل تنفيذ أي عملية إدخال، تأكد من مراجعة بنية الجدول والقيود المعرفة على الأعمدة، لأن تجاهلها سيؤدي إلى رفض البيانات.
كيفية إدخال عدة صفوف دفعة واحدة في SQL
إذا كنت تريد إضافة أكثر من صف في استعلام واحد، فإن SQL توفر طريقة عملية وفعالة لذلك، وتكون الصيغة كالتالي:
INSERT INTO table_name (column1, column2, column3, etc)
VALUES (value1, value2, value3, etc),
(value1, value2, value3, etc),
(value1, value2, value3, etc);
تُعد هذه الطريقة أفضل من تنفيذ عدة أوامر منفصلة، خصوصاً عندما تتعامل مع كمية كبيرة من البيانات المتقاربة في البنية.
لكن انتبه إلى النقاط التالية:
- يجب وضع فاصلة بين كل صف وآخر.
- كل مجموعة قيم بين القوسين تمثل صفاً مستقلاً.
- يجب الحفاظ على نفس ترتيب الأعمدة لكل الصفوف.

مثال عملي على إدخال 8 صفوف
فيما يلي مثال يضيف ثمانية كلاب إلى جدول dogs دفعة واحدة:
INSERT INTO dogs( id , name , gender)
VALUES ( 1 , 'AXEL' , 'M' ),
( 2 , 'Annie' , 'F' ),
( 3 , 'Ace' , 'M' ),
( 4 , 'Zelda' , 'F' ),
( 5 , 'Diesel' , 'M' ),
( 6 , 'Tilly' , 'F' ),
( 7 , 'Leroy' , 'M' ),
( 8 , 'Olivia' , 'F' );
هذا الأسلوب يساعد على تقليل عدد الاستعلامات المرسلة إلى قاعدة البيانات، وقد يحسن الأداء في كثير من الحالات.

كيفية نسخ البيانات من جدول إلى آخر باستخدام INSERT INTO و SELECT
لا يقتصر استخدام INSERT INTO على إدخال القيم يدوياً فقط، بل يمكن أيضاً استخدامه مع SELECT لنسخ بيانات من جدول موجود إلى جدول آخر.
الصيغة الأساسية تكون كالتالي:
INSERT INTO table_name1 ( columns )
SELECT columns FROM table_name2;
تُعد هذه الطريقة مفيدة في سيناريوهات مثل:
- نقل البيانات بين الجداول.
- إنشاء أرشيف للسجلات.
- دمج بيانات من مصدر إلى آخر.
- إعادة استخدام بيانات موجودة دون إدخالها يدوياً.
مثال عملي على نسخ الصفوف بين جدولين
لنفترض أن لدينا جدولاً باسم cats يحتوي على ثلاثة صفوف، ويملك نفس أسماء الأعمدة الموجودة في جدول dogs.

يمكننا نسخ جميع البيانات من cats إلى dogs عبر الاستعلام التالي:
INSERT INTO dogs
SELECT * FROM cats;
بعد التنفيذ، ستُضاف سجلات cats إلى جدول dogs مباشرة، بشرط أن يكون ترتيب الأعمدة وأنواع البيانات متوافقة.

أفضل الممارسات عند استخدام INSERT INTO في SQL
حتى تعمل أوامر الإدخال بكفاءة وتجنب الأخطاء المتكررة، من المفيد الالتزام ببعض الإرشادات العملية:
- حدد أسماء الأعمدة بشكل صريح بدلاً من الاعتماد على الترتيب الافتراضي للجدول.
- تحقق من توافق أنواع البيانات قبل الإدخال.
- راجع القيود مثل
NOT NULLوPRIMARY KEYوUNIQUE. - استخدم إدخال عدة صفوف دفعة واحدة عندما يكون ذلك مناسباً لتقليل عدد الاستعلامات.
- عند النسخ بين جدولين، تأكد من تطابق البنية أو حدد الأعمدة المطلوبة بوضوح داخل
SELECT.
الخلاصة التقنية
تُعد جملة INSERT INTO من الركائز الأساسية في SQL، لأنها تمثل البوابة الرئيسية لإضافة البيانات إلى الجداول. قوة هذا الأمر لا تكمن فقط في بساطته، بل أيضاً في مرونته؛ إذ يمكن استخدامه لإدخال صف واحد، أو مجموعة صفوف، أو حتى لنسخ البيانات بين الجداول باستخدام SELECT. عملياً، أكثر ما يسبب المشكلات ليس الأمر نفسه، بل تجاهل تطابق الأعمدة والقيم أو مخالفة قيود الجدول. لذلك، فإن فهم بنية الجدول قبل تنفيذ الإدخال هو العامل الأهم لكتابة استعلامات صحيحة وموثوقة.