بعد أن تعلمنا كيفية إنشاء الجدول في قواعد البيانات، وتعرفنا على أنواع البيانات المستخدمة غالبا، وكيفية إضافة القيود على الجدول، سوف نبدأ في هذا المقال التعرف على جمل التعامل مع البيانات Data Manipulation Language، بحيث ستكون لدينا في نهاية المقال المعرفة اللازمة لإضافة سجل بيانات على الجدول، تعديل سجل بيانات، وحذف سجل بيانات وذلك باستخدام جمل SQL اللازمة لذلك:UPDATE
،INSERT
وDELETE
.
تغيّر جمل التعامل مع البيانات على البيانات في الجدول، لذلك فإن مسؤول قواعد البيانات لا بدّ أن يدير الصلاحيّات اللازمة للتغيير على البيانات بطريقة مُثلى.
لابد التنويه إلى أن جمل التعامل مع البيانات (UPDATE
،INSERT
وDELETE
) لا تُرجع بيانات أو مُخرجات عند تنفيذها، ولكن أغلب أنظمة إدارة قواعد البيانات تطبع لك ملخص السجلات التي تأثرت بتنفيذ الجمل السابقة.
هيكلية الجدول
قبل البدء بشرح جمل التعامل مع البيانات ومعرفة كيفية تنفيذها، لابد أن تكون لدينا المعرفة الكاملة بهيكلية الجدول الذي نريد إضافة سجل إليه أو تعديله أو الحذف منه، والتعرف على هيكلية الجدول يتضمن:
- معرفة ترتيب الأعمدة الموجودة في الجدول،
- معرفة أسماء الأعمدة،
- معرفة نوع البيانات الخاصة بكل عمود،
- التعرف على الأعمدة المطبق عليها قيود ومعرفة هذه القيود وطبيعتها،
- معرفة القيم المبدئية إذا وجدت.
تُقدم أغلب نظم إدارة قواعد البيانات الأمر اللازم لمعرفة هيكلية الجدول، والصيغة العامة لهذا الأمر تكون كالتالي:
DESCRIBE table_name;
أو تكون بالصيغة التالية:
DESC table_name;
جُملة إضافة السجلات
توجد طريقتان لإضافة سجلات البيانات على الجدول في قاعدة البيانات، الأولى تتضمن كتابة أسماء الأعمدة التي نريد إعطاءها قيمًا بالإضافة للقيم نفسها التي نريد حفظها، وتسمى هذه الطريقة الإضافة بأسماء الأعمدة، والطريقة الثانية، في حال أردنا أن نضيف بيانات لكل الأعمدة في الجدول بنفس الترتيب الموجود في الجدول، فهنا لا نكتب أسماء الأعمدة، وتسمى هذه الطريقة الإضافة بمواقع الأعمدة.
الصيغة العامة للطريقة الأولى:
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
الصيغة العامة للطريقة الثانية:
INSERT INTO table_name
VALUES (value1, value2, value3, ...);
لنفترض وجود جدول Persons بالهيكلية والبيانات التالية:
Person_ID | First_Name | Last_Name | Age |
101 | Ibrahim | Mohammed | 31 |
102 | Mohammed | Khaled | 25 |
لإضافة سجل إلى هذا الجدول نستخدم الجملة التالية:
INSERT INTO Persons
VALUES (103, 'Saleem', 'Yaser',20);
ملاحظة: تُكتَب النصوص في بعض أنظمة قواعد البيانات بين علامتي التنصيص المزدوجة. فمثلا لكتابة اسم Ibrahim
في جملة الإضافة نكتبها هكذا "Ibrahim"
، بينما توجد أنظمة أخرى تعتمد التعامل مع النصوص بين علامتي تنصيص منفردة، هكذا 'Ibrahim'
.
في جملة إضافة السجل السابقة لم نذكر اسم أي من الأعمدة، لأننا أدخلنا قيمًا لكل الأعمدة. القيمة الأولى (103
) هي للعمود الأول (Person_ID
) والثانية ('Saleem'
) للعمود الثاني (First_Name
) وهكذا. ولكن في بعض الحالات لا نضيف السجل بهذه الطريقة، ففي كثير من الأحيان نحتاج إلى إضافة قيم لأعمدة معينة.
مثال على تحديد الأعمدة
الأعمدة التي يكون عليها قيد مفتاح رئيسي غالبا لا تُدخَل قيم إليها في جمل الإضافة، ويُستخدم بدلاً لذلك طرق لتوليد قيم لها مثل طريقة جعل العمود (ذي النوع الرقمي) Auto Increment الذي يزيد آخر رقم في العمود بالعدد واحد ثم يستخدمه للعمود الذي يوجد عليه المفتاح الرئيسي. في هذه الحالة تكون جملة الإضافة بالصيغة التالية:
INSERT INTO Persons (first_name, last_name, age)
VALUES ('Aly',Mohammed',25);
ويصبح الجدول بعد تنفيذ الجملتيْن السابقتيْن كالتالي:
Person_ID | First_Name | Last_Name | Age |
101 | Ibrahim | Mohammed | 31 |
102 | Mohammed | Khaled | 25 |
103 | Saleem | Yaser | 20 |
104 | Aly | Mohanmmed | 25 |
نصيحة عملية: يُفضل أن تعتمد جمل الإضافة باستخدام أسماء الأعمدة وذلك لتجنب ظهور أخطاء عند تغيير هيكلية الجدول.
القيم الفارغة
لو افترضنا وجود قيد العمود غير الفارغ على الأعمدة First_Name
وAge
مع وجود قيد المفتاح الرئيسي على العمود Person_Id
وخاصية Auto Increment
عليه، فإن أي جملة إضافة لا تشتمل على قيم ل First_Name
أو Age
سوف تُظهِر خطأ عند تنفيذها، ولكن لأننا لم نضف قيد العمود غير الفارغ على عمود Last_Name
، فإننا نستطيع تجاهل هذا العمود عند الإضافة كالتالي:
INSERT INTO Persons (first_name, age)
VALUES ('Reem', 20);
تصبح البيانات في الجدول كالتالي عند تنفيذ الجملة السابقة:
Person_ID | First_Name | Last_Name | Age |
101 | Ibrahim | Mohammed | 31 |
102 | Mohammed | Khaled | 25 |
103 | Saleem | Yaser | 20 |
104 | Aly | Mohanmmed | 25 |
105 | Reem | 20 |
من المهم فهم طبيعة القيم الفارغة Null
في جداول قواعد البيانات، حيث إنها تختلف عن قيمة الصفر أو القيم النصية ""
. القيم الفارغة هي التي تُركت بدون اعتبار عند إضافة السجل أو تعديله، كما أن القيم الفارغة لا تخضع للفحص أو المقارنة باستخدام عمليات مثل =
>
<
<>
؛ ونستخدم بدلا منها عمليات IS NULL
أو IS NOT NULL
(هذه النقطة سوف نشرحها في درس جملة الاستعلام).
جملة تعديل السجل
نستخدم جملة تعديل السجل لإجراء عملية تغيير لقيم الأعمدة في سجل معين أو مجموعة سجلات أو على الجدول بأكمله.
الصيغة العامة لجملة تعديل السجل كالتالي:
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
ملاحظات هامة:
-
في حالة تعديل أكثر من عمود، يجب وضع فاصلة بين القيم الجديدة للأعمدة.
تُمثلcolumn1
وcolumn2
أسماء الأعمدة التي نريد تغيير قيمها، وتمثلvalue1
وvalue2
القيم الجديدة للأعمدة السابقة بالترتيب. - نستطيع التعديل على أكثر من عمود في نفس جملة التعديل.
-
لا بد من الحذر والانتباه الشديديْن عند تنفيذ جملة التعديل، حيث إن جملة الشرط (
WHERE condition
) تحدد السجلات التي سيُعدَّل عليها، وفي حالة عدم وجود جملة الشرط، فإن جميع السجلات في الجدول ستدخل في العملية.
تعديل سجل واحد
لتعديل سجل واحد، يجب أن نُحدد الشرط الذي يميز هذا السجل على نحو فريد في جملة الشرط، وغالبا يُستخدَم عمود قيد المفتاح الرئيسي في الجدول. فمثلا، إذا أردنا أن نُعدل قيمة العمر Age
من 31
إلى 21
للشخص صاحب الرقم 101
في جدول Persons
ننفذ الجملة التالية:
UPDATE Persons
SET Age = 21
WHERE Person_Id = 101;
ويصبح السجل بالقيم التالية:
Person_ID | First_Name | Last_Name | Age |
101 | Ibrahim | Mohammed | 21 |
لاحظ أننا في جملة الشرط استخدمنا عملية المقارنة =
لتحديد رقم Person_Id
، وهنا يجب أن ننوه أننا نستطيع استخدام جميع عمليات المقارنة في جملة الشرط بشرط أن تكون منطقية ومكتوبة بطريقة صحيحة، فمثلا، لو أردنا أن نُعدل جميع أعمار الأشخاص الذين أعمارهم 20
أو أقل، لتصبح 25
ننفذ الجملة التالية:
UPDATE Persons
SET Age = 25
WHERE Age <= 20;
السجلات التي لها القيمة 103
و105
في العمود Person_Id
هي التي ستتأثر بالجملة السابقة عند تنفيذها، وتصبح البيانات في الجدول على النحو التالي:
Person_ID | First_Name | Last_Name | Age |
101 | Ibrahim | Mohammed | 21 |
102 | Mohammed | Khaled | 25 |
103 | Saleem | Yaser | 25 |
104 | Aly | Mohanmmed | 25 |
105 | Reem | 25 |
جملة حذف السجل
تُستخدَم جملة الحذف لإجراء عملية مسح بيانات موجودة في جدول معين وتتحكّم فيها جملة الشرط والتي تحدد السجل أو السجلات التي ستُحذَف.
الصيغة العامة لجملة الحذف
DELETE FROM table_name
WHERE condition;
لابد من الانتباه عند تنفيذ جملة الحذف، حيث إنه في حالة عدم تحديد جملة الشرط، فإن كل البيانات في الجدول ستُحذَف.
حذف سجل واحد
لحذف السجل الخاص بالشخص الذي رقمه 103 ننفذ الجملة التالية:
DELETE FROM Persons
WHERE Person_Id = 103;
لحذف السجل الخاص بالشخص ذي القيمة الفارغة في الحقل Last_Name
ننفذ الجملة التالية:
DELETE FROM Persons
WHERE Last_Name IS NULL;
حذف بيانات الجدول
لحذف البيانات بالكامل من الجدول Persons
ننفذ إحدى الجملتيْن التاليّتيْن:
DELETE FROM Persons;
أو
DELETE * FROM Persons;
ملاحظة: العلامة *
تعني جميع السجلات.
أفضل التعليقات
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.