MySQL Insert Ignore Duplicate Key

Mysql Insert Ignore Duplicate Key



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

תחביר:

להלן התחביר לשאילתת INSERT IGNORE.







>>הכנס התעלמות לשם טבלה(col1, col2, col3)ערכים(value_list),(value_list),(value_list);

הכנס התעלמות באמצעות שולחן עבודה:

פתח את MySQL Workbench 8.0 שלך מהמערכת וחבר אותו למופע מסד הנתונים.





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





>>עובד לוח עבודה(מזהה int PRIMARY KEY NOT NULL, שם varchar(חמישים)NOT NULL, Age Varchar(חמישים), משכורת varchar(חמישים), ייחודי(תְעוּדַת זֶהוּת));

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



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

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

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

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

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

כעת נסה את אותה השאילתה למעלה באמצעות סעיף INSERT IGNORE והפעל אותה כפי שהוצגה.

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

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

הכנס התעלמות באמצעות מעטפת שורת הפקודה:

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

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

>>צור טבלאות. ניהול(אמצעי INT PRIMARY KIY UNIQUE NOT NULL, שם VARCHAR(ארבע חמש), עיר VARCHAR(ארבע חמש));

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

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

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

>>בחר*מתוך data.minister;

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

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

>>בחר*מתוך data.minister;

סיכום:

עשינו את כל הדוגמאות הדרושות ל- INSERT IGNORE על ערכים כפולים באמצעות MySQL Workbench ומעטפת לקוח שורת הפקודה MySQL.