מפתח ייחודי ב-MySQL הוא שדה בודד או שילוב של שדות המבטיחים שכל הערכים שיישמרו בעמודה יהיו ייחודיים. זה אומר שעמודה לא יכולה לאחסן ערכים כפולים . לדוגמה, כתובות הדואר האלקטרוני ומספרי הסטודנטים בטבלה 'מידע_סטודנטים' או מספר אנשי הקשר של העובדים בטבלה 'עובד' צריכים להיות ייחודיים.
מפת ג'אווה איטרטור
MySQL מאפשר לנו להשתמש ביותר מעמודה אחת עם אילוץ UNIQUE בטבלה. זה יכול לקבל א ריק ערך, אבל MySQL אפשר רק ערך null אחד לכל עמודה. זה מבטיח את יושרה של העמודה או קבוצת העמודות כדי לאחסן ערכים שונים בטבלה.
צרכים של מפתח ייחודי
- זה שימושי כדי למנוע משתי הרשומות לאחסן ערכים זהים בעמודה.
- הוא מאחסן רק ערכים נפרדים השומרים על שלמות ואמינות מסד הנתונים לצורך גישה למידע בצורה מאורגנת.
- זה גם עובד עם מפתח זר בשימור הייחודיות של שולחן.
- זה יכול להכיל ערך null לתוך הטבלה.
תחביר
התחביר הבא משמש ליצירת מפתח ייחודי MySQL .
אם ברצוננו ליצור רק עמודת מפתח ייחודית אחת לטבלה, השתמש בתחביר כמו להלן:
CREATE TABLE table_name( col1 datatype, col2 datatype UNIQUE, ... );
אם ברצוננו ליצור יותר מעמודת מפתח ייחודית אחת לטבלה, השתמש בתחביר כמו להלן:
CREATE TABLE table_name( col1 col_definition, col2 col_definition, ... [CONSTRAINT constraint_name] UNIQUE(column_name(s)) );
אם לא ציינו את השם לאילוץ ייחודי, MySQL יוצר שם עבור העמודה הזו באופן אוטומטי. לכן, מומלץ להשתמש בשם האילוץ בעת יצירת טבלה.
הסבר פרמטר
הטבלה הבאה מסבירה את הפרמטרים בפירוט.
שם פרמטר | תיאורים |
---|---|
שם שולחן | זה השם של הטבלה שאנחנו הולכים ליצור. |
col1, col2 | שמות העמודות הם שמכילים בטבלה. |
constraint_name | זה השם של המפתח הייחודי. |
column_name(s) | שמות העמודות הם שיהיו מפתח ייחודי. |
דוגמה למפתח ייחודי
הדוגמה הבאה מסבירה כיצד נעשה שימוש במפתח ייחודי ב-MySQL.
הצהרה זו יוצרת טבלה ' תלמיד 2 ' עם אילוץ ייחודי:
CREATE TABLE Student2 ( Stud_ID int NOT NULL UNIQUE, Name varchar(45), Email varchar(45), Age int, City varchar(25) );
לאחר מכן, בצע את שאילתות ההוספה המפורטות להלן כדי להבין כיצד זה עובד:
mysql> INSERT INTO Student2 (Stud_ID, Name, Email, Age, City) VALUES (1, 'Peter', '[email protected]', 22, 'Texas'), (2, 'Suzi', '[email protected]', 24, 'California'), (3, 'Joseph', '[email protected]', 23, 'Alaska'); mysql> INSERT INTO Student2 (Stud_ID, Name, Email, Age, City) VALUES (1, 'Stephen', '[email protected]', 22, 'Texas');
תְפוּקָה
בפלט למטה, אנו יכולים לראות שהראשון INSERT שאילתה מופעלת כהלכה, אך ההצהרה השנייה נכשלת ונותנת שגיאה האומרת: ערך כפול '1' עבור מפתח Stud_ID.
אם אתה רוצה להגדיר את המפתח הייחודי על עמודות מרובות , השתמש בשאילתה כמו להלן:
CREATE TABLE Student3 ( Stud_ID int, Roll_No int, Name varchar(45) NOT NULL, Email varchar(45), Age int, City varchar(25), CONSTRAINT uc_rollno_email Unique(Roll_No, Email) );
בפלט, אנו יכולים לראות שערך המפתח הייחודי מכיל שתי עמודות שכן רול_לא ו אימייל .
כדי לאמת זאת, בצע את ההצהרה הבאה:
mysql> SHOW INDEX FROM Student3;
כאן, אנו יכולים לראות שהאילוץ הייחודי נוסף בהצלחה לטבלה:
מפתח ייחודי DROP
המשפט ALTER TABLE מאפשר לנו גם להוריד את המפתח הייחודי מהטבלה. התחביר הבא משמש לשחרור המפתח הייחודי:
ALTER TABLE table_name DROP INDEX constraint_name;
בתחביר לעיל, ה שם שולחן הוא שם הטבלה שאנו רוצים לשנות, ו constraint_name הוא השם של המפתח הייחודי שאנו הולכים להסיר.
דוגמא
הצהרה זו תסיר את uc_rollno_email אילוץ מהטבלה לצמיתות.
mysql> ALTER TABLE Student3 DROP INDEX uc_rollno_email;
אנחנו יכולים לבצע את הצהרת SHOW INDEX עד כדי כך.
מפתח ייחודי באמצעות הצהרת ALTER TABLE
הצהרה זו מאפשרת לנו לבצע את השינוי בטבלה הקיימת. לפעמים נרצה להוסיף מפתח ייחודי לעמודה של טבלה קיימת; לאחר מכן, הצהרה זו משמשת להוספת המפתח הייחודי עבור אותה עמודה.
תחביר
להלן התחביר של משפט ALTER TABLE להוספת מפתח ייחודי:
ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE(column_list);
דוגמא
הצהרה זו יוצרת טבלה ' סטודנטים 3 ' שאין להם עמודת מפתח ייחודית בהגדרת הטבלה.
CREATE TABLE Student3 ( Stud_ID int, Roll_No int, Name varchar(45) NOT NULL, Email varchar(45), Age int, City varchar(25) );
לאחר יצירת טבלה, אם ברצוננו להוסיף מפתח ייחודי לטבלה זו, עלינו לבצע את המשפט ALTER TABLE כדלקמן:
mysql> ALTER TABLE Student3 ADD CONSTRAINT uc_rollno_email UNIQUE(Roll_No, Email);
אנו יכולים לראות את הפלט שבו שני ההצהרות בוצעו בהצלחה.
כדי לאמת זאת, בצע את ההצהרה הבאה:
mysql> SHOW INDEX FROM Student3;
כאן, אנו יכולים לראות שהאילוץ הייחודי נוסף בהצלחה לטבלה: