تُستخدم خاصية ALTER TABLE في لغة SQL لتعديل بنية جدول موجود. تسمح لك بإجراء تغييرات متنوعة على الجدول، مثل إضافة أو حذف أو تعديل الأعمدة، إضافة أو حذف القيود (constraints)، إعادة تسمية الجدول أو الأعمدة، وغيرها.

بنية الأمر ALTER TABLE الأساسية:

SQL
ALTER TABLE table_name
action;

حيث:

  • table_name: هو اسم الجدول الذي تريد تعديله.
  • action: هو الإجراء الذي تريد تنفيذه على الجدول.

أهم الإجراءات التي يُمكن تنفيذها باستخدام ALTER TABLE:

  1. إضافة عمود جديد:
SQL
ALTER TABLE table_name
ADD COLUMN column_name data_type [constraints];
  • column_name: اسم العمود الجديد.
  • data_type: نوع بيانات العمود (مثل INT، VARCHAR، DATE، إلخ).
  • constraints: قيود اختيارية على العمود (مثل NOT NULL، UNIQUE، DEFAULT، إلخ).

مثال: إضافة عمود "address" من نوع VARCHAR إلى جدول "Customers":

SQL
ALTER TABLE Customers
ADD COLUMN address VARCHAR(255);
  1. حذف عمود موجود:
SQL
ALTER TABLE table_name
DROP COLUMN column_name;

مثال: حذف عمود "address" من جدول "Customers":

SQL
ALTER TABLE Customers
DROP COLUMN address;

ملاحظة: قد تحتاج إلى استخدام CASCADE لحذف عمود مرتبط بجدول آخر بواسطة مفتاح خارجي (foreign key):

SQL
ALTER TABLE table_name
DROP COLUMN column_name CASCADE;
  1. تعديل نوع بيانات عمود موجود:
SQL
ALTER TABLE table_name
ALTER COLUMN column_name data_type;

مثال: تغيير نوع بيانات عمود "phone" من INT إلى VARCHAR في جدول "Customers":

SQL
ALTER TABLE Customers
ALTER COLUMN phone VARCHAR(20);

ملاحظة: قد تختلف طريقة كتابة هذا الأمر قليلًا بين أنظمة إدارة قواعد البيانات المختلفة. في بعض الأنظمة، قد تحتاج إلى استخدام SET DATA TYPE بدلًا من مجرد data_type.

  1. إضافة قيد (Constraint):
SQL
ALTER TABLE table_name
ADD CONSTRAINT constraint_name constraint_definition;
  • constraint_name: اسم القيد (اختياري).
  • constraint_definition: تعريف القيد (مثل PRIMARY KEY، FOREIGN KEY، UNIQUE، CHECK، إلخ).

أمثلة:

  • إضافة مفتاح أساسي (PRIMARY KEY) إلى عمود "id":
SQL
ALTER TABLE Customers
ADD CONSTRAINT PK_Customers PRIMARY KEY (id);
  • إضافة مفتاح خارجي (FOREIGN KEY) إلى عمود "order_id" يشير إلى جدول "Orders":
SQL
ALTER TABLE OrderDetails
ADD CONSTRAINT FK_OrderDetails_Orders FOREIGN KEY (order_id) REFERENCES Orders(id);
  1. حذف قيد (Constraint):
SQL
ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

مثال: حذف القيد "PK_Customers":

SQL
ALTER TABLE Customers
DROP CONSTRAINT PK_Customers;
  1. إعادة تسمية جدول:
SQL
ALTER TABLE table_name
RENAME TO new_table_name;

مثال: إعادة تسمية جدول "Customers" إلى "Clients":

SQL
ALTER TABLE Customers
RENAME TO Clients;
  1. إعادة تسمية عمود:
SQL
ALTER TABLE table_name
RENAME COLUMN old_column_name TO new_column_name;

مثال: إعادة تسمية عمود "phone" إلى "telephone":

SQL
ALTER TABLE Customers
RENAME COLUMN phone TO telephone;

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

  • تختلف بعض تفاصيل استخدام ALTER TABLE بين أنظمة إدارة قواعد البيانات المختلفة (MySQL، PostgreSQL، SQL Server، Oracle، إلخ). من المهم الرجوع إلى وثائق النظام الذي تستخدمه للحصول على التفاصيل الدقيقة.
  • يُمكن دمج عدة أوامر ALTER TABLE في أمر واحد باستخدام فاصلة بينها.
  • يجب توخي الحذر عند استخدام ALTER TABLE على الجداول التي تحتوي على بيانات، حيث أن بعض التغييرات قد تستغرق وقتًا طويلًا أو تتسبب في فقدان البيانات إذا لم يتم التعامل معها بشكل صحيح.

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