اذهب إلى المحتوى

التعامل مع البيانات (الإدخال، الحذف والتعديل) في SQL


إبراهيم البحيصي

بعد أن تعلمنا كيفية إنشاء الجدول في قواعد البيانات، وتعرفنا على أنواع البيانات المستخدمة غالبا، وكيفية إضافة القيود على الجدول، سوف نبدأ في هذا المقال التعرف على جمل التعامل مع البيانات 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;

ملاحظة: العلامة * تعني جميع السجلات. 


تفاعل الأعضاء

أفضل التعليقات

شباب رمضان كريم عليكم

اخوكم جديد

ارجو المساعدة في فهم الاتي و ما هي المخرجات

--- What this query is trying to do:

Select

CUST.CUSTOMER_ID

, ORD.ORDER_ID

, LINES.ORDERLINES_ID

, PRD.PRODUCT

, PRD.PRODUCT_DESCRIPTION

, LINES.AMOUNT

, (LINES.AMOUNT * .17) AMOUNT_VAT

FROM
 
CUSTOMER CUST

INNER JOIN ORDERS ORD ON CUST.CUSTOMER_ID = ORD.CUSTOMER_ID

INNER JOIN ORDERLINES LINES ON ORD.ORDER_ID = LINES.ORDER_ID

LEFT OUTER JOIN PRODUCT PRD ON LINES.PRODUCT_ID = PRD.ID

ORDER BY 1,2,3

رابط هذا التعليق
شارك على الشبكات الإجتماعية



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...