في لغة SQL، تُستخدم خاصية DEFAULT لتعيين قيمة افتراضية لعمود في جدول. هذا يعني أنه إذا لم يتم تحديد قيمة لهذا العمود عند إدخال صف جديد، فسيتم استخدام القيمة الافتراضية المحددة.

متى نستخدم خاصية DEFAULT؟

نستخدم خاصية DEFAULT في الحالات التالية:

  • عندما نريد توفير قيمة تلقائية لعمود معين، لتجنب ترك قيم فارغة (NULL) فيه.
  • عندما يكون لدينا قيمة شائعة أو متوقعة لعمود ما، ونريد تسهيل عملية إدخال البيانات.
  • عندما نريد فرض قيمة افتراضية معينة لضمان سلامة البيانات واتساقها.

كيفية استخدام خاصية DEFAULT:

يتم تعريف خاصية DEFAULT مع تعريف العمود في جملة CREATE TABLE (إنشاء جدول) أو ALTER TABLE (تعديل جدول).

1. في جملة CREATE TABLE:

SQL
CREATE TABLE table_name (
column1 datatype DEFAULT default_value,
column2 datatype,
...
);
  • table_name: اسم الجدول الذي يتم إنشاؤه.
  • column1: اسم العمود الذي سيتم تعيين قيمة افتراضية له.
  • datatype: نوع بيانات العمود (مثل INT، VARCHAR، DATE، إلخ).
  • default_value: القيمة الافتراضية التي سيتم استخدامها. يجب أن تكون القيمة من نفس نوع بيانات العمود.

أمثلة:

SQL
-- إنشاء جدول للموظفين مع قيمة افتراضية للقسم
CREATE TABLE Employees (
ID INT PRIMARY KEY,
Name VARCHAR(255),
Department VARCHAR(255) DEFAULT 'Unassigned', -- القيمة الافتراضية هي 'Unassigned'
HireDate DATE DEFAULT GETDATE() -- القيمة الافتراضية هي تاريخ اليوم
);

-- إنشاء جدول للمنتجات مع قيمة افتراضية للسعر
CREATE TABLE Products (
ProductID INT PRIMARY KEY,
ProductName VARCHAR(255),
Price DECIMAL(10, 2) DEFAULT 0.00 -- القيمة الافتراضية هي 0.00
);

2. في جملة ALTER TABLE:

SQL
ALTER TABLE table_name
ALTER COLUMN column_name SET DEFAULT default_value;
  • table_name: اسم الجدول الذي سيتم تعديله.
  • column_name: اسم العمود الذي سيتم تعيين قيمة افتراضية له.
  • default_value: القيمة الافتراضية التي سيتم استخدامها.

مثال:

SQL
-- إضافة قيمة افتراضية لعمود في جدول موجود
ALTER TABLE Employees
ALTER COLUMN Department SET DEFAULT 'Sales';

حذف قيمة افتراضية:

لحذف قيمة افتراضية موجودة، نستخدم الأمر التالي:

SQL
ALTER TABLE table_name
ALTER COLUMN column_name DROP DEFAULT;

مثال:

SQL
-- حذف القيمة الافتراضية لعمود القسم
ALTER TABLE Employees
ALTER COLUMN Department DROP DEFAULT;

ملاحظات هامة:

  • يجب أن تتوافق القيمة الافتراضية مع نوع بيانات العمود.
  • لا يمكن استخدام الدوال (Functions) كقيم افتراضية في بعض قواعد البيانات، ولكن بعضها الآخر يدعم ذلك كما رأينا في مثال GETDATE() في SQL Server.
  • عند استخدام DEFAULT مع عمود IDENTITY (زيادة تلقائية)، سيتم تجاهل القيمة الافتراضية عند إدخال صف جديد وسيتم توليد قيمة تلقائية للعمود.
  • إذا لم يتم تحديد قيمة افتراضية لعمود ما، وكانت قيمة NULL مسموحة فيه، فسيتم إدخال قيمة NULL افتراضيًا.

باختصار، خاصية DEFAULT في SQL تُعتبر أداة مهمة لضمان سلامة البيانات وتسهيل عملية إدخالها، حيث تُمكننا من تعيين قيم افتراضية للأعمدة لتجنب تركها فارغة.