في هذا الدرس 6تصفّح المواضيع
مع تطور متطلبات البرمجيات، تحتاج الجداول القائمة إلى حقول جديدة باستمرار. يضيف الأمر ALTER TABLE table_name ADD COLUMN col_name DATA_TYPE عموداً جديداً في نهاية هيكل الجدول. كما يمكنك إضافة عدة أعمدة دفعة واحدة داخل نفس الجملة عبر الفصل بين عبارات ADD COLUMN بفاصلة.
-- Add one or more new columns to an existing table
ALTER TABLE products
ADD COLUMN brand_name VARCHAR(80),
ADD COLUMN weight_kg DECIMAL(6, 2);
تُلحق MySQL الأعمدة المضافة حديثاً بآخر الجدول افتراضياً. وعندما ترغب في تنظيم ترتيب الأعمدة منطقياً لتسهيل قراءتها، يمكنك إلحاق الكلمة المفتاحية FIRST لوضع العمود في صدارة الجدول، أو العبارة AFTER existing_col لإدراجه مباشرة بعد عمود معين.
-- Position new columns explicitly using FIRST and AFTER
ALTER TABLE products
ADD COLUMN internal_code CHAR(8) FIRST,
ADD COLUMN summary VARCHAR(255) AFTER title;
عند الحاجة إلى تعديل نوع بيانات عمود قائم أو توسيع سعته—مثل زيادة VARCHAR(150) إلى VARCHAR(250) أو ترقية INT إلى BIGINT—نستخدم الصيغة ALTER TABLE table_name MODIFY COLUMN col_name NEW_TYPE. ويمكن أيضاً دمج MODIFY COLUMN مع FIRST أو AFTER لتغيير موضع العمود.
-- Widen a VARCHAR column and upgrade numeric precision
ALTER TABLE products
MODIFY COLUMN title VARCHAR(250),
MODIFY COLUMN unit_price DECIMAL(12, 2);
في الإصدارات القديمة، كانت إعادة تسمية العمود تتطلب استخدام العبارة التقليدية CHANGE COLUMN old_name new_name FULL_TYPE مع إعادة كتابة نوع البيانات كاملاً. أما في MySQL 8 الحديثة، فيوفّر الأمر المخصص ALTER TABLE table_name RENAME COLUMN old_name TO new_name طريقة آمنة تغيّر اسم العمود فقط مع الحفاظ التام على نوعه وخصائصه تلقائياً.
-- Rename a column cleanly in MySQL 8 without retyping its type
ALTER TABLE products
RENAME COLUMN unit_price TO retail_price;
DESCRIBE products;
لحذف عمود لم يعد مستخدماً مع كافة القيم المخزنة بداخله نهائياً، نفّذ الأمر ALTER TABLE table_name DROP COLUMN col_name. وعند إجراء عدة تعديلات هيكلية على جدول واحد، احرص دائماً على تجميع عمليات الإضافة والتعديل والتسمية والحذف داخل جملة ALTER TABLE واحدة ليطبقها المحرك في تمريرة واحدة.
-- Drop obsolete columns and batch changes in one ALTER TABLE pass
ALTER TABLE products
DROP COLUMN internal_code,
DROP COLUMN weight_kg;
| معامل ALTER TABLE | يغيّر اسم العمود؟ | يغيّر نوع البيانات؟ | يتطلب كتابة النوع؟ | خوارزمية التنفيذ المعتادة في MySQL 8 |
|---|---|---|---|---|
ADD COLUMN col TYPE [FIRST|AFTER] | ينشئ عموداً جديداً | يحدد النوع الابتدائي | نعم (عمود جديد) | INSTANT فوري (في 8.0.29+) |
MODIFY COLUMN col NEW_TYPE | لا | نعم (النوع أو الموضع) | نعم | INPLACE أو COPY |
RENAME COLUMN old TO new | نعم | لا (يُحفظ تلقائياً بأمان) | لا | INSTANT / INPLACE (وصف فقط) |
CHANGE COLUMN old new NEW_TYPE | نعم | نعم | نعم (إلزامي) | INPLACE أو COPY |
DROP COLUMN col | يزيل العمود نهائياً | يحذف بيانات العمود | لا | INSTANT فوري (في 8.0.29+) |
ملخص الدرس: أتقنّا في هذا الدرس تعديل هياكل الجداول في MySQL 8 عبر ALTER TABLE، بما يشمل إضافة الأعمدة وتحديد موضعها بـ FIRST وAFTER، وتعديل الأنواع بـ MODIFY COLUMN، وإعادة التسمية الآمنة بـ RENAME COLUMN، والحذف عبر DROP COLUMN.
الخطوة التالية والدرس القادم: في الدرس القادم سندرس إعادة تسمية الجداول ذرياً، ونسخ هياكلها عبر CREATE TABLE ... LIKE، وإنشاء الجداول المؤقتة المعزولة بالجلسة.
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
أتقنّا في هذا الدرس تعديل هياكل الجداول في MySQL 8 عبر ALTER TABLE، بما يشمل إضافة الأعمدة وتحديد موضعها بـ FIRST وAFTER، وتعديل الأنواع بـ MODIFY COLUMN، وإعادة التسمية الآمنة بـ RENAME COLUMN، والحذف عبر DROP COLUMN. الخطوة التالية: في الدرس القادم سندرس إعادة تسمية الجداول ذرياً، ونسخ هياكلها عبر CREATE TABLE ... LIKE، وإنشاء الجداول المؤقتة المعزولة بالجلسة.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 Altering Tables تعديل الجداول
- تعلّم تعديل هيكل الجداول وإدارة الأعمدة في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
- للمراجعة
- 02 Adding New Table Columns إضافة أعمدة جديدة للجدول
- المفهوم الهندسي الأساسي لقسم إضافة أعمدة جديدة للجدول في قواعد بيانات MySQL 8 الحديثة.
- للمراجعة
- 03 Positioning With FIRST and AFTER تحديد موضع العمود بدقة
- الصياغة القياسية وقواعد التنفيذ العملي لقسم تحديد موضع العمود بدقة.
- للمراجعة
- 04 Modifying Column Data Types تعديل نوع بيانات العمود
- آلية التخزين وأفضل ممارسات محرك InnoDB الخاصة بقسم تعديل نوع بيانات العمود.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات2
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 INSTANT INSTANT
- InnoDB Online DDL INSTANT Algorithm
- طور تنفيذ فوري لتعديلات الجداول في MySQL 8 يطبّق إضافة أو حذف الأعمدة داخل قاموس البيانات فقط دون نسخ الصفوف.
- للمراجعة
- 02 INPLACE INPLACE
- InnoDB Online DDL INPLACE Algorithm
- طور تعديل هيكلي يعمل داخل محرك InnoDB مباشرة دون الحاجة لإنشاء نسخة جدول مؤقتة كاملة على القرص.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
افتح عميل MySQL 8 المحلي ونفّذ استعلام SQL المشروح في قسم إضافة أعمدة جديدة للجدول للتحقق من النتائج.
-
بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم تحديد موضع العمود بدقة وقارن مخرجات MySQL 8.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي4 أسئلة تنتظرك +
ما هي الكلمة المفتاحية التي تضع العمود المضاف حديثاً في أول موضع (بداية) الجدول في MySQL؟
اختر الكلمة المخصصة لوضع العمود في صدارة الجدول.
أي عبارة ضمن ALTER TABLE تعدّل نوع بيانات عمود موجود دون تغيير اسمه؟
ميّز بين عبارة تعديل النوع وعبارتي التسمية والحذف.
لماذا يُفضّل استخدام RENAME COLUMN بدلاً من CHANGE COLUMN عندما نريد تغيير اسم العمود فقط في MySQL 8؟
تذكّر ميزة الأمان في RENAME COLUMN مقارنةً بـ CHANGE COLUMN.
ما هي خوارزمية التعديل الهيكلي في MySQL 8 التي تضيف أو تحذف العمود خلال أجزاء من المللي ثانية عبر تحديث قاموس البيانات فقط؟
حدّد أسرع خوارزمية تعديل هيكلي في MySQL 8.