שאילתת עדכון ב-MySQL היא משפט DML המשמש לשינוי הנתונים של טבלה. שאילתת ה-UPDATE חייבת לדרוש את סעיף SET ו-WHERE. פסקת ה-SET משמשת לשינוי ערכי העמודה המצוינת בסעיף WHERE.
סעיף JOIN ב-MySQL משמש בהצהרה כדי לאחזר נתונים על ידי צירוף טבלאות מרובות בתוך שאילתה אחת.
ה- UPDATE JOIN הוא הצהרת MySQL המשמשת לביצוע עדכונים חוצי טבלאות, כלומר נוכל לעדכן טבלה אחת באמצעות טבלה אחרת עם תנאי הסעיף JOIN . שאילתה זו מעדכנת ומשנה את הנתונים שבהם מצטרפת יותר מטבלה אחת על סמך יְסוֹדִי מפתח ו זָר מפתח ותנאי צירוף מוגדר. אנו יכולים לעדכן עמודות בודדות או מרובות בו-זמנית באמצעות ה שאילתת עדכון .
הערה: הצהרת MySQL UPDATE JOIN נתמכת מגרסה 4.0 ומעלה.
תחביר
להלן תחביר בסיסי של משפט UPDATE JOIN לשינוי הרשומה בטבלת MySQL:
UPDATE Tab1, Tab2, [INNER JOIN | LEFT JOIN] Tab1 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Condition;
בתחביר MySQL UPDATE JOIN לעיל:
ראשית, ציינו את שתי הטבלאות: הטבלה הראשית (Tab1) וטבלה נוספת (tab2) לאחר סעיף UPDATE. לאחר סעיף UPDATE, נדרש לציין לפחות טבלה אחת. לאחר מכן, פירטנו את סוגי סעיפי JOIN , כלומר, או INNER JOIN או שמאל הצטרף , המופיעים מיד אחרי פסקת ה-UPDATE ולאחר מכן פרידיקט join שצוין אחרי מילת המפתח ON. לאחר מכן, עלינו להקצות את הערכים החדשים לעמודות ב-Tab1 ו/או ב-Tab2 לצורך שינוי בטבלה. לבסוף, התנאי של משפט WHERE משמש להגבלת שורות לעדכון.
איך UPDATE JOIN עובד ב-MySQL?
תהליך העבודה של UPDATE JOIN MySQL זהה לתיאור בתחביר לעיל. אבל לפעמים, היינו מגלים שהשאילתה הזו לבדה ביצעה את עדכון הצלבות הטבלה מבלי לערב הצטרפות. התחביר הבא הוא דרך נוספת לעדכן טבלה אחת באמצעות טבלה אחרת :
מהי הגשת ספריות
UPDATE Tab1, Tab2, SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Tab1.C1 = Tab2.C1 AND condition;
הצהרת ה-UPDATE שלמעלה מייצרת את אותה תוצאה כמו ה-UPDATE JOIN עם סעיפי INNER JOIN או LEFT JOIN. זה אומר שאנחנו יכולים לכתוב מחדש את התחביר לעיל כתחביר UPDATE JOIN המוצג למעלה:
UPDATE Tab1,Tab2 INNER JOIN Tab2 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Taba2.C2, Tab2.C3 = expression WHERE condition
הבה ניקח כמה דוגמאות כדי להבין כיצד פועלת המשפט UPDATE JOIN בטבלת MySQL.
עדכון הצטרפות דוגמאות
ראשית, ניצור שתי טבלאות בשם ביצועים ו עוֹבֵד , ושתי הטבלאות קשורות באמצעות מפתח זר. כאן, ה'ביצוע' הוא א טבלת הורים , ו'עובדים' הוא ה יֶלֶד שולחן . התסריטים הבאים יוצרים את שתי הטבלאות יחד עם הרשומות שלהן.
טבלה: ביצועים
CREATE TABLE Performance ( performance INT(11) NOT NULL, percentage FLOAT NOT NULL, PRIMARY KEY (performance) );
לאחר מכן, מלא את הרשומות בטבלה באמצעות המשפט INSERT.
INSERT INTO Performance (performance, percentage) VALUES(101,0), (102,0.01), (103,0.03), (104,0.05), (105,0.08);
לאחר מכן, בצע את שאילתת ה-SELECT כדי לאמת את הנתונים כפי שמוצג בתמונה למטה:
טבלה: עובדים
CREATE TABLE Employees ( id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, performance INT(11) DEFAULT NULL, salary FLOAT DEFAULT NULL, CONSTRAINT fk_performance FOREIGN KEY (performance) REFERENCES Performance (performance) );
לאחר מכן, מלא את הרשומות בטבלה באמצעות המשפט INSERT.
INSERT INTO Employees (name, performance, salary) VALUES('Mary', 101, 55000), ('John', 103, 65000), ('Suzi', 104, 85000), ('Gracia', 105, 110000), ('Nancy Johnson', 103, 95000), ('Joseph', 102, 45000), ('Donald', 103, 50000);
לאחר מכן, בצע את שאילתת ה-SELECT כדי לאמת את הנתונים כפי שמוצג בתמונה למטה:
עדכן JOIN עם דוגמה של INNER JOIN
נניח שאנחנו רוצים לעדכן את שכרו של העובד על בסיס ביצועיו . אנו יכולים לעדכן את שכר העובד בטבלת העובדים באמצעות הצהרת UPDATE INNER JOIN מכיוון שהביצועים אֲחוּזִים מאוחסן בטבלת הביצועים.
בטבלאות לעיל, עלינו להשתמש ב- ביצועים כדי להצטרף לטבלת עובדים וביצועים. ראה את השאילתה למטה:
UPDATE Employees e INNER JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * percentage;
לאחר ביצוע ההצהרה הנ'ל, נקבל את הפלט שלהלן, שבו נוכל לראות שעמודת השכר של העובד מתעדכנת בהצלחה.
תן לנו להבין איך השאילתה הזו עובדת ב-MySQL. בשאילתה, ציינו רק את טבלת העובדים לאחר סעיף ה-UPDATE. זה בגלל שאנחנו רוצים לשנות את הרשומה רק בטבלת העובדים, לא בשתי הטבלאות.
השאילתה בודקת את ערכי עמודת הביצועים עבור כל שורה בטבלה 'עובדים' מול עמודת הביצועים של טבלת 'ביצועים'. אם הוא יקבל את עמודת הביצועים התואמים, הוא לוקח את האחוז בטבלת הביצועים ומעדכן את עמודת השכר של טבלת העובדים. שאילתה זו מעדכנת את כל הרשומות בטבלת Employees מכיוון שלא ציינו את סעיף WHERE בשאילתת UPDATE JOIN.
עדכן JOIN עם דוגמה ל-LEFT JOIN
כדי להבין את ה-UPDATE JOIN עם LEFT JOIN, ראשית עלינו להוסיף שתי שורות חדשות לטבלת העובדים:
INSERT INTO Employees (name, performance, salary) VALUES('William', NULL, 73000), ('Rayan', NULL, 92000);
מכיוון שעובדים אלה הם עובדים חדשים, כך שיא הביצועים שלהם אינו זמין. ראה את הפלט שלהלן:
אם נרצה לעדכן את השכר לעובדים חדשים , איננו יכולים להשתמש בשאילתת UPDATE INNER JOIN. זה נובע מחוסר הזמינות של נתוני הביצועים שלהם בטבלת הביצועים. לפיכך, נשתמש בהצהרת UPDATE LEFT JOIN כדי למלא את הצורך הזה.
הצהרת UPDATE LEFT JOIN ב-MySQL משמשת לעדכון שורה בטבלה כאשר לא נמצאו רשומות בשורה המתאימה של טבלה אחרת.
לדוגמה , אם ברצוננו להעלות את השכר לעובד חדש ב-2.5%, נוכל לעשות זאת בעזרת ההצהרה הבאה:
UPDATE Employees e LEFT JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * 0.025 WHERE p.percentage IS NULL;
לאחר ביצוע השאילתה לעיל, נקבל את הפלט כמו תמונה למטה, שבה נוכל לראות שהשכר של העובדים החדשים שעובדים מעודכן בהצלחה.
במאמר זה, למדנו את הצהרת MySQL Update Join המאפשרת לנו לשנות את הנתונים הקיימים בטבלה אחת עם הנתונים החדשים מטבלה אחרת עם תנאי הסעיף JOIN. שאילתה זו היא יתרון כאשר אנו צריכים לשנות עמודות מסוימות המצוינות בסעיף WHERE יחד עם שימוש בסעיפים INNER JOIN או LEFT JOIN.