سنتعلم إن شاء الله في هذا الدرس كيفية صيانة الجداول من تعديل أو حذف أو إضافة في بنية الجداول سواء ستتم هذه العمليات على الأعمدة أو الفهارس أو المفاتيح الأساسية و الغريبة, لنبدأ على بركة الله.
يتم تعديل بنية الجداول عن طريق التعليمة alter table , و تبدأ هذه التعليمة دائما بـ alter table table_name أما تتمة هذه التعليمة فتتغير بتغير الهدف منها.
# تغيير اسم جدول:
إليك الصياغة القواعدية لهذه التعليمة:
alter table table_name rename new_table_name;
فمثلا لنفرض أنك تجد الاسم employees هو اسم طويل و تريد تغييره إلى اسم مختصر قصير و لنفرض emp فيمكنك عمل ذلك كما يلي:
alter table employees rename emp;
و هناك طريقة أخرى لتغيير اسم الجدول و لكنها تستخدم مع الإصدار 3.23.27 من MySQL أو الإصدارات الأحدث و هي:
rename table table_name to new_table_name;
و بتطبيق ذلك على مثالنا نكتب:
rename table employees to emp;
و الآن أخي القارىء قم بتغيير اسم الجدول employees إلى emp و قم بتغيير اسم الجدول addresses إلى adrs
# إضافة أعمدة:
الصيغة القواعدية لإضافة عمود هي:
alter table table_name add column col_name type attributes;
فعلى سبيل المثال أنك تريد أن تضيف عمود إلى الجدول suppliers يتم فيه تخزين أرقام الجوالات الخاصة بالموردين فيتم ذلك كما يلي:
alter table suppliers add column mobile varchar(15) not null;
كما أنه يمكنك في MySQL أن تحدد موقع العمود أثناء إضافته, فإذا أرت أن تضعه في أول الأعمدة تكتب first في آخر التعليمة كما يلي:
alter table suppliers add column mobile varchar(15) not null first;
أما إذا أردت أن تضعه بعد عمود ما و ليكن مثلا sup_name يكتب after sup_name في نهاية التعليمة كما يلي:
alter table suppliers add column mobile varchar(15) not null after sup_name;
ملاحظة:
و لكن لاحظ أخي القارىء أن هذه التغييرات التي تقوم بها هي فقط للتدريب لذلك عند قيامك بتغيير قم بالتراجع عنه, أما الأسطر التي باللون البرتقالي فقم بتغييرها بشكل كامل.
# حذف عمود:
الصيغة القواعدية لعملية حذف عمود هي:
alter table table_name drop column col_name ;
فمثلا لحذف العمود mobile الذي قمنا بإضافته نكتب:
alter table suppliers drop column mobile ;
لاحظ أنه عند الحذف لا تضع نوع و سمات العمود المراد حذفه.
# تغيير خصائص عمود ما:
ربما تريد في بعض الأحيان أن تغير بعض السمات أو نوع أو اسم عمود ما, إن ذلك ممكن في MySQL و يتم ذلك عن طريق أحد الأمرين change , modify و إليك الصياغة القواعدية لهذا الأمر:
alter table table_name change old_col_name new_col_name type attributes ;
من المؤكد أنك أخي القارىء قد لاحظت الخيارات المتاحة لك خلال هذا الأمر:
1. من الممكن أن تغير فقط اسم العمود: لذلك عند استخدام هذه التعليمة ستقوم فقط بتغيير الاسم مع المحافظة على النوع و السمات.
2. من الممكن أن تغير فقط النوع أو السمات أو كلاهما: و يتم ذلك عن طريق وضع الاسم الجديد نفس الاسم القديم مع تغيير النوع أو السمات أو كلاهما, و هنا ستفضل استخدام الأمر modify الذي يستخدم كما يلي:
alter table table_name modify col_name new_type new_attributes;
فمثلا أنك تريد أن تغير في الجدول emp طول العمود name من varchar(25) إلى الطول varchar(20) فستكتب:
alter table emp modify name varchar(20);
3. من الممكن أن تغير كل من السمات و النوع و الاسم: و ذلك بكتابة اسم و نوع و سمات جديدة.
و بذلك نكون بعون الله قد تعلمنا معظم خيارات الأمر alter table
++++++++++++++++++++++++++
سنكمل في هذا الدرس إن شاء الله تعليمة Alter Table , لنبدأ على بركة الله.
# إضافة فهرس:
يمكنك إضافة فهرس إلى جدول ما باستخدام أحد الأوامر index , unique , primary key و إليك الصيغة القواعدية للأوامر الثلاث التالية:
1. index :
alter table table_name add index index_name(indexed_col);
مع الأخذ بعين الاعتبار أنه من الممكن أن يمتد الفهرس على أكثر من عمود أي كما يلي:
alter table table_name add index index_name(indexed_col_1 , indexed_col_2 , … );
2. unique :
alter table table_name add unique index_name(col_name);
3. primary key :
alter table table_name add primary key (col_name);
# حذف فهرس:
يتم حذف الفهرس باستخدام التعليمة drop كما يلي:
alter table table_name drop index index_name;
و في حال انك قمت بإنشاء فهرس و لم تضع له اسما و أردت بعد ذلك حذفه ماذا ستفعل؟
لا تقلق فإن MySQL ستقوم بإعطاء اسما افتراضيا للفهرس و هو نفس العمود الذي يتم فهرسته, و تستطيع معرفة اسم الفهرس عن طريق الأمر show index الذي يقوم بعرض الفهارس الموضوعة على جدول.
# حذف جدول:
في بعض الأحيان يكون أحد جداولك بحاجة إلى صيانة كبيرة و لا يوجد بداخله بيانات تخسرها, لذلك من الأفضل أن تقوم بحذفه من أساسه, و يمكن لك ذلك عن طريق التعليمة التالية:
drop table table_name;
# حذف قاعدة بيانات:
يتم حذف قاعدة بيانات بما تحتويه من جداول و بيانات وفق التعليمة التالية:
drop database DB_name;