הצהרת REPLACE ב-MySQL היא הרחבה של תקן SQL. משפט זה פועל כמו משפט INSERT, אלא שאם שורה ישנה תואמת את הרשומה החדשה בטבלה עבור PRIMARY KEY או אינדקס UNIQUE, פקודה זו מחקה את השורה הישנה לפני הוספת השורה החדשה.
הצהרה זו נדרשת כאשר אנו רוצים לעדכן את הרשומות הקיימות לטבלה כדי לעדכן אותן. אם נשתמש בשאילתת ההוספה הרגילה למטרה זו, היא תיתן ערך Duplicate עבור PRIMARY KEY או שגיאת מפתח UNIQUE. במקרה זה, נשתמש במשפט REPLACE לביצוע המשימה שלנו. הפקודה REPLACE דורשת אחד מהשניים אפשרי מתרחשות פעולות:
מחרוזת java cmp
- אם לא נמצא ערך תואם עם שורת הנתונים הקיימת, אזי מבוצעת משפט INSERT סטנדרטי.
- אם נמצאה הרשומה הכפולה, הפקודה replace תמחק את השורה הקיימת ולאחר מכן תוסיף את הרשומה החדשה לטבלה.
בהצהרת REPLACE, העדכון בוצע בשני שלבים. ראשית, הוא ימחק את הרשומה הקיימת, ולאחר מכן הרשומה המעודכנת החדשה מתווספת, בדומה לפקודה INSERT רגילה. לפיכך, אנו יכולים לומר שהמשפט REPLACE מבצע שתי פונקציות סטנדרטיות, לִמְחוֹק ו לְהַכנִיס .
תחביר
להלן התחביר של החלף הצהרה ב MySQL :
REPLACE [INTO] table_name(column_list) VALUES(value_list);
MySQL REPLACE דוגמה
הבה נבין את פעולת ההצהרה REPLACE ב-MySQL בעזרת דוגמה. ראשית, אנו הולכים ליצור טבלה בשם 'אדם' באמצעות ההצהרה הבאה:
חוקי שקילות
CREATE TABLE Person ( ID int AUTO_INCREMENT PRIMARY KEY, Name varchar(45) DEFAULT NULL, Email varchar(45) DEFAULT NULL UNIQUE, City varchar(25) DEFAULT NULL );
לאחר מכן, עלינו למלא את הרשומה בטבלה באמצעות ה- לְהַכנִיס הצהרה כדלקמן:
INSERT INTO Person(ID, Name, Email, City) VALUES (1,'Mike', '[email protected]', 'California'), (2, 'Alexandar', '[email protected]', 'New York'), (3, 'Adam', '[email protected]', 'Los Angeles'), (4, 'Peter', '[email protected]', 'Alaska');
בצע את בחר הצהרה כדי לאמת את הרשומות שניתן להציג בפלט הבא:
לאחר אימות הנתונים לטבלה, נוכל להחליף כל שורה ישנה בשורה החדשה באמצעות הצהרת REPLACE. בצע את ההצהרה שלהלן שמעדכנת את עיר של אדם שתעודת הזהות שלו היא 4 .
REPLACE INTO Person (id, city) VALUES(4,'Amsterdam');
לאחר ביצוע מוצלח של ההצהרה שלעיל, נדרש שאילתה שוב בנתוני הטבלה Person כדי לאמת את ההחלפה.
הערך ב- שֵׁם ו אימייל עמודות הן ריק עַכשָׁיו. הסיבה לכך היא שהמשפט REPLACE פועל באופן הבא:
- הצהרה זו מנסה תחילה להוסיף שורה חדשה לטבלת האדם. אבל הכנסת שורה חדשה נכשלה מכיוון שה-id = 4 כבר קיים בטבלה.
- אז ההצהרה הזו תחילה מחק את השורה שה-id שלה = 4 ולאחר מכן הכנס שורה חדשה עם אותו id ועיר כמו אמסטרדם. מכיוון שלא ציינו את הערך עבור עמודת השם והמייל, הוא הוגדר ל-NULL.
הצהרת MySQL REPLACE לעדכון שורה
אנו יכולים להשתמש במשפט REPLACE הבא כדי לעדכן נתוני שורה לטבלה:
REPLACE INTO table SET column1 = value1, column2 = value2;
התחביר לעיל דומה ל- הצהרת עדכון מלבד מילת המפתח REPLACE. יש לציין שאיננו יכולים להשתמש בסעיף WHERE עם הצהרה זו.
בצע את הדוגמה הבאה המשתמשת במשפט REPLACE כדי לעדכן את העיר של האדם ששמו מִיקרוֹפוֹן מ קליפורניה ל ברמינגהאם .
REPLACE INTO Person SET ID = 1, Name = 'Mike', City = 'Birmingham';
לאחר אימות הטבלה, אנו יכולים לראות את הפלט הבא:
mysql עזב להצטרף
אם לא ציינו את ערך העמודה ב- סעיף SET , פקודה זו פועלת כמו ה- הצהרת עדכון , מה שאומר שהמשפט REPLACE ישתמש בערך ברירת המחדל של העמודה הזו.
MySQL REPLACE כדי להוסיף נתונים מהמשפט SELECT.
אנו יכולים להשתמש במשפט REPLACE INTO הבא כדי להוסיף נתונים לטבלה עם החזרת הנתונים משאילתה.
REPLACE INTO table1(column_list) SELECT column_list FROM table2 WHERE condition;
יש לציין שהשאילתה REPLACE לעיל דומה ל- INSERT INTO SELECT הַצהָרָה. בצע את הדוגמה הבאה המשתמשת במשפט REPLACE INTO כדי להעתיק שורה בתוך אותה טבלה.
REPLACE INTO Person(Name, City) SELECT Name, City FROM Person WHERE id = 2;
לאחר אימות הטבלה, נקבל את הפלט הבא. בפלט זה, אנו יכולים לראות שהעותק של שורה בתוך אותה טבלה נוסף בהצלחה.