الفرق بين المراجعتين لصفحة: «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 |
---|---|---|---|---|
نعم | نعم | نعم | نعم | نعم |