انتقل إلى محتوى الدرس
الدرس 24
دورة MySQL

تحديث وحذف السجلات بأمان عبر UPDATE و DELETE في MySQLMySQL UPDATE and DELETE Statements with Safety Guards

تعلّم تحديث وحذف السجلات بأمان عبر UPDATE و DELETE في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
أقسام الدرس
6
الأمثلة
5
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
7
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

يمثل الأمر UPDATE عملية «التحديث» (Update) ضمن منظومة CRUD. ويقوم بتعديل عمود واحد أو أكثر داخل السجلات القائمة عبر جملة SET col1 = val1, col2 = val2، مقترنةً بشرط استهداف دقيق WHERE لضمان تعديل السجل المطلوب فقط:

  • اسم الجدول (UPDATE products): يحدد الجدول المراد تعديل بياناته.
  • تعيين القيم (SET unit_price = 129.00): يسند قيماً جديدة أو معادلات حسابية للأعمدة المستهدفة.
  • شرط الحماية (WHERE product_id = 101): يحدد الصف المقصود بدقة عبر مفتاحه الأساسي أو الفريد.
مخطط يوضح تحديث السجلات بأمر UPDATE وحذفها بأمر DELETE مع شرط الحماية WHERE وتفعيل حارس الأمان sql_safe_updates في MySQL 8
SQL
UPDATE products
SET
    unit_price = 135.00,
    stock_qty = stock_qty + 10
WHERE product_id = 101;

في محرك InnoDB، يُعد استهداف التحديث عبر المفتاح الأساسي PRIMARY KEY (أو مفتاح فريد مثل WHERE sku_code = 'KB-800') جوهرياً للدقة والأداء معاً؛ إذ يقوم المحرك بقفل ذلك السجل المفرد فقط بدلاً من قفل جميع صفوف الجدول:

SQL
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:

SQL
DELETE FROM products
WHERE product_id = 109;

إن تنفيذ أمر UPDATE أو DELETE مع نسيان جملة WHERE يُعد من أخطر الأخطاء الكارثية في هندسة البرمجيات؛ إذ يقوم MySQL حينها بتعديل أو مسح جميع سجلات الجدول بالكامل. ولتجنب ذلك، يوفر MySQL متغير الحماية الأصلي sql_safe_updates الذي يعترض فوراً أي أمر تحديث أو حذف لا يتضمن شرطاً مفتاحياً ويرفضه بالخطأ Error 1175:

SQL
-- 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 بعد التأكد التام:

SQL
-- 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

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 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

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 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 الذي يحتفظ بالنسخة السابقة للصف قبل تحديثه أو حذفه.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. نفّذ أمثلة SQL المشروحة في قسم تحديث السجلات بأمر UPDATE SET داخل قاعدة بياناتك المحلية وتحقق من النتيجة.

  2. بدّل بين الحالات التفاعلية في قسم تحديث صف محدد بالمفتاح الأساسي وقارن كيف يعالج محرك MySQL 8 كل أمر.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

4أسئلة 2أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي4 أسئلة تنتظرك
01

ماذا يحدث إذا نفذت الأمر UPDATE products SET unit_price = 50; بدون جملة WHERE (عندما يكون وضع الأمان معطلاً)؟

يؤدي حذف جملة WHERE إلى تعديل عمود السعر في جميع صفوف الجدول بالكامل.

02

كيف يؤثر الأمر DELETE FROM orders WHERE order_id = 509; على عداد AUTO_INCREMENT في محرك InnoDB؟

يحافظ الحذف بأمر DELETE على قيمة عداد الترقيم التلقائي كما هي دون تصفير (على عكس TRUNCATE TABLE).

03

أي أمر جلسة يفعّل حارس الأمان الأصلي في MySQL لمنع أوامر UPDATE وDELETE الخالية من شرط مفتاحي في WHERE؟

يفعّل الأمر SET sql_safe_updates = 1 وضع التحديث الآمن على مستوى الجلسة.

04

يُعد تشغيل استعلام SELECT بنفس شرط WHERE للتحقق من السجلات قبل تنفيذ أمر DELETE ممارسة أمان هندسية موصى بها.

صواب؛ يضمن الفحص المسبق بأمر SELECT التأكد البصري من دقة الشرط قبل الحذف الفعلي.