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

من موسوعة حسوب
< SQL
مراجعة 09:58، 30 يناير 2018 بواسطة عبد اللطيف ايمش (نقاش | مساهمات)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث

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

مصادر