حذف (SQL)
في لغة الاستعلامات البنيوية لقواعد البيانات ( SQL )، تُستخدم عبارة DELETE لحذف صف واحد أو أكثر من جدول . [ 1 ] : 428 يمكن تحديد مجموعة فرعية للحذف باستخدام شرط، وإلا فسيتم حذف جميع السجلات. [ 2 ] تسمح بعض أنظمة إدارة قواعد البيانات (DBMS)، مثل MySQL ، بحذف صفوف من جداول متعددة باستخدام عبارة DELETE واحدة (يُطلق على هذا أحيانًا اسم حذف الجداول المتعددة).
لا يمكن حذف القيم الفردية باستخدام DELETE، بل UPDATEيجب استخدام لتعيين القيمة إلى NULL. [ 1 ] : 428 يجب دائمًا إنشاء نسخ احتياطية قبل استخدام DELETE. [ 1 ] : 429
أمثلة
حذف الصفوف من جدول الفطائر حيث يساوي عمود النكهة "ليمون مرينغ" :
احذف من جدول الفطائر حيث النكهة = 'ليمون مرينغ' ؛احذف الصفوف في الأشجار إذا كانت قيمة الارتفاع أقل من 80.
احذف من الأشجار حيث يكون الارتفاع أقل من 80 ؛حذف جميع الصفوف من جدولي :
حذف من جدول mytable ؛حذف الصفوف من جدول mytable باستخدام استعلام فرعي في شرط where:
حذف من الجدول mytable حيث يكون المعرف موجودًا في ( تحديد المعرف من الجدول mytable2 )؛حذف صفوف من جدول mytable باستخدام قائمة من القيم:
حذف من الجدول mytable حيث يكون id موجودًا في ( القيمة1 ، القيمة2 ، القيمة3 ، القيمة4 ، القيمة5 )؛مثال مع الجداول ذات الصلة
لنفترض وجود قاعدة بيانات بسيطة تُدرج الأشخاص وعناوينهم. يمكن لأكثر من شخص أن يسكن في عنوان واحد، ويمكن للشخص الواحد أن يسكن في أكثر من عنوان (هذا مثال على علاقة متعددة الأطراف ). تحتوي قاعدة البيانات على ثلاثة جداول فقط: person و address و pa ، وتتضمن البيانات التالية:
|
|
|
يوضح الجدول pa العلاقة بين جدولي الشخص والعنوان، حيث يظهر أن جو وبوب وآن يعيشون جميعًا في 2001 شارع مين، لكن جو يقيم أيضًا في شارع بيكو بوليفارد.
لإزالة اسم "جو" من قاعدة البيانات، يجب تنفيذ عمليتي حذف:
حذف من جدول الأشخاص حيث pid = 1 ؛ حذف من جدول pa حيث pid = 1 ؛للحفاظ على سلامة البيانات المرجعية، يجب حذف سجلات جو من كلٍّ من جدولي "person" و "pa" . قد يكون الأمر أن قاعدة البيانات، بالإضافة إلى احتوائها على ثلاثة جداول، مُهيأة أيضًا بمُشغِّل بحيث عند حذف أي صف من جدول " person"، تُحذف جميع الصفوف المرتبطة به من جدول "pa" . ثم العبارة الأولى:
حذف من جدول الأشخاص حيث يكون رقم التعريف الشخصي (pid) يساوي 1 ؛سيؤدي ذلك تلقائيًا إلى تشغيل الثاني:
احذف من الجدول pa حيث pid = 1 ;سمات
- هو أمر من أوامر لغة معالجة البيانات (DML)، ولذلك تُستخدم الأوامر التالية لهذا الأمر: COMMIT و ROLLBACK
- لحذف جميع السجلات أو بعضها من الجدول، يمكنك تحديد السجلات المراد حذفها باستخدام عبارة WHERE.
- لا يحرر المساحة التي تشغلها البيانات في الجدول (في مساحة الجدول)
- لا يُعيد تعيين قيمة التسلسل المُخصصة للجدول
- عملية الحذف أبطأ بكثير من عملية الحذف (TRUNCATE).
- يمكنك التراجع عن عملية حذف السجلات باستخدام أمر ROLLBACK
- يتطلب الأمر DELETE قفل جدول مشترك
- إطلاق النار
- يمكن استخدام أمر الحذف في حالة: رابط قاعدة البيانات
- تُعيد عملية الحذف عدد السجلات المحذوفة
- سجل المعاملات - يتطلب حذف السجلات قراءة السجلات، والتحقق من القيود، وتحديث الكتلة، وتحديث الفهارس، وإنشاء سجلات الإعادة/التراجع. كل هذا يستغرق وقتًا، وبالتالي يستغرق وقتًا أطول بكثير من حذف جميع البيانات.
- يؤدي ذلك إلى انخفاض الأداء أثناء التنفيذ - حيث يتم قفل كل سجل في الجدول لمنع حذفه.
- تستهلك عبارة DELETE مساحة معاملات أكبر من عبارة TRUNCATE
- يمكن استخدام أمر الحذف مع طرق العرض المفهرسة
- يؤدي الحذف إلى إنشاء كمية صغيرة من عمليات الإعادة وكمية كبيرة من عمليات التراجع
- عملية الحذف لا تجعل الفهارس غير القابلة للاستخدام قابلة للاستخدام مرة أخرى
الأوامر ذات الصلة
قد تستغرق عملية حذف جميع الصفوف من جدول وقتًا طويلاً. توفر بعض أنظمة إدارة قواعد البيانات أمر TRUNCATE TABLE الذي يعمل بسرعة أكبر بكثير، حيث أنه يُعدّل البيانات الوصفية فقط ولا يستغرق عادةً وقتًا في تطبيق القيود أو تشغيل المُشغّلات.
يحذف الأمر DELETE الصفوف فقط. أما لحذف جدول بالكامل، فيمكن استخدام الأمر DROP .
مراجع
- 1 2 3 جون داكيت؛ إيمي ستون؛ كريس أولمان (2022). PHP وMySQL: تطوير مواقع الويب من جانب الخادم . هوبوكين، نيو جيرسي : جون وايلي وأولاده، المحدودة. ISBN 978-1-119-14921-7LCCN 2021951353. مؤرشف من الأصل بتاريخ 30 أبريل 2025. تم الاطلاع عليه بتاريخ 28 أبريل 2026 .
- ↑ "عبارة حذف SQL" . W3Schools.
روابط خارجية
- مقارنة بين حذف البيانات وحذفها في قواعد بيانات SQL تُقدم أمثلة على ميزات عبارات الحذف.
- كلمات SQL الرئيسية
