PracticU

עדכון חלקי של מוצר ב-MySQL

בלי כתוביותעם כתוביות
PracticU › קורס NodeJS › עדכון חלקי של מוצר ב-MySQL
מילון מושגים:
MySQL - מערכת ניהול מסדי נתונים יחסיים בקוד פתוח, נפוצה מאוד באתרים וביישומי אינטרנט.
לקוח - תוכנה או מחשב שפונים לשרת ומבקשים ממנו שירות או מידע, למשל דפדפן שמבקש דף אינטרנט.
פונקציה - קטע קוד בעל שם שמבצע משימה מוגדרת, מקבל ערכי קלט (פרמטרים) ויכול להחזיר תוצאה. מאפשרת לארגן קוד ולהשתמש בו שוב.
קונטרולר - רכיב שמתווך בין הממשק לבין הלוגיקה והנתונים, מקבל בקשות ומחליט כיצד לטפל בהן (למשל בדפוס MVC).
שאילתה - בקשה למסד נתונים לשלוף, להוסיף, לעדכן או למחוק נתונים, לרוב בשפת SQL.
תנאי - ביטוי לוגי בקוד שתוצאתו אמת או שקר, וקובע אילו פקודות יתבצעו בהתאם לערכו.
עמודה - שדה בטבלת מסד נתונים שמחזיק ערך מסוג מסוים עבור כל שורה, למשל שם או תאריך.
Postman - כלי לבדיקת API: שליחת בקשות HTTP לשרת ובחינת התגובות, נפוץ בפיתוח ובבדיקות.

עדכון חלקי של מוצר ב-MySQL
בשיעור מטפלים בעדכון חלקי של מוצר: הלקוח שולח רק את השדות שהוא רוצה לשנות, והשרת בונה את שאילתת העדכון לפי מה שהגיע.
השלבים העיקריים
1. פונקציה נפרדת: העדכון החלקי נכתב בפונקציה נפרדת מהעדכון המלא, והקונטרולר מפעיל אותה בקריאת PATCH. המזהה חובה, ושם, מחיר ומלאי אופציונליים.
2. בניית השאילתה לפי השדות: אם הגיע שם, מוסיפים לשאילתה את החלק של השם, וכך גם למחיר ולמלאי. שדה שלא נשלח לא נכתב כ-undefined, כי אז הוא היה מאפס את הערך במסד הנתונים.
3. פסיקים ורווחים: כל חלק נכתב עם פסיק, ולכן הפסיק האחרון נחתך לפני ה-WHERE. הרווח לפני WHERE חשוב, כי בלעדיו החלקים צמודים מדי.
4. תנאי WHERE: גם כאן השאילתה מעדכנת רק את המוצר לפי המזהה שלו.
5. מגבלה של השיטה: השיטה מכסה כל צירוף של שדות, אבל היא מסורבלת כשיש הרבה עמודות.
בדיקה ב-Postman
שליחה בלי שם השאירה את השם הקודם, ושליחה של מחיר בלבד עדכנה רק את המחיר. בבדיקה נוספת נשלחו כל השדות, והעדכון הצליח.
בסוף השיעור מוצר יכול להתעדכן לפי שדות בודדים, בלי לשלוח את כל הנתונים מחדש.
השיעור הבא בקורס: מחיקה של מוצר ב-MySQL

פרקי ההרצאה: עדכון חלקי של מוצר ב-MySQL

  1. 00:00

    עדכון חלקי: הלקוח שולח רק חלק מהשדות

  2. 00:38

    חשיפת PATCH לעדכון חלקי

  3. 01:20

    הבעיה בשדות שלא נשלחו

  4. 01:58

    בניית שאילתה דינמית לפי השדות שנשלחו

  5. 03:48

    הסרת הפסיק המיותר מהשאילתה

  6. 04:24

    שינוי const ל-let לשרשור השאילתה

  7. 05:49

    שרשור תנאי WHERE למזהה המוצר

  8. 06:46

    איחוד הקוד לשאילתה דינמית אחת

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

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

  1. 00:02

    אנחנו כעת רוצים לעדכן מוצר באופן חלקי זאת אומרת הקליינט לא חייב לתת לנו את הכל הוא יכול לשלוח לנו מה שבא לו ID כמובן הוא חייב לתת לנו אבל אם הוא רוצה שייתן לי name אם הוא לא רוצה שלא ייתן אם הוא רוצה שייתן price אם הוא לא רוצה שלא ייתן בואו נשכפל את הפונקציה הזאת לפונקציה נוספת ונקרא לה update partial product קודם כל שלא נשכח בואו קודם כל נחצין אותה החוצה

  2. 00:34

    מיד אחרי הפונקציה update full product ונלך לקונטרולר, נלך ל-patch, הנה הוא פה ואנחנו רוצים לקרוא ל-update partial product, פונקציה הזאת, שכמובן יש לנו כאן את המוצר, אובייקט מהמודל שבנינו, יש לו את ה-id, ה-id חייב להיות, ויש לו פה את ה-name,

  3. 01:07

    פרייס וסטוק שהם לא חייבים להופיע אז אם אין לו את הניים פרייס וסטוק אחד מהם אנחנו לא רוצים לשלב את זה כביכול בשאילתה זאת אומרת שהשאילתה שלנו שאנחנו בונים כאן היא לא תמיד אותה שאילתה כי אני לא יכול לבוא ולהשאיר את השאילתה הזאת בצורה כזאת כי אם אני אומר לו תשמע update product set product name שווה לproduct.name אז אם יש לי name אז הוא יעודכן

  4. 01:42

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

  5. 02:07

    אז אנחנו רוצים 2, בואו נעשה את זה אמת כאן. const sql שווה. כאן אני רוצה ליצור מחרוזת רגילה ולבצע את הדבר הבא UpdateProductsSetRevah ואני לא יודע אם אני רוצה את החלק הזה כי רק אם בואו נייצר פה איזשהו if product.name שונה מ-undefined רק במצב הזה אני רוצה ללכת ל-SQL ולהוסיף את החלק שמתעסק עם.

  6. 02:52

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

  7. 03:15

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

  8. 03:48

    עכשיו יש לי פה סיטואציה שאני צריך לפתור כי בכל מקרה יש לי איזה שהוא פסיק מיותר כי אם נסתכל על השאילתה עצמה אחרי שיש לנו product name שווה לvalue שלו, unit price שווה, units in stock שווה, כמובן לא חובה שכולם יהיו, מגיע where, אנחנו לא רואים שיש פה פסיק בסוף, וכעת יהיה איזשהו פסיק,

  9. 04:19

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

  10. 04:46

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

  11. 05:21

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

  12. 05:38

    אז אני בעצם מקצץ את המחרוזת מההתחלה ועד אחד לפני הסוף ומכניס את זה ל-SQL מחדש. אחרי שקיצצנו את הפסיק אנחנו רוצים לגשת ל-SQL ולשרשר גם את החלק של ה-Ware.

  13. 05:56

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

  14. 06:08

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

  15. 06:23

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

  16. 06:57

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

לקורס המלא: קורס NodeJS אונליין בעברית

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

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

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

  • עדכון מוצר בריאקט
  • עדכון חלקי במסד נתונים - דוט נט NET Core.
  • הרצאה על Azure MySQL
  • התקנה של mysql

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

  • קורס יסודות HTML - בניית אתר אינטרנט פשוט
  • קורס CSS 3 - בדגש על Flex & Grid
  • קורס Javascript כולל JQuery
  • קורס ג'אווה סקריפט מעשי - JavaScript
  • קורס TypeScript
  • קורס ריאקט - React