در MySQL، مقادیر ذخیرهشده در جداول میتوانند دارای مقدار NULL
یا مقدار پیشفرض (DEFAULT
) باشند. این ویژگیها نقش مهمی در مدیریت دادهها، یکپارچگی اطلاعات و عملکرد پایگاه داده دارند.
در این مقاله، تفاوت مقدار NULL
و مقدار پیشفرض را بررسی کرده و نحوه استفاده از آنها را توضیح خواهیم داد.
۱. مقدار NULL
در MySQL
تعریف NULL
مقدار NULL
به معنای “عدم وجود داده” یا “نامشخص بودن مقدار” در یک ستون است. در MySQL، اگر مقداری برای یک ستون مشخص نشود و آن ستون NULL
را بپذیرد، مقدار آن بهطور پیشفرض NULL
خواهد بود.
مثال: مقدار NULL
در جدول
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) NULL
);
در این مثال:
- ستون
name
مقدارNULL
را نمیپذیرد (به دلیلNOT NULL
) و مقدار آن حتماً باید تعیین شود. - ستون
email
مقدارNULL
را میپذیرد، بنابراین میتوان سطری را بدون مقدارemail
ثبت کرد.
بررسی مقدار NULL
برای پیدا کردن سطرهایی که مقدار NULL
دارند، از IS NULL
استفاده میکنیم:
SELECT * FROM users WHERE email IS NULL;
برای پیدا کردن سطرهایی که مقدار NULL
ندارند، از IS NOT NULL
استفاده میشود:
SELECT * FROM users WHERE email IS NOT NULL;
۲. مقدار پیشفرض (DEFAULT
) در MySQL
تعریف مقدار پیشفرض (DEFAULT
)
مقدار پیشفرض مقداری است که در صورت عدم ارسال مقدار مشخصی برای یک ستون، بهطور خودکار در آن ذخیره میشود. این ویژگی باعث جلوگیری از NULL
شدن دادههای ضروری و سادهتر شدن ورود اطلاعات میشود.
مثال: مقدار پیشفرض در جدول
CREATE TABLE orders (
id INT AUTO_INCREMENT PRIMARY KEY,
status VARCHAR(20) DEFAULT 'Pending',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
در این مثال:
- ستون
status
در صورت عدم ورود مقدار، مقدار پیشفرض'Pending'
را دریافت میکند. - ستون
created_at
بهصورت پیشفرض مقدار زمان جاری (CURRENT_TIMESTAMP
) را دریافت خواهد کرد.
استفاده از مقدار پیشفرض هنگام درج داده
اگر مقدار یک ستون مقدار پیشفرض داشته باشد، میتوان بدون مشخص کردن مقدار آن، داده را وارد کرد:
INSERT INTO orders (id) VALUES (1);
در این حالت، مقدار status
بهطور خودکار 'Pending'
و مقدار created_at
برابر با زمان فعلی خواهد شد.
تغییر مقدار پیشفرض در جدول
اگر بخواهیم مقدار پیشفرض یک ستون را تغییر دهیم، از ALTER TABLE
استفاده میکنیم:
ALTER TABLE orders ALTER COLUMN status SET DEFAULT 'Processing';
و برای حذف مقدار پیشفرض:
ALTER TABLE orders ALTER COLUMN status DROP DEFAULT;
۳. تفاوت مقدار NULL
و مقدار پیشفرض (DEFAULT
)
ویژگی | NULL | مقدار پیشفرض (DEFAULT ) |
---|---|---|
مفهوم | مقدار نامشخص یا عدم وجود داده | مقدار از پیش تعیینشده که بهصورت خودکار درج میشود |
قابلیت استفاده | برای مقادیری که ممکن است تعیین نشوند | برای جلوگیری از ورود NULL و سادهسازی ورود دادهها |
نحوه مقداردهی | مقدار NULL صریحاً درج میشود یا مقداردهی صورت نمیگیرد | مقدار پیشفرض در صورت عدم ورود مقدار جایگزین میشود |
شرط بررسی | IS NULL و IS NOT NULL | مقدار بهطور مستقیم مقایسه میشود (= DEFAULT_VALUE ) |
۴. بهترین روشها برای استفاده از NULL
و مقدار پیشفرض
✅ زمان استفاده از NULL
- در مواردی که مقدار یک داده مشخص نیست یا میتواند خالی باشد.
- برای دادههایی مانند
email
که ممکن است برخی کاربران آن را ارائه نکنند.
✅ زمان استفاده از مقدار پیشفرض
- برای جلوگیری از ورود مقادیر
NULL
غیرضروری. - برای تعیین مقادیر اولیه در ستونهایی مانند
status
یاcreated_at
. - برای بهینهسازی ثبت اطلاعات و کاهش خطاهای کاربری هنگام درج دادهها.
نتیجهگیری
در MySQL، مقدار NULL
نشاندهنده نبود داده است، در حالی که مقدار پیشفرض (DEFAULT
) مقدار مشخصی است که در صورت عدم مقداردهی، بهطور خودکار ثبت میشود. استفاده صحیح از این ویژگیها، عملکرد پایگاه داده را بهبود بخشیده و مدیریت دادهها را کارآمدتر میکند.