المفتاح الفريد في MySQL هو حقل واحد أو مجموعة من الحقول التي تضمن أن جميع القيم التي سيتم تخزينها في العمود ستكون فريدة. وهذا يعني أن العمود لا يمكن تخزينه القيم المكررة . على سبيل المثال، يجب أن تكون عناوين البريد الإلكتروني وأرقام التسجيل الخاصة بالطلاب في جدول 'student_info' أو أرقام الاتصال الخاصة بالموظفين في جدول 'الموظف' فريدة.
عمل الكمبيوتر
يسمح لنا MySQL باستخدام أكثر من عمود واحد مع قيود فريدة في الجدول. يمكن أن يقبل أ باطل القيمة، لكن 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 بإنشاء اسم لهذا العمود تلقائيًا. لذلك، يوصى باستخدام اسم القيد أثناء إنشاء الجدول.
شرح المعلمة
يشرح الجدول التالي المعلمات بالتفصيل.
اسم المعلمة | الأوصاف |
---|---|
اسم الطاولة | إنه اسم الجدول الذي سنقوم بإنشائه. |
العمود 1، العمود 2 | وهي أسماء الأعمدة التي تحتوي عليها الجدول. |
قيود_اسم | إنه اسم المفتاح الفريد. |
اسم_العمود (أسماء_الأعمدة) | سيكون اسم (أسماء) الأعمدة بمثابة مفتاح فريد. |
مثال مفتاح فريد
يشرح المثال التالي كيفية استخدام مفتاح فريد في 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');
انتاج |
في الإخراج أدناه، يمكننا أن نرى أن الأول إدراج الاستعلام يتم تنفيذه بشكل صحيح، ولكن العبارة الثانية تفشل وتعطي خطأ يقول: إدخال مكرر '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;
هنا، يمكننا أن نرى أن القيد الفريد قد تمت إضافته بنجاح إلى الجدول:
إسقاط المفتاح الفريد
تسمح لنا عبارة ALTER TABLE أيضًا بإسقاط المفتاح الفريد من الجدول. يتم استخدام بناء الجملة التالي لإسقاط المفتاح الفريد:
ALTER TABLE table_name DROP INDEX 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;
هنا، يمكننا أن نرى أن القيد الفريد قد تمت إضافته بنجاح إلى الجدول: