📌 فهم NOT NULL Constraint في SQL: دليل شامل للمبتدئين
اليوم سنتعلم أحد أهم القيود (Constraints) في SQL الذي يضمن دقة وسلامة بياناتك.
🔍 ما هو NOT NULL Constraint؟
NOT NULL هو قيد في SQL يضمن أن عموداً معيناً في الجدول لا يمكن أن يحتوي على قيم فارغة (NULL). عندما تحدد هذا القيد على عمود، يجب أن يحتوي كل سجل على قيمة في هذا العمود.
NULL ≠ صفر أو فارغ: من المهم أن تفهم أن NULL تعني "غير معروف" أو "غير موجود"، وليس الصفر أو السلسلة الفارغة.
🛠️ كيفية استخدام NOT NOT NULL
يمكن تطبيق NOT NULL Constraint بطريقتين رئيسيتين:
1. عند إنشاء جدول جديد:
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
phone VARCHAR(15) -- هذا العمود يمكن أن يكون NULL
);
2. عند تعديل جدول موجود:
ALTER TABLE employees
MODIFY phone VARCHAR(15) NOT NULL;
💡 أمثلة عملية على NOT NULL
مثال 1: إنشاء جدول عملاء
CREATE TABLE customers (
customer_id INT PRIMARY KEY,
customer_name VARCHAR(100) NOT NULL,
registration_date DATE NOT NULL,
-- العمود التالي يمكن أن يكون NULL
discount_rate DECIMAL(5,2)
);
مثال 2: محاولة إدراج بيانات خاطئة
-- هذه العملية ستفشل لأن customer_name لا يمكن أن يكون NULL
INSERT INTO customers (customer_id, registration_date)
VALUES (1, '2024-01-15');
⚠️ الأخطاء الشائعة وكيفية تجنبها
- نسيان NOT NULL للأعمود الأساسية: تأكد من وضع NOT NULL على جميع الأعمدة التي تعتبر ضرورية لأعمالك.
- التحويل من NULL إلى NOT NULL: عند تعديل عمود ليصبح NOT NULL، تأكد أن جميع السجلات الحالية تحتوي على قيم في هذا العمود.
- استخدام NOT NULL مع القيم الافتراضية: يمكنك الجمع بين NOT NULL والقيمة الافتراضية:
CREATE TABLE orders (
order_id INT PRIMARY KEY,
order_date DATE NOT NULL DEFAULT CURRENT_DATE,
status VARCHAR(20) NOT NULL DEFAULT 'pending'
);
🎯 فوائد استخدام NOT NULL Constraint
- ضمان سلامة البيانات: تمنع البيانات الناقصة في الأعمدة المهمة
- تحسين جودة الاستعلامات: تقلل من الحاجة إلى التعامل مع قيم NULL في الاستعلامات
- منع الأخطاء التطبيقية: تضمان أن التطبيقات لن تواجه قيماً غير متوقعة
📝 تمرين عملي
جرب بنفسك! أنشئ جدول "products" مع الأعمدة التالية:
- product_id (مفتاح أساسي)
- product_name (لا يمكن أن يكون NULL)
- price (لا يمكن أن يكون NULL)
- description (يمكن أن يكون NULL)
الحل:
CREATE TABLE products (
product_id INT PRIMARY KEY,
product_name VARCHAR(100) NOT NULL,
price DECIMAL(10,2) NOT NULL,
description TEXT
);
🚀 ماذا سنتعلم في الدرس القادم؟
في الدرس التالي، سنتعلم عن "UNIQUE Constraint" وكيفية استخدامه لمنع القيم المكررة في أعمدة الجداول. سنرى كيفية تطبيقه على عمود واحد أو مجموعة أعمدة، وكيف يختلف عن NOT NULL Constraint. استعد لتعلم تقنية جديدة لتحسين جودة بياناتك!
🎓 اختبر معلوماتك
التعليقات
شاركنا رأيك أو أسئلتك حول هذا المقال