الويب المصرى الباشا صاحب المنتدى
عدد المساهمات : 434 تاريخ التسجيل : 14/11/2010 العمر : 37
| موضوع: تحديث السجلات وحذفها MYSQL الأحد نوفمبر 21, 2010 12:52 am | |
| [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة] فى بعض الأحيان بعض اضافتنا لأحد البيانات نحتاج لتعديله. مثلا, اضفنا عميل جديد داخل جدول العملاء.
واكتشفنا بعد ذلك ان هناك خطأ غير مقصود اثناء كتابة هاتف العميل, او عنوانه, الخ.
او احد العملاء انتقل الى شركة اخرى ولم يصبح احد عملائنا ونريد حذفه تماما من قاعدة البيانات.
هذا هو محور درس اليوم, التعديل والحذف.
ويستخدم لهذه الأغراض الأمرين UPDATE و DELETE
وسوف نبدأ بالأولى والتى تستخدم للتعديل على احد البيانات.
وتكون صيغتها بالشكل التالى
كود :
UPDATE table_name SET column_name='the new value', column_2_name = 'another new value for another column'
حيث table_name هو اسم الجدول المراد تعديل احد حقوله و column_name و column_2_name هما الحقلين الذى نريد تعديل قيمتهم. وكل من النصوص الموضوعة داخل علامات التنصيص هى القيم الجديدة التى سيتم اضافتها.
لكن هناك ملحوظة وهى غاية فى الأهمية, والسهو عنها خطأ فادح وخسائره لا اظنها قابلة للإسترجاع. الا وهى. انه عند استخدامك لكل من UPDATE او DELETE يجب ان تضع مشروطة WHERE وتحدد الحقول التى سيتم التطبيق عليها بـ LIMIT 1 حتى يتم التعديل او الحذف على حقل واحد فقط.
اما اذا نسيت ان تفعل ذلك, ربما تضع قيمة واحدة لكل الحقول داخل الجدول, او تحذف محتواه بالكامل!
لنأخذ مثال.
كود :
UPDATE `customers' SET phone=0125746356
فى الكود اعلاه سوف يتم إعداد حقل الـ phone داخل جدول customers الى الرقم 0125746356 وهذا التعديل سوف يطبق على جميع العملاء الموجودين بهذا الجدول! والحل كما ذكرنا بإستخدام WHERE و LIMIT كالتالى
كود :
UPDATE `customers` SET phone=0125746356 WHERE customer_id = 5 LIMIT 1
فى هذا المثال, سوف يتم تحديث رقم هاتف العميل الذى رقم هويته هو 5 فقط. ولاحظ ان حقل الـ customer_id هو حقل الـ PK بهذا اضمن ان العميل الذى اريد تحديد بياناته فقط هو من تم تحديثه. ربما استخدم مثلا WHERE phone=012354647 حيث الرقم 012354647 هو الرقم الخطأ الذى تم تسجيله لهذا العميل, لكن ماذا اذا كان هناك عميل اخر له نفس رقم الهاتف؟ سوف يتم تحديث اما العميل المقصود, او عميل اخر لا نريد تحديث بياناته. نسبة الخطأ فى هذه الحالة ضئيلة ونادرة الحدوث, لكنها مازالت موجودة, لذلك يفضل ان نتلاشاها نهائيا, بالإعتماد على الـ PK فى هذه الأمور.
ملحوظات هامة قبل الإنتقال للجزء الثانى من الدرس. 1. لا تنسى, واكرر لا تنسى ان تستخدم مشروطة WHERE عن القيام بأمر UPDATE الا فى حالة انك تريد تطبيق تعديل ما على كل الحقول. 2. لا تقم بإستخدام الأمر UPDATE لتعديل حقل PK حيث ان القيام بهذا الأمر ربما يدمر العلاقة بين جدولين وينتج عنه خطأ يصعب حله. 3. اضافة مشروطة LIMIT للـ query اختيارية, لكنها زيادة فى الإحتياط حتى نضمن انه لن يتم تحديث اكثر من مدخل واحد ولا اكثر ولا اقل.
ننتقل للجزء الثانى من الدرس وهو طريقة حذف احد حقول الجدول.
صيغة امر DELETE تكون كالتالى
كود :
DELETE FROM table_name WHERE column=value
حيث table_name هو الجدول الذى سنحذف احد البيانات به. والـ column هو احد الحقول التى سنشترط توافر قيمة معينة لها حتى يتم امر الحذف.
كامثال نريد ان نحذف العميل الذى رقم هويته هو 5
كود :
DELETE FROM `customers` WHERE customer_id = 5
لاحظ انه بمجرد اجرائك لأى امر حذف, لا يمكن التراجع فى الأمر واسترجاع ماتم حذفه. لذلك كن حريصا كل الحرص وانت تقوم بهذا الأمر. والأمر DELETE مثله مثل الـ UPDATE من حيث الملحوظات الهامة يجب ان تضع به مشروطة WHERE وينصح بوضع امر التحديد LIMIT ايضا.
اتمنى يكون الدرس بسيط بإذن الله.
والدروس المتبقية ستكون اكثر احترافية حيث اننا سنتطرق لإلقاء نظرة كبيرة نوعا ما على دوال MYSQL
اراكم الدرس المقبل بإذن الله.
| |
|