سنستخدم clickhouse-local:
لنفترض أن لدينا الجدول التالي:
لنُضِف سجلًا واحدًا:
والآن نفّذ استعلامًا على جدول events:
لنفترض الآن أننا سنضيف عمودًا جديدًا باسم favoriteNumber، وسيكون من النوع Float64.
يمكننا القيام بذلك باستخدام عبارة ALTER TABLE...ADD COLUMN:
إذا نفّذنا استعلامًا على جدول events، فسيظهر الناتج التالي:
تكون القيمة الافتراضية للصف Alexey هي 7، لأن هذا العمود لم يكن موجودًا عند إضافة ذلك الصف.
بعد ذلك، لنُضِف عمودًا آخر:
إذا نفّذنا استعلامًا على جدول events، فسنرى الناتج التالي:
تعديل القيمة الافتراضية لعمود
إذا عدّلنا العمود favoriteNumber ليصبح من نوع مختلف باستخدام عبارة ALTER TABLE...MODIFY COLUMN، فتصبح الأمور أكثر إثارة للاهتمام:
إذا نفّذنا استعلامًا على events مرة أخرى، فسنرى هذا الناتج:
يحتفظ Tyler بالقيمة 7، وهي القيمة الافتراضية التي كانت محددة عند إنشاء ذلك الصف.
أما Alexey فيأخذ القيمة الافتراضية الجديدة 99 لأن العمود favoriteNumber لم يكن موجودًا عند إنشاء ذلك الصف.
إذا أردنا أن يستخدم الصف Alexey القيمة الافتراضية الحالية فورًا، فعلينا استدعاء OPTIMIZE TABLE لفرض كتابة القيم الافتراضية الحالية على القرص:
بعد إتمام ذلك، لنفترض أننا غيّرنا القيمة الافتراضية مرة أخرى:
ثم أدرِج صفًا آخر:
أخيرًا، لنُجري استعلامًا على events مرةً أخرى:
يتخذ Tanya القيمة الافتراضية الجديدة 21، بينما يحتفظ Alexey بالقيمة الافتراضية القديمة 99.
التحكم في موضع العمود داخل الجدول
عند إضافة عمود جديد، يُضاف افتراضيًا إلى نهاية الجدول.
لكن يمكننا استخدام العبارتين FIRST وAFTER للتحكم في موضع العمود.
على سبيل المثال، إذا أردنا إضافة عمود باسم favoriteColor بعد العمود name، فيمكننا فعل ذلك على النحو التالي:
لنُجرِ استعلامًا على events:
وإذا أردنا إضافة عمود favoriteDatabase وجعله الأول في القائمة، فيمكننا فعل ذلك على النحو التالي:
ولنلقِ نظرة على تعريف الجدول:
آخر تعديل في ٣ يوليو ٢٠٢٦