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

من موسوعة حسوب
< SQL
اذهب إلى التنقل اذهب إلى البحث
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

يُستخدَم هذا الأمر لتعديل تعريف الجدول المُنشأ مسبقًا عبر الأمر 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
نعم نعم نعم نعم نعم

مصادر