الفرق بين المراجعتين لصفحة: «SQL/alter table»
ط استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}' |
ط تعديل الأمثلة |
||
سطر 2: | سطر 2: | ||
يُستخدَم هذا الأمر لتعديل تعريف الجدول المُنشأ مسبقًا عبر الأمر <code>[[SQL/create table|CREATE TABLE]]</code>، وله الصيغ الآتية:<syntaxhighlight lang="sql"> | يُستخدَم هذا الأمر لتعديل تعريف الجدول المُنشأ مسبقًا عبر الأمر <code>[[SQL/create table|CREATE TABLE]]</code>، وله الصيغ الآتية:<syntaxhighlight lang="sql"> | ||
ALTER TABLE [ IF EXISTS ] name | ALTER TABLE [ IF EXISTS ] name | ||
RENAME [ COLUMN ] | RENAME [ COLUMN ] col_name TO new_col_name | ||
</syntaxhighlight>لإعادة تسمية عمود اسمه <code>column_name</code> في الجدول الذي اسمه <code>name</code> (إن وُجد) باسمٍ جديد <code>new_column_name</code>.<syntaxhighlight lang="sql"> | </syntaxhighlight>لإعادة تسمية عمود اسمه <code>column_name</code> في الجدول الذي اسمه <code>name</code> (إن وُجد) باسمٍ جديد <code>new_column_name</code>.<syntaxhighlight lang="sql"> | ||
ALTER TABLE [ IF EXISTS ] name | ALTER TABLE [ IF EXISTS ] name | ||
RENAME CONSTRAINT | RENAME CONSTRAINT const_name TO new_const_name | ||
</syntaxhighlight>لإعادة تسمية قيد اسمه <code>constraint_name</code> في الجدول الذي اسمه <code>name</code> (إن وُجد) باسمٍ جديد <code>new_constraint_name</code>.<syntaxhighlight lang="sql"> | </syntaxhighlight>لإعادة تسمية قيد اسمه <code>constraint_name</code> في الجدول الذي اسمه <code>name</code> (إن وُجد) باسمٍ جديد <code>new_constraint_name</code>.<syntaxhighlight lang="sql"> |
مراجعة 09:55، 30 يناير 2018
يُستخدَم هذا الأمر لتعديل تعريف الجدول المُنشأ مسبقًا عبر الأمر CREATE TABLE
، وله الصيغ الآتية:
ALTER TABLE [ IF EXISTS ] name
RENAME [ COLUMN ] col_name TO new_col_name
لإعادة تسمية عمود اسمه column_name
في الجدول الذي اسمه name
(إن وُجد) باسمٍ جديد new_column_name
.
ALTER TABLE [ IF EXISTS ] name
RENAME CONSTRAINT const_name TO new_const_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 |
---|---|---|---|---|
نعم | نعم | نعم | نعم | نعم |