PracticU

פקודת Update למתקדמים

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

פקודת Update למתקדמים
ההרצאה עוסקת בפקודת UPDATE: עדכון דרך ממשק גרפי, עדכון של עמודה אחת או כמה עמודות, עדכון לפי תת-שאילתה ו-JOIN, ושמירת הערכים הישנים בטבלת לוג.
שלבי הפקודה
1. ממשק גרפי: עריכה ישירה בטבלה. בדוגמה נוסף אחוז הנחה לשלוש השורות של הזמנה אחת.
2. שם טבלה עם רווח: שם שמכיל רווח נכתב בסוגריים מרובעים, למשל [Order Details]. גם גרשיים תקניים, אבל בפועל נהוג להשתמש בסוגריים מרובעים לשמות טבלה.
3. UPDATE עם WHERE: מגדירים את העמודה והערך החדש, ו-WHERE מגביל את השורות שמתעדכנות. בדוגמה עודכנו הנחה וכמות באותה פקודה.
4. תת-שאילתה: רשימת מזהי ההזמנות מתקבלת משאילתה על Orders לפי לקוח, ו-IN בודק אם מזהה השורה נמצא ברשימה. בדוגמה עודכנו 10 שורות של חמש הזמנות של לקוח אחד.
5. JOIN: אותו עדכון אפשר לכתוב עם JOIN בין הטבלאות, בצורת UPDATE ... FROM. לפני העדכון ההרצאה מציגה SELECT עם אותו JOIN כדי לוודא את השורות.
6. EXISTS: גרסה נוספת עם EXISTS. ההרצאה מציינת שהיא פחות נוחה לבדיקה, ולכן מומלץ להריץ קודם את השאילתה הפנימית.
7. טבלת לוג: נוצרה טבלה עם מזהה הזמנה, מוצר, הנחה, שם המשתמש, זמן ופעולה. ערך ברירת המחדל של שם המשתמש הוא ORIGINAL_LOGIN(), והזמן הוא GETDATE(). בתוך העדכון נכתב OUTPUT עם הערכים הישנים.
8. משתנה טבלה: משתנה מסוג טבלה שומר את ערכי העדכון, מזהה ההזמנה ומחיר היחידה, לשימוש בהמשך הסקריפט. הוא זמין רק לאצווה הנוכחית (עד GO).
שימו לב
פקודת UPDATE יכולה לעדכן טבלה אחת בלבד, אבל אפשר לעדכן כמה עמודות באותה טבלה. בתוך UPDATE, הטבלה deleted מכילה את הערכים הישנים, והטבלה inserted את החדשים.
העדכון לפי תנאי, תת-שאילתה או JOIN מאפשר לשנות רק את השורות הרצויות, והלוג משמר את ההיסטוריה.
השיעור הבא בקורס: סוגים שונים של varchar

פרקי ההרצאה: פקודת Update למתקדמים

  1. 00:00

    מבוא לפקודת UPDATE למתקדמים

  2. 02:40

    איתור הלקוח לפי מספר ההזמנה

  3. 04:17

    עדכון שורה אחת בפקודת UPDATE

  4. 06:17

    הגבלת העדכון לשורות מסוימות עם WHERE

  5. 08:48

    עדכון כל ההזמנות של לקוח מסוים

  6. 10:49

    תת-שאילתה לבחירת ההזמנות לעדכון

  7. 12:25

    קביעת הנחה קבועה ללקוח

  8. 13:36

    עדכון עם JOIN

תמלול ההרצאה: פקודת Update למתקדמים

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

  1. 00:02

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

  2. 00:35

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

  3. 00:47

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

  4. 01:05

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

  5. 01:27

    נעשה edit על טבלת order details ונניח להזמנה הזאת אנחנו רוצים לעשות הנחה של 50%. אז אנחנו לוקחים את כל השורות של ההזמנה, שימו לב, הזמנה 10248, יש לה שלוש שורות, כי בהזמנה הזאת יש שלושה מוצרים, מוצר 11, מוצר 42 ו-72.

  6. 01:55

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

  7. 02:14

    יפה מאוד. אז ככה אני יכול לשנות את המידע. יפה מאוד, נניח אני יכול לעשות על מוצר אחד ככה הנחה, מוצר אחר הנחה אחרת.

  8. 02:24

    שימו לב, 10248 זו הזמנה שאני לא יודע למי היא שייכת. ויש את ההזמנה 10249 עם שני מוצרים, ו-10258 עם שלושה מוצרים. ואני לא יודע למי שייכת ההזמנה הזאת.

  9. 02:40

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

  10. 03:14

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

  11. 03:37

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

  12. 03:56

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

  13. 04:08

    אז צריך לעדכן ב-Order Details בעמודת Discount את כל ההזמנות של הבחור הזה. וצריך לראות את כל ההזמנות שלו. בואו נתחיל לעשות את כל הסיפור הזה. נתחיל מעדכון פשוט של הזמנה אחת בפקודות.

  14. 04:26

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

  15. 04:50

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

  16. 05:08

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

  17. 05:32

    והגרשיים אני משתמש בהם לסטרינגים, טקסטים יפה אז אני מעדכן את הטבלה order details ואני רוצה לעדכן שדה שימו לב הפקודה היא update ואחרי זה שד איזה שדה אני רוצה לעדכן נניח שדה דיסקאונט שיש שווה לדיסקאונט שהיה לו פלוס 0.1% זה אומר 10% אני הוספתי לו וככה אני מעדכן שימו לב עכשיו אני אעדכן את כל המוצרים בטבלה לכולם אני אתן הנחה אתם רואים, עשיתי הנחה לכל ה-2,155 מוצרים, לא הייתי רוצה לעשות הנחה לכולם,

  18. 06:20

    אני רוצה רק לשורות מסוימות. אז בגלל שאני רוצה רק לשורות מסוימות, אני עושה where ומגביל את השורות. אז לדוגמה, ב-order details אני לוקח רק שורות של הזמנה, רק שורות של הזמנה 10,248 זה היה, 10,248, יפה מאוד, ואז אני מעדכן את זה, עשיתי Control Tab, מי שרוצה לדעת מה עשיתי לחצתי Control Tab,

  19. 06:55

    ועכשיו אני עדכנתי רק שלוש שורות, רק שלוש שורות, בואו נראה, היה 0,4,0,5,0,5, נהיה 0,3,0,4,0,4, אוקיי, אתם רואים לכולם יש 0,4 עכשיו?

  20. 07:12

    10,248, אה, הורדתי לו את ההנחה, הנה אני מוסיף לו את ההנחה, הנה הוספתי לו הנחה, שלוש שורות הותקנו, בואו נבדוק, אנחנו רואים באמת שזה התעדכן ל-0.5 אחוז.

  21. 07:28

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

  22. 07:45

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

  23. 08:10

    נניח נוריד קוונטיטי אחד, ואז תסתכלו ממה אנחנו מתחילים, 12, 10, 5, אתם רואים? 12, 10, 5 ו-50 אחוז הנחה. בואו נעדכן את זה, ואנחנו מקבלים 11, 9, 4, אתם רואים? הכמות כן ירדה.

  24. 08:36

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

  25. 08:54

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

  26. 09:09

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

  27. 09:27

    אז אני עושה סלקט כוכבית, From Orders, מטבלת ההזמנות, Where Customer ID שווה ynet הזה. בואו נראה.

  28. 09:50

    כן, ל-ynet הזה יש חמש הזמנות, אתם רואים חמש שורות, חמש הזמנות, ואותם אני רוצה לעדכן. אז איך אני עושה את זה? אני עושה דבר כזה, אני מתחיל עוד פעם ב-update, בפקודת ה-update.

  29. 10:03

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

  30. 10:15

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

  31. 10:35

    מי שיודע c-sharp או שפות תכנות אחרות עוד נהוג להשתמש בפלוס שווה כזה. ואני רוצה רק את השורות שבהם orderid רק orderid שייך ל-ynet הזה. orderid in והרשימה הזאת.

  32. 11:00

    הבנתם? זאת אומרת, אני נותן לו, אומר לו, תקשיב, ה-Order ID שאתה מעדכן בטבלת Order Details חייב להיות בתוך הרשימה הזאת, והרשימה הזאת זו הרשימה של כל ההזמנות של ynet הזה.

  33. 11:16

    רק פה אסור לי להחזיר כל כך הרבה עמודות כי הוא לא יודע למה להשוות, אני צריך להגיד לו, תקשיב, תחזיר לי רק את העמודה Order ID. זאת אומרת, הוא ייקח את השאילתה הזאת, יחזיר לי רק את ה-Order IDs, רק את ה-Order IDs, ויבדוק האם עבור כל שורה ב-Order Details הוא יבדוק האם היא נמצאת ברשימה הזאת.

  34. 11:40

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

  35. 11:59

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

  36. 12:18

    אתם רואים מה היה 0.6 לדוגמה? הנה, נהיה 0.7, יפה מאוד. מה הוספנו לו? Discount, אוקיי, עשינו לו 0.7. בואו נקבע לו לדוגמה שאנחנו רוצים לתת לו הנחה קבועה של 0.3% ללקוח הזה, אנחנו אומרים לו תעדכן רק את הרשומות של הלקוח הזה וקיבלנו 0.3 אחוז, בואו נראה, קיבלנו 0.3

  37. 12:50

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

  38. 13:03

    אני אישית מאוד אוהב את הצורה של סאב קוויריס, למה? כי ככה אני יכול להסתכל שהסאב קווירי מחזיר לי את מה שצריך, סאב קווירי מחזיר לי את מה שצריך ואז אני אומר לו תקשיב תיקח מהתוצאה הזאת את הorder ids ותבדוק ותעדכן רק את הרשומות האלו זה נקרא צורת סאבקווירי

  39. 13:24

    כמו שאתם יודעים הרבה פעמים או תמיד אפשר להחליף סאבקווירי ב-join אז בואו נעשה אותו דבר עם join וזה נקרא update עם from ביחד אותה תוצאה אנחנו מתחילים אותו דבר אני אפילו אתיק את זה יפה אבל בואו נעשה את זה עם join איך אנחנו נעשה את זה בואו נעשה update עם join נתחיל בסלקט רגיל עם join, סלקט כוכבית from order details join orders on order

  40. 14:17

    details הזה אין לי כוח לכתוב אותו אז אני אעשה od וזה o פשוט on od order details order id שווה לטבלת orders גם order id where

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

ההרצאה הקודמת: Delete & Truncate

ההרצאה הבאה: סוגים שונים של varchar

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

  • Powershell למתקדמים
  • VLAN - למתקדמים
  • קבוצות למתקדמים
  • Download the new update

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

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