PracticU

מחיקת רשומות קיימות ב-SQL

בלי כתוביותעם כתוביות
PracticU › קורס DBA אפליקטיבי - שפת SQL למתחילים › מחיקת רשומות קיימות ב-SQL
מילון מושגים:
רשומה - שורה בטבלת מסד נתונים שמרכזת את כל השדות של פריט אחד, למשל כל הפרטים של לקוח יחיד.
DELETE - פקודת SQL למחיקת שורות מטבלה. גם שיטת HTTP לבקשת מחיקה של משאב בשרת.
טבלה - מבנה במסד נתונים שמאחסן נתונים בשורות ועמודות. כל שורה היא רשומה וכל עמודה היא שדה.
מפתח ראשי - עמודה או צירוף עמודות שמזהים באופן ייחודי כל שורה בטבלת מסד נתונים.
מפתח זר - עמודה בטבלה שמפנה למפתח הראשי בטבלה אחרת, ובכך יוצרת קשר בין הטבלאות.
מסד נתונים - אוסף מאורגן של נתונים המאוחסן כך שאפשר לשמור, לחפש, לעדכן ולשלוף אותו ביעילות, לרוב באמצעות שפת שאילתות.

מחיקת רשומות קיימות ב-SQL
מחיקת רשומה נעשית עם Delete From. ההרצאה מראה למה חייבים לציין איזו רשומה למחוק, מתי המחיקה נכשלת בגלל קשר בין טבלאות, ומה קורה למספור האוטומטי אחרי מחיקה.
מה קורה במחיקה
1. הפקודה: Delete From Products. אם משאירים אותה כך, המערכת תנסה למחוק את כל הרשומות, ולכן לא מומלץ.
2. מחיקה לפי מפתח ראשי: מוסיפים Where ProductID = 3, כדי למחוק מוצר ספציפי.
3. כשל בגלל קשר: המחיקה של מוצר 3 נכשלה בשגיאה על הפרת reference constraint FK (Foreign Key). קיים קשר לטבלת Order Details, ככל הנראה כי למוצר יש הזמנות, והקשר לא מאפשר למחוק.
4. מחיקה שמצליחה: נוסף מוצר חדש (בננה, מזהה 78) שאין לו הזמנות, ומחיקתו הצליחה: one row affected. אחרי רענון הוא נעלם.
5. המספור לא חוזר: מוצר חדש שהוסף אחר כך (תפוז) קיבל מזהה 79 ולא 78. מזהה שנמחק לא ניתן שוב, כי יכול להיות שהוא בשימוש בטבלת היסטוריה או במסד נתונים אחר, והמערכת לא משכפלת מפתחות ראשיים.
שימו לב
- אי אפשר למחוק רשומה שמתנגשת עם קשר בין טבלאות שאינו מתיר זאת.
- קשרים אחרים עשויים כן לאפשר מחיקה, כפי שנלמד בנושא הקשרים.
אחרי ההרצאה אפשר למחוק רשומה מסוימת, ולהבין שגיאת FK ולמה המזהה שנמחק לא חוזר.
השיעור הבא בקורס: יצירת מסד נתונים - שפת SQL

פרקי ההרצאה: מחיקת רשומות קיימות ב-SQL

  1. 00:00

    מחיקת רשומות עם DELETE FROM

  2. 00:39

    שגיאת Foreign Key במחיקה

  3. 01:33

    הוספת מוצר חדש ומחיקתו

  4. 02:11

    מפתחות שנמחקו אינם חוזרים

תמלול ההרצאה: מחיקת רשומות קיימות ב-SQL

הטקסט המלא של הדקות הראשונות בהרצאה «מחיקת רשומות קיימות ב-SQL» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    הדבר הבא שאנחנו רוצים לראות זה מחיקת רשומות. מחיקת רשומה מתבצעת על ידי פקודת delete from שם טבלה, products בואו נניח.

  2. 00:12

    אם אני אשאיר את הפקודה as is, המערכת תנסה למחוק את כל הרשומות, לא מומלץ בכלל. אנחנו צריכים לתאר אילו רשומות אנחנו רוצים למחוק.

  3. 00:23

    רשומה לרוב אנחנו מוחקים על ידי המפתח הראשי שלה, where product ID שווה למישהו מסוים וספציפי. בואו נניח שאנחנו רוצים להיפטר מאותו מוצר amazing anisid syrup הזה ה-ID שלו זה 3.

  4. 00:39

    המערכת תנסה למחוק ספציפית את המוצר הזה. בואו נריץ ונקבל שגיאה. בואו נבין רגע מה השגיאה אומרת. The delete statement conflicted with reference constraint FK. FK זה Foreign Key.

  5. 00:57

    זאת אומרת שיש איזשהו קישור בין טבלת המוצרים רואים את זה כאן לבין טבלה אחרת בשם order details שנמצאת פה וכנראה שיש שם את המוצר הזה.

  6. 01:12

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

  7. 01:24

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

  8. 01:35

    יכול להיות שהריליישן כן יאפשר ריליישן אחר הריליישן הזה לא מאפשר למחוק דיברנו על זה כשלמדנו על ריליישן לכן אנחנו רוצים להוסיף מוצר חדש שימו לב ניקיתי מקודם את הדאטה בית שוב בואו נוסיף כרגע בננה נגדיר one box סתם אני זורק פה והיא עולה unit פרייס 5.6, גו, נרפרש טיפה, יש לנו מוצר 78 ואין לו הזמנות.

  9. 02:04

    אני כרגע הוספתי אותו, ברור שאין לו הזמנות. בואו ננסה למחוק אותו, 78. בום, עף מהדאטאבייס, one row affected. בואו נחזור, זה שאתם רואים אותו פה זה בגלל שעדיין לא רפרשנו, קונטרול R, בואו נגלול פה למטה, אין לנו את הבננה.

  10. 02:25

    אם אנחנו, דרך אגב, בלי קשר למחיקה, הולכים ומוסיפים עכשיו לדוגמה תפוס אורנג' ואומרים לו שהוא עולה 10 ונרפרש, האם יינתן לנו ID 78? תשובה בהחלט לא, 79. אם מחקתם איזשהו פריט, אף אחד לא ייקח את ה-ID שלו למקום אחר, וזה מאוד הגיוני.

  11. 02:52

    אף אחד לא ייתן שוב פעם את ה-ID שנמחק. למה? יכול להיות שה-ID הזה

לקורס המלא: קורס SQL ו‑DBA אפליקטיבי

ההרצאה הקודמת: עדכון רשומות קיימות ב-SQL

ההרצאה הבאה: יצירת מסד נתונים - שפת SQL

הרצאות קשורות מקורסים אחרים

  • רשומות DNS
  • מחיקת מוצר - קורס NodeJS
  • מחיקת מוצר בריאקט
  • מחיקת VPC - ב-AWS

קורסים נוספים במסלול

  • קורס NoSQL - MongoDB
  • קורס SSIS
  • קורס BI - ניתוח מסדי נתונים - Qlik Sense
  • קורס Power BI