logo

ההבדל בין פקודת מחק לקטוע

ההבדל בין פקודת DELETE ל-TRUNCATE הוא החלק הנפוץ ביותר בשאלת ראיון. הם משמשים בעיקר למחיקת נתונים ממסד הנתונים. ההבדל העיקרי ביניהם הוא שמשפט ה-delete מוחק נתונים מבלי לאפס את זהות הטבלה, בעוד שפקודת הקצץ מאפסת את הזהות של טבלה מסוימת . מאמר זה מסביר את הסקירה המלאה של פקודות DELETE ו-TRUNCATE וההבדלים ביניהם, המשמשים בעיקר לסירוגין אך שונים לחלוטין.

פקודת מחק לעומת פקודת קצוץ

מהי פקודת DELETE?

זה פקודת DML או מניפולציה של נתונים משמש למחיקת רשומות מטבלה שאינה נדרשת במסד הנתונים. זה מסיר את השורה השלמה מהטבלה ומפיק את ספירת השורות שנמחקו. אנו זקוקים להרשאת המחיקה בטבלת היעד כדי לבצע פקודה זו. זה גם מאפשר לנו לסנן ולמחוק כל רשומה ספציפית באמצעות איפה סעיף מהטבלה.

זה מבהיר שיש לנו גיבוי של מסד הנתונים שלנו לפני ביצוע פקודה זו מכיוון שאיננו יכולים לשחזר את הרשומות שנמחקו באמצעות שאילתה זו. לכן, ה גיבויים של מסדי נתונים לאפשר לנו לשחזר את הנתונים בכל פעם שנצטרך אותם בעתיד.

התחביר הבא מסביר את הפקודה DELETE להסרת נתונים מהטבלה:

 DELETE FROM table_name WHERE condition; 

מהי פקודת TRUNCATE?

ההצהרה הקטועה היא א פקודת שפת DDL או הגדרת נתונים משמש להסרת נתונים מלאים מהטבלה מבלי להסיר את מבנה הטבלה. אנחנו לא יכולים להשתמש ב איפה סעיף עם פקודה זו, כך שסינון רשומות אינו אפשרי. לאחר ביצוע פקודה זו, אנו לא ניתן לבטל את הנתונים שנמחקו כי היומן לא נשמר בזמן ביצוע פעולה זו.

הפקודה לקצץ מקצה את ה- דפים במקום שורות ועושה ערך עבור דפי ביטול ההקצאה במקום שורות ביומני העסקאות. פקודה זו נועלת את הדפים במקום שורות; לפיכך, הוא דורש פחות מנעולים ומשאבים. שים לב שאיננו יכולים להשתמש במשפט הקטוע כאשר הטבלה מופנית על ידי מפתח זר או משתתפת בתצוגת אינדקס.

אלגברה של קבוצות

התחביר הבא מסביר את הפקודה TRUNCATE להסרת נתונים מהטבלה:

 TRUNCATE TABLE table_name; 

ההבדלים העיקריים בין DELETE ו-TRUNCATE

הנקודות הבאות מסבירות את ההבדלים בין פקודת מחיקה לקטוע:

  1. ההצהרה DELETE משמשת כאשר אנו רוצים להסיר חלק מהרשומות או את כולן מהטבלה, בעוד שהמשפט TRUNCATE תמחק שורות שלמות מטבלה.
  2. DELETE היא פקודת DML מכיוון שהיא משנה רק את נתוני הטבלה, ואילו TRUNCATE היא פקודת DDL.
  3. הפקודה DELETE יכולה לסנן את הרשומה/התופלים על ידי שימוש בסעיף WHERE. עם זאת, הפקודה TRUNCATE אינה מאפשרת שימוש איפה סעיף, כך שלא נוכל לסנן שורות בזמן חיתוך.
  4. DELETE מפעיל את הכל למחוק טריגרים על השולחן לירות. עם זאת, לא מופעלים טריגרים על פעולת הקטיעה מכיוון שהיא לא פועלת בשורות בודדות.
  5. DELETE מבצעת מחיקה שורה אחר שורה אחת בכל פעם מהטבלה, לפי סדר עיבודן. עם זאת, TRUNCATE פועל בדפי נתונים במקום בשורות מכיוון שהוא מחק את כל נתוני הטבלה בכל פעם.
  6. משפט DELETE מוחק רק רשומות ואינו מאפס את זהות השולחן , בעוד TRUNCATE מאפס את הזהות של טבלה מסוימת.
  7. פקודת DELETE דורשת יותר מנעולים ומשאבי מסד נתונים מכיוון שהיא רוכשת את המנעול בכל שורה שנמחקה. לעומת זאת, TRUNCATE רוכש את הנעילה בדף הנתונים לפני מחיקת דף הנתונים; לפיכך, הוא דורש פחות מנעולים ומעט משאבים.
  8. הצהרת DELETE מבצעת ערך ב- יומן עסקאות עבור כל שורה שנמחקה ואילו TRUNCATE מתעד את יומן העסקאות עבור כל דף נתונים.
  9. הפקודה TRUNCATE היא מהיר יותר מאשר הפקודה DELETE כפי שהיא מקצה את דפי הנתונים במקום שורות ומתעדת דפי נתונים במקום שורות ביומני טרנזקציות.
  10. ברגע שהרשומה נמחקת באמצעות הפקודה TRUNCATE, לא נוכל לשחזר אותה בחזרה. לעומת זאת, אנו יכולים לשחזר את הנתונים שנמחקו בחזרה שהסרנו מפעולת ה-DELETE.

תרשים ההשוואה מחק לעומת TRUNCATE

טבלת ההשוואה הבאה מסבירה את ההבדלים העיקריים ביניהם בצורה מהירה:

בסיס השוואה לִמְחוֹק חתוך
הַגדָרָה הצהרת המחיקה משמשת להסרת רשומות בודדות או מרובות מטבלה קיימת בהתאם לתנאי שצוין. פקודת הקטיעה מסירה את הנתונים המלאים מטבלה קיימת אך לא מהטבלה עצמה. זה שומר על מבנה הטבלה או הסכימה.
שפה זוהי פקודת DML (שפת מניפולציה של נתונים). זוהי פקודת DDL (Data Definition Language).
איפה זה יכול להשתמש בסעיף WHERE כדי לסנן כל שורה או נתונים ספציפיים מהטבלה. הוא אינו משתמש בסעיף WHERE כדי לסנן רשומות מהטבלה.
רְשׁוּת אנחנו צריכים לקבל הרשאת DELETE כדי להשתמש בפקודה הזו. אנחנו צריכים לקבל הרשאת ALTER כדי להשתמש בפקודה הזו.
עובד פקודה זו מבטלת רשומות אחת אחת. פקודה זו מוחקת את כל דף הנתונים המכיל את הרשומות.
לנעול זה ינעל את השורה לפני המחיקה. זה ינעל את דף הנתונים לפני המחיקה.
זהות טבלה פקודה זו אינה מאפסת את זהות הטבלה מכיוון שהיא מוחקת רק את הנתונים. זה תמיד מאפס את זהות הטבלה.
עִסקָה הוא שומר על יומני עסקאות עבור כל רשומה שנמחקה. הוא אינו מנהל יומני עסקאות עבור כל דף נתונים שנמחק.
מְהִירוּת המהירות שלו איטית כי היא שמרה על היומן. הביצוע שלו מהיר מכיוון שהוא מחק את כל הנתונים בכל פעם מבלי לשמור על יומני עסקאות.
הדק פקודה זו יכולה גם להפעיל את ההדק המופעל על השולחן ולגרום להם להידלק. פקודה זו אינה מפעילה את הטריגרים המופעלים על השולחן לירי.
לשחזר זה מאפשר לנו לשחזר את הנתונים שנמחקו באמצעות הצהרת COMMIT או ROLLBACK. לא נוכל לשחזר את הנתונים שנמחקו לאחר ביצוע פקודה זו.
תצוגת אינדקס זה יכול לשמש עם תצוגות אינדקס. לא ניתן להשתמש בו עם תצוגות שנוספו לאינדקס.
מֶרחָב הצהרת DELETE תופסת יותר שטח עסקאות מאשר חיתוך מכיוון שהיא שומרת יומן עבור כל שורה שנמחקה. הצהרת TRUNCATE תופסת פחות שטח עסקאות מכיוון שהיא שומרת יומן עסקאות עבור כל דף הנתונים במקום כל שורה.

סיכום

במאמר זה, ערכנו השוואה בין משפט מחיקה לקטוע. הגענו למסקנה כי נעשה שימוש בפקודה DELETE כאשר אנו רוצים להתאים אישית את מחיקת הרשומות מהטבלה. ופקודה TRUNCATE משמשת כאשר אנחנו לא רוצים להשאיר שום רשומה או נתונים בטבלה, כלומר, אנחנו רוצים לרוקן את הטבלה.