الفرق بين المراجعتين لصفحة: «SQL/alter table»
لا ملخص تعديل |
ط استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}' |
||
| سطر 112: | سطر 112: | ||
* [https://sqlite.org/lang_altertable.html توثيق ALTER TABLE في محرك SQLite] | * [https://sqlite.org/lang_altertable.html توثيق ALTER TABLE في محرك SQLite] | ||
* [https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-table-transact-sql توثيق ALTER TABLE في محرك SQLServer] | * [https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-table-transact-sql توثيق ALTER TABLE في محرك SQLServer] | ||
[[تصنيف:SQL]] | [[تصنيف:SQL|{{SUBPAGENAME}}]] | ||
[[تصنيف:SQL Administration]] | [[تصنيف:SQL Administration|{{SUBPAGENAME}}]] | ||
[[تصنيف:SQL Tables]] | [[تصنيف:SQL Tables|{{SUBPAGENAME}}]] | ||
مراجعة 15:43، 28 يناير 2018
يُستخدَم هذا الأمر لتعديل تعريف الجدول المُنشأ مسبقًا عبر الأمر CREATE TABLE، وله الصيغ الآتية:
ALTER TABLE [ IF EXISTS ] name
RENAME [ COLUMN ] column_name TO new_column_name
لإعادة تسمية عمود اسمه column_name في الجدول الذي اسمه name (إن وُجد) باسمٍ جديد new_column_name.
ALTER TABLE [ IF EXISTS ] name
RENAME CONSTRAINT constraint_name TO new_constraint_name
لإعادة تسمية قيد اسمه constraint_name في الجدول الذي اسمه name (إن وُجد) باسمٍ جديد new_constraint_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 |
|---|---|---|---|---|
| نعم | نعم | نعم | نعم | نعم |