سرفصل‌های آموزشی
آموزش SQL و MySQL
آشنایی با دستور ALTER TABLE جهت به‌روزرسانی پایگاه داده

آشنایی با دستور ALTER TABLE جهت به‌روزرسانی پایگاه داده

پس از آنکه یک جدول جدید ایجاد کردیم، ممکن است بنا بر نیازهای مختلفی که در حین توسعهٔ اپلیکیشن به وجود می‌آید مجبور به تغییر در اِسکما (ساختار) برخی جداول شویم که برای این کار می‌توان از دستور 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, ...;

همان‌طور که مشاهده می‌شود، دستورات فوق با کاما (,) از یکدیگر جدا شده‌اند.

online-support-icon