تُستخدم خاصية ALTER TABLE
في لغة SQL لتعديل بنية جدول موجود. تسمح لك بإجراء تغييرات متنوعة على الجدول، مثل إضافة أو حذف أو تعديل الأعمدة، إضافة أو حذف القيود (constraints)، إعادة تسمية الجدول أو الأعمدة، وغيرها.
بنية الأمر ALTER TABLE
الأساسية:
ALTER TABLE table_nameaction;
حيث:
table_name
: هو اسم الجدول الذي تريد تعديله.action
: هو الإجراء الذي تريد تنفيذه على الجدول.
أهم الإجراءات التي يُمكن تنفيذها باستخدام ALTER TABLE
:
- إضافة عمود جديد:
ALTER TABLE table_nameADD COLUMN column_name data_type [constraints];
column_name
: اسم العمود الجديد.data_type
: نوع بيانات العمود (مثل INT، VARCHAR، DATE، إلخ).constraints
: قيود اختيارية على العمود (مثل NOT NULL، UNIQUE، DEFAULT، إلخ).
مثال: إضافة عمود "address" من نوع VARCHAR إلى جدول "Customers":
ALTER TABLE CustomersADD COLUMN address VARCHAR(255);
- حذف عمود موجود:
ALTER TABLE table_nameDROP COLUMN column_name;
مثال: حذف عمود "address" من جدول "Customers":
ALTER TABLE CustomersDROP COLUMN address;
ملاحظة: قد تحتاج إلى استخدام CASCADE
لحذف عمود مرتبط بجدول آخر بواسطة مفتاح خارجي (foreign key):
ALTER TABLE table_nameDROP COLUMN column_name CASCADE;
- تعديل نوع بيانات عمود موجود:
ALTER TABLE table_nameALTER COLUMN column_name data_type;
مثال: تغيير نوع بيانات عمود "phone" من INT إلى VARCHAR في جدول "Customers":
ALTER TABLE CustomersALTER COLUMN phone VARCHAR(20);
ملاحظة: قد تختلف طريقة كتابة هذا الأمر قليلًا بين أنظمة إدارة قواعد البيانات المختلفة. في بعض الأنظمة، قد تحتاج إلى استخدام SET DATA TYPE
بدلًا من مجرد data_type
.
- إضافة قيد (Constraint):
ALTER TABLE table_nameADD CONSTRAINT constraint_name constraint_definition;
constraint_name
: اسم القيد (اختياري).constraint_definition
: تعريف القيد (مثل PRIMARY KEY، FOREIGN KEY، UNIQUE، CHECK، إلخ).
أمثلة:
- إضافة مفتاح أساسي (PRIMARY KEY) إلى عمود "id":
ALTER TABLE CustomersADD CONSTRAINT PK_Customers PRIMARY KEY (id);
- إضافة مفتاح خارجي (FOREIGN KEY) إلى عمود "order_id" يشير إلى جدول "Orders":
ALTER TABLE OrderDetailsADD CONSTRAINT FK_OrderDetails_Orders FOREIGN KEY (order_id) REFERENCES Orders(id);
- حذف قيد (Constraint):
ALTER TABLE table_nameDROP CONSTRAINT constraint_name;
مثال: حذف القيد "PK_Customers":
ALTER TABLE CustomersDROP CONSTRAINT PK_Customers;
- إعادة تسمية جدول:
ALTER TABLE table_nameRENAME TO new_table_name;
مثال: إعادة تسمية جدول "Customers" إلى "Clients":
ALTER TABLE CustomersRENAME TO Clients;
- إعادة تسمية عمود:
ALTER TABLE table_nameRENAME COLUMN old_column_name TO new_column_name;
مثال: إعادة تسمية عمود "phone" إلى "telephone":
ALTER TABLE CustomersRENAME COLUMN phone TO telephone;
ملاحظات هامة:
- تختلف بعض تفاصيل استخدام
ALTER TABLE
بين أنظمة إدارة قواعد البيانات المختلفة (MySQL، PostgreSQL، SQL Server، Oracle، إلخ). من المهم الرجوع إلى وثائق النظام الذي تستخدمه للحصول على التفاصيل الدقيقة. - يُمكن دمج عدة أوامر
ALTER TABLE
في أمر واحد باستخدام فاصلة بينها. - يجب توخي الحذر عند استخدام
ALTER TABLE
على الجداول التي تحتوي على بيانات، حيث أن بعض التغييرات قد تستغرق وقتًا طويلًا أو تتسبب في فقدان البيانات إذا لم يتم التعامل معها بشكل صحيح.
باختصار، ALTER TABLE
هي أداة قوية وضرورية لإدارة وتحديث بنية قواعد البيانات. فهم كيفية استخدامها بشكل صحيح يُمكنك من إجراء التغييرات المطلوبة بكفاءة وأمان.