پس از آنکه یک جدول جدید ایجاد کردیم، ممکن است بنا بر نیازهای مختلفی که در حین توسعهٔ اپلیکیشن به وجود میآید مجبور به تغییر در اِسکما (ساختار) برخی جداول شویم که برای این کار میتوان از دستور ALTER TABLE
استفاد کرد به طوری که این دستور اجازهٔ انجام عملیات زیر را بر روی یک جدول میدهد:
- اضافه کردن یک ستون جدید به جدول با استفاده از کِلاز (بَند) ADD
- ایجاد تغییرات در یک ستون از جدول با استفاده از MODIFY
(به عنوان مثال، تغییر مقدار پیشفرض یک فیلد)
- حذف ستونهای جدول با استفاده از DROP
برای مثال، جهت اضافه کردن یک فیلد جدید به جدول میتوان از سینتکس زیر استفاده کرد:
ALTER TABLE table_name
ADD new_colum data_type column_constraint [AFTER existing_column];
دقت کنید که تمامی ستونهای جدیدی که به جدول اضافه میشوند به صورت پیشفرض پس از آخرین ستون جدول قرار میگیرند ولی برای تغییر محل قرارگیری ستون جدید میتوان از کِلاز اختیاری AFTER
استفاده کرد. حال با این توضیحات فرض کنید میخواهیم یک فیلد جدید به نام created_at
جهت ذخیرهٔ تاریخ و زمان ایجاد مقاله به جدولی به نام articles
اضافه کنیم که برای این کار باید از دستور ALTER TABLE
به صورت زیر استفاده کرد:
ALTER TABLE articles ADD created_at DATETIME NOT NULL DEFAULT NOW();
توجه کنید که اگر قبل از اضافه کردن فیلد created_at
این جدول دارای یکسری رکورد باشد از یکسو و همچنین از آنجایی که فیلد created_at
نمیتواند در هیچ رکوردی از جدول خالی باشد از سوی دیگر، بنابراین تاریخ و زمان فعلی سیستم را با استفاده از تابع ()NOW
به عنوان مقدار دیفالت (پیشفرض) این فیلد در نظر گرفتهایم تا مقدار این فیلد را برای رکوردهایی از جدول که قبلاً وجود داشتهاند به صورت اتوماتیک مقداردهی کند و بدین ترتیب از رخ دادن اِرور هنگام اجرای دستور فوق جلوگیری میکنیم.
جهت تغییر برخی از ویژگیهای یک ستون یا فیلد جدول مانند NOT NULL
،UNIQUE
و Data Type
میتوان از دستور ALTER TABLE
به همراه کِلازی تحت عنوان MODIFY
به صورت زیر استفاده کرد:
ALTER TABLE table_name MODIFY column_definition;
دقت داشته باشید که ویژگیهای ستونی از جدول را باید ویرایش کنیم که حاوی هیچ دیتایی نباشند چرا که اگر آن ستون در هنگام ویرایش دارای هر نوع دادهای باشد، ممکن است استفاده از دستور فوق منجر به از دست رفتن همیشگی اطلاعات شود! به عنوان مثال، فرض کنید که دیتاتایپ یک ستون VARCHAR
است و میخواهیم آن را به INT
تغییر دهیم که بر این اساس، سیستم مدیریت پایگاه داده سعی میکند تمامی دیتاهای موجود در آن ستون را از نوع VARCHAR
به INT
تغییر دهد که اگر در خِلال انجام این کار با شکست مواجه شود، ممکن است از مقدار دیفالت برای آن ستون استفاده کند و احتمالاً چنین رویکردی دقیقاً آن چیزی نباشد که انتظارش را داریم.
به عنوان مثالی از ویرایش ویژگیهای یک ستون، فرض کنید میخواهیم ویژگی NOT NULL
را به فیلد content
از جدول articles
اضافه کنیم که برای این کار میتوان از دستور زیر استفاده کرد:
ALTER TABLE articles MODIFY content TEXT NOT NULL;
و در نهایت برای حذف یک ستون از جدول میتوان از دستور ALTER TABLE
به صورت زیر استفاده کرد:
ALTER TABLE table_name DROP column_name;
به عنوان مثالی دیگر، برای حذف ستون created_at
از جدول articles
هم میتوان به صورت زیر عمل کرد:
ALTER TABLE articles DROP created_at;
که در نتیجهٔ دستور فوق، فیلد created_at
به همراه تمامی دیتاهای ذخیره شده در آن از جدول حذف خواهند شد. ذکر این نکته نیز خالی از لطف نیست که با یک دستور میتوان چندین فیلد را همزمان به جدول اضافه و یا از آن حذف کرد بدین ترتیب که میتوان چندین کِلاز DROP
و یا ADD
را در دستور ALTER TABLE
در کنار هم قرار داد به طوری که داریم:
ALTER TABLE table_name DROP column_name, DROP colum_name, ...;
همانطور که مشاهده میشود، دستورات فوق با کاما (,) از یکدیگر جدا شدهاند.