في هذا الدرس 6تصفّح المواضيع
يمثل الأمر UPDATE عملية «التحديث» (Update) ضمن منظومة CRUD. ويقوم بتعديل عمود واحد أو أكثر داخل السجلات القائمة عبر جملة SET col1 = val1, col2 = val2، مقترنةً بشرط استهداف دقيق WHERE لضمان تعديل السجل المطلوب فقط:
- اسم الجدول (
UPDATE products): يحدد الجدول المراد تعديل بياناته. - تعيين القيم (
SET unit_price = 129.00): يسند قيماً جديدة أو معادلات حسابية للأعمدة المستهدفة. - شرط الحماية (
WHERE product_id = 101): يحدد الصف المقصود بدقة عبر مفتاحه الأساسي أو الفريد.
UPDATE products
SET
unit_price = 135.00,
stock_qty = stock_qty + 10
WHERE product_id = 101;
في محرك InnoDB، يُعد استهداف التحديث عبر المفتاح الأساسي PRIMARY KEY (أو مفتاح فريد مثل WHERE sku_code = 'KB-800') جوهرياً للدقة والأداء معاً؛ إذ يقوم المحرك بقفل ذلك السجل المفرد فقط بدلاً من قفل جميع صفوف الجدول:
UPDATE products
SET unit_price = ROUND(unit_price * 0.90, 2)
WHERE sku_code = 'KB-800';
يمثل الأمر DELETE FROM عملية «الحذف» (Delete) في منظومة CRUD. ويقوم بإزالة الصفوف الكاملة التي تطابق شرط WHERE من الجدول. وعلى خلاف الأمر الهيكلي TRUNCATE TABLE (الذي يفرغ الجدول بالكامل ويعيد تصفير عداد الترقيم)، يعمل DELETE FROM ... WHERE على مستوى الصفوف ويحافظ على قيمة عداد AUTO_INCREMENT ويفعّل إجراءات المفاتيح الأجنبية ON DELETE:
DELETE FROM products
WHERE product_id = 109;
إن تنفيذ أمر UPDATE أو DELETE مع نسيان جملة WHERE يُعد من أخطر الأخطاء الكارثية في هندسة البرمجيات؛ إذ يقوم MySQL حينها بتعديل أو مسح جميع سجلات الجدول بالكامل. ولتجنب ذلك، يوفر MySQL متغير الحماية الأصلي sql_safe_updates الذي يعترض فوراً أي أمر تحديث أو حذف لا يتضمن شرطاً مفتاحياً ويرفضه بالخطأ Error 1175:
-- Enable safe update guard for the current session
SET sql_safe_updates = 1;
-- Verify the active session setting
SELECT @@sql_safe_updates AS safe_mode_enabled;
قبل تنفيذ أي عملية UPDATE أو DELETE على بيانات هامة، طبّق دائماً قاعدة الفحص المسبق بأمر SELECT: اكتب أولاً استعلام SELECT بنفس شرط WHERE للتحقق بصرياً من السجل المستهدف، ثم حوّل الأمر إلى UPDATE أو DELETE بعد التأكد التام:
-- Step 1: Preview the exact target row with SELECT
SELECT product_id, sku_code, title, unit_price
FROM products
WHERE product_id = 109;
-- Step 2: Execute the targeted DELETE with the verified key
DELETE FROM products
WHERE product_id = 109;
يقارن الجدول الشامل التالي بين أوامر التحديث والحذف وآليات الحماية في MySQL 8:
| الأمر / الحارس | الوظيفة الأساسية | هل يشترط مفتاحاً في وضع الأمان؟ | الأثر على عداد AUTO_INCREMENT |
|---|---|---|---|
UPDATE ... SET ... WHERE | تعديل قيم الأعمدة للصفوف المطابقة | نعم (يرفض بالخطأ 1175 بدونه) | لا يتغير |
DELETE FROM ... WHERE | حذف الصفوف المطابقة على مستوى السجل | نعم (يرفض بالخطأ 1175 بدونه) | يحفظ آخر قيمة وصل إليها العداد |
TRUNCATE TABLE | تفريغ الجدول بالكامل كأمر هيكلي | لا ينطبق (يشمل الجدول كله) | يعيد تصفير العداد إلى 1 |
SET sql_safe_updates = 1 | منع التحديث والحذف بدون شرط مفتاحي | يفرض وجود المفتاح | إعداد أمان على مستوى الجلسة |
ملخص الدرس: أتممت بهذا الدرس الوحدة السادسة (عمليات البيانات CRUD)؛ حيث أتقنت تعديل السجلات بأمر UPDATE ... SET، وحذفها بأمر DELETE FROM مع شرط المفتاح الأساسي، وقاعدة الفحص المسبق بـ SELECT، وتفعيل حارس الأمان SET sql_safe_updates = 1.
الخطوة التالية والدرس القادم: انتقل الآن إلى الوحدة السابعة (تصفية وترتيب وتحديد النتائج) للتعمق في شروط WHERE المتقدمة والفرز عبر ORDER BY وتقسيم الصفحات عبر LIMIT.
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
أتقنت الآن جميع عمليات CRUD الأربع (INSERT وSELECT وUPDATE وDELETE) مع حواجز الأمان الاحترافية في MySQL 8. الخطوة التالية: ابدأ الوحدة السابعة لإتقان التصفية والفرز وتقسيم النتائج.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات5
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 Updating Rows تعديل السجلات
- تعلّم تحديث وحذف السجلات بأمان عبر UPDATE و DELETE في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
- للمراجعة
- 02 Modifying Rows with UPDATE SET تحديث السجلات بأمر UPDATE SET
- المفهوم الهندسي والصياغة العملية الخاصة بقسم تحديث السجلات بأمر UPDATE SET في MySQL 8.
- للمراجعة
- 03 Targeted Updates by Primary Key تحديث صف محدد بالمفتاح الأساسي
- المفهوم الهندسي والصياغة العملية الخاصة بقسم تحديث صف محدد بالمفتاح الأساسي في MySQL 8.
- للمراجعة
- 04 Removing Rows with DELETE FROM حذف السجلات بأمر DELETE FROM
- المفهوم الهندسي والصياغة العملية الخاصة بقسم حذف السجلات بأمر DELETE FROM في MySQL 8.
- للمراجعة
- 05 Enabling SQL Safe Updates Guard تفعيل الحماية sql_safe_updates
- المفهوم الهندسي والصياغة العملية الخاصة بقسم تفعيل الحماية sql_safe_updates في MySQL 8.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 CRUD CRUD
- Create, Read, Update, Delete
- منظومة العمليات الأربع الأساسية لإدارة البيانات والتي تكتمل بأمري التحديث UPDATE والحذف DELETE.
- للمراجعة
- 02 DML DML
- Data Manipulation Language
- أوامر معالجة السجلات على مستوى الصف مثل الإدراج والتحديث والحذف.
- للمراجعة
- 03 PK PK
- Primary Key Target Guard
- عمود المفتاح الأساسي المستخدم في جملة WHERE لاستهداف صف واحد بدقة أثناء التحديث أو الحذف.
- للمراجعة
- 04 UNDO UNDO
- InnoDB Undo Log
- سجل التراجع في محرك InnoDB الذي يحتفظ بالنسخة السابقة للصف قبل تحديثه أو حذفه.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
نفّذ أمثلة SQL المشروحة في قسم تحديث السجلات بأمر UPDATE SET داخل قاعدة بياناتك المحلية وتحقق من النتيجة.
-
بدّل بين الحالات التفاعلية في قسم تحديث صف محدد بالمفتاح الأساسي وقارن كيف يعالج محرك MySQL 8 كل أمر.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي4 أسئلة تنتظرك +
ماذا يحدث إذا نفذت الأمر UPDATE products SET unit_price = 50; بدون جملة WHERE (عندما يكون وضع الأمان معطلاً)؟
يؤدي حذف جملة WHERE إلى تعديل عمود السعر في جميع صفوف الجدول بالكامل.
كيف يؤثر الأمر DELETE FROM orders WHERE order_id = 509; على عداد AUTO_INCREMENT في محرك InnoDB؟
يحافظ الحذف بأمر DELETE على قيمة عداد الترقيم التلقائي كما هي دون تصفير (على عكس TRUNCATE TABLE).
أي أمر جلسة يفعّل حارس الأمان الأصلي في MySQL لمنع أوامر UPDATE وDELETE الخالية من شرط مفتاحي في WHERE؟
يفعّل الأمر SET sql_safe_updates = 1 وضع التحديث الآمن على مستوى الجلسة.
يُعد تشغيل استعلام SELECT بنفس شرط WHERE للتحقق من السجلات قبل تنفيذ أمر DELETE ممارسة أمان هندسية موصى بها.
صواب؛ يضمن الفحص المسبق بأمر SELECT التأكد البصري من دقة الشرط قبل الحذف الفعلي.