تعديل الجدول ALTER TABLE

من موسوعة حسوب
< SQL
اذهب إلى: تصفح، ابحث
يُستخدَم هذا الأمر لتعديل تعريف الجدول المُنشأ مسبقًا عبر الأمر CREATE TABLE، وله الصيغ الآتية:
ALTER TABLE [ IF EXISTS ] name
    RENAME [ COLUMN ] col_name TO new_col_name
لإعادة تسمية عمود اسمه col_name في الجدول الذي اسمه name (إن وُجد) باسمٍ جديد new_col_name.
ALTER TABLE [ IF EXISTS ] name 
    RENAME CONSTRAINT const_name TO new_const_name
لإعادة تسمية قيد اسمه const_name في الجدول الذي اسمه name (إن وُجد) باسمٍ جديد new_const_name.
ALTER TABLE [ IF EXISTS ] name
    RENAME TO new_name
لإعادة تسمية الجدول الذي اسمه name (إن وُجد) باسمٍ جديد new_name.
ALTER TABLE [ IF EXISTS ] name
    action [, ... ]
لتنفيذ تعديل على الجدول من بين التعديلات الآتية:
التعديل المُنفّذ الشيفرة action
إضافة عمود جديد (إن لم يوجد مسبقًا) باسم column_name وبنوع بيانات data_type وإضافة قيود له ADD [ COLUMN ] [ IF NOT EXISTS ] column_name data_type [ column_constraint [ ... ] ]‎
حذف عمود باسم column_name (إن وُجد) وتستخدم الكلمة المفتاحية CASCADE في حال وجود أي اعتماد على هذا العمود من أي عنصر آخر خارج الجدول (مثل حالة المفتاح الثانوي) DROP [ COLUMN ] [ IF EXISTS ] column_name [CASCADE ]‎
تعديل نوع البيانات بالعمود column_name ليصبح بنوع data_type ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type
تعديل القيمة الافتراضية للعمود column_name لتصبح بقيمة expression ALTER [ COLUMN ] column_name SET DEFAULT expression
حذف القيمة الافتراضية الحالية للعمود column_name ALTER [ COLUMN ] column_name DROP DEFAULT
إضافة/حذف قيد ألا تكون القيمة خالية NOT NULL في العمود column_name ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL
تعديل قيمة إحدى صفات attribute_option العمود column_name لتصبح value ALTER [ COLUMN ] column_name SET ( attribute_option = value [, ... ] )‎
إعادة ضبط قيمة إحدى صفات  attribute_option العمود column_name لتصبح القيمة الافتراضية ALTER [ COLUMN ] column_name RESET ( attribute_option [, ... ] )‎
إضافة قيد على مستوى الجدول ADD table_constraint
حذف القيد constraint_name (إن وُجد) DROP CONSTRAINT [ IF EXISTS ]  constraint_name
لتعديل أيّ من قيم معاملات التخزين المتعلقة بالجدول SET ( storage_parameter = value [, ... ] )‎
لإعادة ضبط قيمة أحد معاملات التخزين المتعلقة بالجدول RESET ( storage_parameter [, ... ] )‎
لنقل ملكية الجدول إلى مالك جديد new_owner أو المستخدم الحالي CURRENT_USER OWNER TO { new_owner | CURRENT_USER }‎

أمثلة

لإضافة عمود جديد إلى جدول الطلاب students باسم address يستخدم الأمر الآتي:
ALTER TABLE students ADD COLUMN address varchar(50);
ولتعديل عدد محارفه المتاحة:
ALTER TABLE students ALTER COLUMN address TYPE varchar(100);
ولإضافة قيد ألا يكون بقيمة NULL:
ALTER TABLE students ALTER COLUMN address SET NOT NULL;
ولإزالة هذا القيد:
ALTER TABLE students ALTER COLUMN address DROP NOT NULL;
ولإضافة قيد على مستوى الجدول students بأن يكون هذا العمود مفتاحًا ثانويًا باسم st_fk يرتبط مع الجدول addresses عبر العمود address:
ALTER TABLE students ADD CONSTRAINT st_fk FOREIGN KEY (address) REFERENCES addresses (address);
ولجعل هذا العمود بقيمة فريدة بقيدٍ باسم add_uniq:
ALTER TABLE students ADD CONSTRAINT add_uniq UNIQUE (address);
ولحذفه من جديد:
ALTER TABLE students DROP COLUMN address;
ولجعل العمود studentID مفتاحًا أوليًا للجدول students:
ALTER TABLE students ADD PRIMARY KEY (studentID);
ولإعادة تسمية الجدول باسم schoolStudents:
ALTER TABLE students RENAME TO schoolStudents;

التوافقية

SQLServer SQLite Oracle PostgreSQL MySQL
نعم نعم نعم نعم نعم

مصادر