دورة MySQL للمبتدئين

6: INSERT Statement – دورة MySQL

السلام عليكم و رحمة الله و بركاته

في هذا الدرس، سنتطرق إلى كيفية إدخال المعلومات في الجداول باستعمال الأمر INSERT.

إدخال القيم مع ذِكْر الأعمدة

نعتبر الجدول التالي:

CREATE TABLE employees (	id 			INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
							fullname 	VARCHAR(20) NOT NULL,
							job 		VARCHAR(20) NOT NULL,
                            address		VARCHAR(50),
                        );

يمكننا إدخال البيانات في الجدول بالطريقة المعروفة :

INSERT INTO (العمود_الثاني, العمود_الأول) اسم_الجدول VALUES (القيمة_الثانية, القيمة_الأولى);

مثال:

INSERT INTO employees (fullname, job) VALUES ( 'KHALID Mohammed', 'Project Manager');

ملاحظة: لم نقم بإدخال القيمة الخاصة بالعمود id و ذلك لأنه يحمل الخاصية AUTO_INCREMENT مما يعني أنه يتم تعبئة هذا العمود بشكل أوتوماتيكي من خادم MySQL.

بعد ذكر اسم الجدول، وضعنا أسماء الأعمدة بترتيب معين و من ثمة قمنا بكتابة البيانات بعد الكلمة المفتاحية VALUES وفق نفس ترتيب الأعمدة.

بهذه الطريقة، يمكن تجاوز بعض الأعمدة و عدم إدخال قيم بها (العمود address في هذه الحالة لم يتم ذكره أثناء الإدخال).

و لكن يجب احترام الترتيب المحدد للأعمدة عند إدخال البيانات، إذ يمكننا تغيير الترتيب كل مرة و لكن لا بد من الحرص على إدخال البيانات في الأعمدة الصحيحة على التوالي.

مثال:

INSERT INTO employees (job, fullname) VALUES ('Project Manager', 'KHALID');

في هذا المثال قمنا بتسبيق العمود job على fullname، و لكن عند كتابة البيانات أو القيم، فإنه لا بد من كتابة القيمة الخاصة بالعمود job أولا لأنه يوجد في الترتيب الأول، و القيمة الخاصة بالعمود fullname تكتب في الرتبة الثانية على التوالي.

إدخال القيم دون ذِكْر الأعمدة

يمكن أيضا إدخال القيم في الجداول و لكن بشكل مختصر دون إعادة ذكر الأعمدة، لكن في هذه الحالة، يجب احترام بعض الشروط:

  • لا بد من احترام ترتيب الأعمدة الخاصة بالجدول (نفس الترتيب عند إنشاء الجدول)
  • لا بد من إدخال القيم جميعها دون ترك حقل ما فارغ بلا أية قيم

و يمكن فعل ذلك بالطريقة التالية:

INSERT INTO employees VALUES ( 'Salma', 'Marketer', NULL);

نلاحظ أنه كتبنا في حقل address الكلمة NULL، و ذلك لأنه عند وجود غياب قيمة خاصة بحقل ما، و هذا الحقل ليس من الواجب أن يحتوي على قيم (أي أنه قابل ليكون فارغا NULL )، نكتب في مكان العمود كلمة NULL، تجنبا لظهور خطأ ما أثناء هذه العملية.

إدخال قيم متعددة

عندما نرغب في إدخال قيم متعددة دون الحاجة إلى إعادة كتابة اسم الجدول و ترتيب العمود كل مرة ندخل فيها صفا، يمكننا أن نلجأ إلى الطريقة التالية:

INSERT INTO (العمود_2, العمود_1) اسم_الجدول VALUES (القيمة_2, القيمة_1),(القيمة_4,القيمة_3);

في هذه الحالة، لا بد من احترام ترتيب الأعمدة، كما هي:

INSERT INTO employees (fullname, job, address) VALUES
('JAWAD', 'Accountant', NULL),
('WARDI', 'Commercial', 'ADDRESS');

إدخال قيم مع تجاهل المكررة منها

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

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

مثال: لنعتبر القيم التالية بجدول ما

+----+----------+
| id | name     |
+----+----------+
|  1 | Mohammed |
|  2 | MONA     |
+----+----------+

إذا أدخلنا اسما جديدا يحمل نفس الرقم لدى MONA مثلا بالطريقة التالية:

 INSERT INTO test VALUES (2, 'NARIMAN');

سيظهر الخطأ التالي:

ERROR 1062 (23000): Duplicate entry '2' for key 'test.PRIMARY'

ذلك أن المفتاح الرئيسي لا بد أن يكون وحيدا و خاصا بكل قيمة.

و لتجنب هذا، خاصة عند إدخال العديد من البيانات في نفس الوقت، نستعمل الطريقة التالية (لتوضيح الفرق قمنا بإضافة صف آخر ذو رقم مختلف):

INSERT IGNORE INTO test VALUES ( 2, 'MONA'),(3, 'ABDERRAHIM');

و النتيجة دون ظهور أي خطأ:

+----+------------+
| id | name       |
+----+------------+
|  1 | Mohammed   |
|  2 | MONA       |
|  3 | ABDERRAHIM |
+----+------------+

تم تجاهل القيمة التي احتوت على نفس الرقم الموجود في الجدول (2)، و لكن تمت إضافة الصف الثالث دون أية مشاكل.

أسلوب خاص بـ MySQL

تقدم MySQL طريقة خاصة بها من أجل إدخال البيانات، و هي كالتالي:

INSERT INTO اسم_الجدول SET القيمة=العمود, القيمة=العمود;

مثال:

INSERT INTO employees 
SET fullname='ANWAR', job='Manager';

في هذه الحالة، يمكن تجاهل إدخال البيانات في أعمدة ما دون ظهور أي خطأ، كما يمكن تغيير ترتيبتها دون مشاكل.

نسخ قيم جدول إلى جدول آخر

في حال ما رغبنا بنسخ قيم جدول ما إلى جدول آخر، لا بد من التأكد أولا من أن:

  • الجداول متشابهة من حيث عدد الأعمدة
  • الأعمدة تحمل نفس المواصفات

مثال: لدينا جدولين، Table_A و Table_B ، بحيث كلا الجدولين لهما نفس عدد الأعمدة و نفس مواصفاتها:

  • العمود numbers يحمل المواصفات: INT PRIMARY KEY AUTO_INCREMENT
  • العمود letter يحمل المواصفات: VARCHAR(1)

الجدول Table_A يحمل القيم التالية:

+---------+--------+
| numbers | letter |
+---------+--------+
|       1 | A      |
|       2 | B      |
|       3 | C      |
|       4 | D      |
|       5 | E      |
+---------+--------+

في حين أن الجدول Table_B فارغ.

من أجل نسخ البيانات من جدول Table_A إلى جدول Table_B، نستعمل الكود التالي:

INSERT INTO Table_B (numbers_B, letters_B) 
SELECT Table_A.numbers_A, Table_A.letters_A 
FROM Table_A 
ORDER BY Table_A.numbers_A; 

بحيث كتبنا في البداية بعد أمر INSERT INTO اسم و أعمدة الجدول الفارغ الذي نريد نسخ البيانات إليه و هو الجدول B.

و في السطر الثاني، قمنا باسترجاع البيانات باستعمال SELECT من الجدول الذي نريد أخذ البيانات منه، و ذلك بذكر الأعمدة بنفس ترتيب أعمدة الجدول الفارغ B : اسم_الجدول.اسم_العمود

و بعدها حددنا ترتيب البيانات حسب المفتاح الرئيسي و هو numbers_A .

يمكنكم تجربة الكود بأنفسكم.

السابق
5: التعديل على الجداول – دورة MySQL
التالي
7: SELECT Statement – دورة MySQL

شاركنا برأيك