افزودن ستون جدید به جدول در SQL Server: راهنمای جامع ALTER TABLE ADD COLUMN
دستور ALTER TABLE ADD COLUMN
در SQL Server برای افزودن یک ستون جدید به جدول موجود استفاده میشود. این دستور به شما امکان میدهد تا ساختار جدول خود را بدون نیاز به حذف و بازسازی آن، توسعه دهید. در ادامه، نحوه افزودن انواع مختلف ستونها و نکات مربوط به آن را بررسی میکنیم.
افزودن ستون با قابلیت پذیرش مقادیر NULL
در سادهترین حالت، میتوانید یک ستون جدید را به جدول اضافه کنید که قابلیت پذیرش مقادیر NULL را داشته باشد. این روش سریعترین راه برای افزودن ستون است، زیرا SQL Server نیازی به بهروزرسانی سطرهای موجود ندارد.
ساختار کلی برای افزودن یک ستون به صورت NULLable به شرح زیر است:
ALTER TABLE table_name ADD column_name data_type NULL;
در این ساختار، table_name
نام جدول، column_name
نام ستون جدید و data_type
نوع داده آن است. کلمه کلیدی NULL
به صراحت مشخص میکند که ستون میتواند مقادیر NULL را بپذیرد.
به عنوان مثال، برای اضافه کردن ستون ‘Email’ از نوع ‘VARCHAR(100)’ به جدول ‘Employees’ که قابلیت پذیرش NULL را دارد:
ALTER TABLE Employees ADD Email VARCHAR(100) NULL;
پس از اجرای این دستور، ستون ‘Email’ با مقدار NULL برای تمام سطرهای موجود به جدول ‘Employees’ اضافه میشود.
افزودن ستون با شرط NOT NULL
زمانی که نیاز دارید یک ستون را به گونهای اضافه کنید که مقادیر NULL را نپذیرد (NOT NULL
)، باید یک مقدار پیشفرض (Default Value) برای آن فراهم کنید. این کار ضروری است زیرا SQL Server نمیتواند سطرهای موجود را بدون مقداری برای ستون جدید NOT NULL
رها کند.
ساختار افزودن یک ستون NOT NULL
همراه با مقدار پیشفرض به این صورت است:
ALTER TABLE table_name ADD column_name data_type NOT NULL DEFAULT default_value;
در این ساختار، default_value
مقداری است که برای تمام سطرهای موجود در ستون جدید قرار داده میشود.
برای مثال، اگر میخواهید ستون ‘HireDate’ از نوع ‘DATE’ را به جدول ‘Employees’ اضافه کنید که NOT NULL
باشد و مقدار پیشفرض آن تاریخ فعلی باشد، میتوانید از دستور زیر استفاده کنید:
ALTER TABLE Employees ADD HireDate DATE NOT NULL DEFAULT GETDATE();
با اجرای این دستور، ستون ‘HireDate’ اضافه شده و تاریخ استخدام برای تمام کارمندان موجود، تاریخ اجرای دستور خواهد بود.
افزودن چند ستون به صورت همزمان
SQL Server به شما اجازه میدهد تا چندین ستون را با یک دستور ALTER TABLE ADD COLUMN
اضافه کنید. این کار با جدا کردن تعریف هر ستون با کاما (,
) انجام میشود.
ساختار کلی برای افزودن چندین ستون به شرح زیر است:
ALTER TABLE table_name ADD
column1_name data_type [NULL | NOT NULL DEFAULT default_value],
column2_name data_type [NULL | NOT NULL DEFAULT default_value],
...;
هر تعریف ستون میتواند شامل NULL
، NOT NULL
، یا NOT NULL DEFAULT default_value
باشد.
به عنوان مثال، برای افزودن ستونهای ‘Address’ (از نوع NVARCHAR(255) و NULLable) و ‘PhoneNumber’ (از نوع VARCHAR(20) و NULLable) به جدول ‘Customers’:
ALTER TABLE Customers ADD
Address NVARCHAR(255) NULL,
PhoneNumber VARCHAR(20) NULL;
این روش بهینهتر از اجرای چندین دستور ALTER TABLE
مجزا برای هر ستون است، زیرا عملیات کمتری روی جدول انجام میدهد.
افزودن ستون همراه با تعریف CONSTRAINT (محدودیت) پیشفرض
علاوه بر استفاده از DEFAULT default_value
، میتوانید یک محدودیت (Constraint) پیشفرض با نام مشخص نیز تعریف کنید. این روش به شما امکان میدهد تا در آینده به راحتی محدودیت پیشفرض را مدیریت (حذف یا تغییر) کنید.
ساختار افزودن ستون با یک محدودیت پیشفرض نامگذاری شده به این صورت است:
ALTER TABLE table_name ADD column_name data_type
CONSTRAINT constraint_name DEFAULT default_expression;
constraint_name
نامی است که شما برای محدودیت انتخاب میکنید و default_expression
مقداری است که به عنوان پیشفرض قرار میگیرد.
برای مثال، اضافه کردن ستون ‘LastModifiedDate’ از نوع ‘DATETIME’ به جدول ‘Products’ با یک محدودیت پیشفرض به نام ‘DF_Products_LastModified’ که مقدار آن تاریخ و زمان فعلی باشد:
ALTER TABLE Products ADD LastModifiedDate DATETIME
CONSTRAINT DF_Products_LastModified DEFAULT GETDATE();
این روش خصوصاً در محیطهای بزرگ و پیچیده پایگاه داده مفید است، زیرا مدیریت محدودیتها را سازمانیافتهتر میکند.
نکات و بهترین روشها
- عملکرد: افزودن یک ستون NULLable به جدول با سطرهای زیاد معمولاً سریع است، زیرا SQL Server فقط فراداده (Metadata) جدول را تغییر میدهد و نیازی به بهروزرسانی فیزیکی تمام سطرها ندارد. با این حال، افزودن ستون
NOT NULL
با مقدار پیشفرض، نیازمند بهروزرسانی هر سطر موجود در جدول است تا مقدار پیشفرض را درج کند. این عملیات میتواند برای جداول بسیار بزرگ زمانبر باشد و باعث ایجاد قفل (Lock) روی جدول شود. - برنامهریزی: همیشه قبل از اجرای دستورات
ALTER TABLE
در محیط تولید، عملیات را در محیط توسعه یا تست آزمایش کنید. این کار به شما کمک میکند تا مشکلات احتمالی را شناسایی کرده و تأثیر آن بر عملکرد را ارزیابی کنید. - فضای دیسک: افزودن ستونهای جدید میتواند نیاز به فضای دیسک اضافی داشته باشد، به ویژه اگر نوع دادهها حجیم باشند یا ستون
NOT NULL
باشد و به تمام سطرها مقدار پیشفرض اضافه شود. - سازگاری با برنامههای کاربردی: مطمئن شوید که افزودن ستون جدید با برنامههای کاربردی موجود سازگار است. برنامههایی که با
SELECT *
ستونها را انتخاب میکنند، بدون مشکل کار خواهند کرد، اما برنامههایی که ستونها را به صورت صریح انتخاب میکنند یا به ترتیب ستونها وابسته هستند، ممکن است نیاز به بهروزرسانی داشته باشند.
“`