SQL تعيين العمود كمفتاح رئيسي
- مفهوم المفتاح الرئيسي
- تجهيز قاعدة البيانات التي سنطبق عليها
- تعيين العمود كمفتاح رئيسي عند إنشاء الجدول
- تعيين أكثر من عمود كمفتاح رئيسي عند إنشاء الجدول
- تعيين المفتاح الرئيسي بعد إنشاء الجدول
- حذف المفتاح الرئيسي
مفهوم المفتاح الرئيسي
المفتاح الرئيسي ( Primary Key ) هو العمود الذي نضعه في الجدول بهدف جعلنا قادرين على الوصول إلى كل سطر فيه بسهولة سواء للحصول على قيمه، تعديلها أو لحذف السطر كما هو من الجدول. بالإضافة إلى ذلك، فأننا نستخدمه لربط قيم الجداول ببعضها البعض.
كمثال بسيط، في الجدول التالي يمكننا الوصول لأي سطر من خلال id
السطر.
id | first_name | last_name |
---|---|---|
1 | Ahmad | Eid |
2 | Ramez | Morad |
3 | Hassan | Mortada |
4 | Saad | Alkassem |
5 | Zaher | Fahmi |
العمود الذي يتم تعيينه كمفتاح رئيسي في الجدول لا يسمح بأن يتم تخزين قيم مكررة فيه.
بمعنى آخر، جميع قيم المفتاح الرئيسي تعتبر موحدة ( UNIQUE ) حتى و إن لم نعرفها كذلك.
تعيين المفتاح الرئيسي
دائماً ما تحتاج إلى وضع عمود واحد في الجدول ليكون بمثابة المفتاح الرئيسي للوصول لكل سطر فيه و هذا الأمر تطرقنا له في دروس سابقة حيث كنا نضع عمود واحد إسمه id
كمفتاح رئيسي في أي جدول ننشئه و لكن في بعض الحالات قد تجد أنك بحاجة إلى تكوين مفتاح رئيسي في الجدول من عمودين أو أكثر و ليس من عمود واحد فقط.
تجهيز قاعدة البيانات التي سنطبق عليها
قم بتنفيذ الإستعلام التالي حتى تنشئ قاعدة بيانات جديدة إسمها harmash
.
مثال
تعيين العمود كمفتاح رئيسي عند إنشاء الجدول
إذا كنت تنوي تعيين عمود كمفتاح رئيسي في الجدول، يمكنك إضافة الخاصية PRIMARY KEY إلى تعريف العمود فقط.
عندها سيصبح العمود لا يقبل أن تخزن فيه قيم مكررة و سيجبرك على إدخال قيم بنفسك له.
الإستعلام التالي ينشئ جدول جديد إسمه users
فيه 3 أعمدة مع تعيين عمود نوعه INT كمفتاح رئيسي فيه.
المثال الأول
الإستعلام التالي ينشئ جدول جديد إسمه users
فيه 3 أعمدة مع تعيين عمود نوعه VARCHAR كمفتاح رئيسي فيه.
المثال الثاني
تعيين أكثر من عمود كمفتاح رئيسي عند إنشاء الجدول
لتعيين أكثر من عمود كمفتاح رئيسي في الجدول يجب إضافة قيد ( Constraint ) للجدول نحدد فيه كل الأعمدة التي نريدها أن تكون بمثابة مفتاح رئيسي فيه.
عند تعيين عمودين كمفتاح رئيسي، فإن كل عمود منهم يعتبر عمود عادي و لكنهما مع بعض يشكلان مفتاح واحد.
طريقة إضافة قيد لتعيين المفتاح الرئيسي
لإضافة قيد خاص بتحديد الأعمدة التي نريد تعيينها بمثابة PRIMARY KEY واحد يجب كتابتة الإستعلام كما يلي.
- مكان الكلمة
pk_table_name
نضع الإسم الذي سيتم إعطاؤه للمفتاح. - مكان الكلمة
column1
وcolumn2
نضع إسم العمود أو الأعمدة التي ستمثل المفتاح.
الإستعلام التالي ينشئ جدول جديد إسمه users
وضعنا فيه مفتاح رئيسي يتكون من عمودين كما يلي:
- العمود الأول إسمه
id
و نوعه INT لأننا نريد وضع قيم عددية فيه. - العمود الثاني إسمه
username
و نوعه VARCHAR لأننا نريد وضع قيم نصية فيه.
لتعيين هذين العمودين كمفتاح واحد قمنا بإضافة قيد نوعه PRIMARY KEY بإسم pk_users
ليكون مشابهاً لإسم الجدول فقط. و بين أقواسه وضعنا إسم العمودين اللذين نريد وضعهما كمفتاح رئيسي في الجدول.
مثال
كيفية التعامل مع الجدول users
لاحظ أن العمودين id
و username
يمكن أن يحتويا على قيم مكررة كما يلي.
id | username | first_name | last_name |
---|---|---|---|
1 | ahmad | Ahmad | Eid |
2 | ahmad | Ahmad | Rashad |
2 | hassan | Hassan | Mortada |
3 | saad | Saad | Alkassem |
سبب قدرتنا على وضع قيم مكررة في العمودين id
و username
هو أن كل عمود منهما لا يشكل مفتاح رئيسي بحد ذاته، بل قيمتهما مع بعضهما هي ما تشكل المفتاح الرئيسي في كل سطر على النحو التالي:
1ahmad
هو مفتاح السطر الأول.2ahmad
هو مفتاح السطر الثاني.2hassan
هو مفتاح السطر الثالث.3saad
هو مفتاح السطر الرابع.
إذاً في حال كان المفتاح الرئيسي يتألف من أكثر من عمود، يمكننا جعل الأعمدة تقبل أن يكون فيها قيم مكررة و لكن لا يمكننا تكرار نفس قيم الأعمدة الموجودة على نفس السطر في سطر آخر.
في الجدول السابق ممنوع تكرار نفس الـ id
و الـ username
في أكثر من سطر كم يلي.
id | username | first_name | last_name |
---|---|---|---|
1 | ahmad | Ahmad | Eid |
1 | ahmad | Ahmad | Rashad |
تعيين المفتاح الرئيسي بعد إنشاء الجدول
بدايةً، إذا كنت تنوي تعيين المفتاح الرئيسي بعد إنشاء الجدول يجب أن تتأكد أولاً أن العمود أو الأعمدة التي تنوي وضعها كمفتاح رئيسي لا تحتوي على حقول فارغة.
في حال كنت تنوي تعيين عمود واحد كمفتاح رئيسي يمكنك استخدام الأمر ALTER لتعيينه كما يلي.
في حال كنت تنوي تعيين أكثر من عمود واحد كمفتاح رئيسي يجب إضافة قيد لتعيينه كما يلي.
الإستعلام التالي يقوم بتعيين العمود id
الموجود في الجدول users
كمفتاح رئيسي.
المثال الأول
الإستعلام التالي يقوم بتعيين العمودين id
و username
الموجودين في الجدول users
كمفتاح رئيسي.
المثال الثاني
حذف المفتاح الرئيسي
لحذف المفتاح الرئيسي الذي قمت بإضافته سابقاً كقيد في الجدول يمكنك استخدام الأمر ALTER كما يلي.
- مكان الكلمة
table_name
نضع إسم الجدول الذي يحتوي على القيد. - مكان الكلمة
constraint_name
نضع إسم القيد الذي نريد حذفه.
الإستعلام التالي يقوم بحذف القيد pk_users
الذي تم وضعه سابقاً لتعيين المفتاح الرئيسي في الجدول users
.
مثال
خاص بقواعد بيانات MySQL
في حال تم تعيين العمود الرئيسي بواسطة الخاصية PRIMARY KEY فإنه يمكن إزالتها منه كما يلي.
مكان الكلمة table_name
نضع إسم الجدول و خادم قاعدة البيانات سيقوم بشكل تلقائي بإزالة الخاصية PRIMARY KEY من العمود يملكها.
في حال كان العمود الرئيسي يستعمل تعداد تلقائي - أي يستخدم الخاصية AUTO_INCREMENT - فإنه يجب إزالة هذه الخاصية منه أيضاً لأنه مسموح استعمالها فقط مع العمود الرئيسي.
الإستعلام التالي يقوم بإلغاء تعيين المفتاح الرئيسي الموضوع في الجدول users
بالإضافة إلى أنه يقوم بإلغاء خاصية التعداد التلقائي منه.