ما الفرق بين إدخال رقم ونص رقمي في ENUM؟

متقدمقراءة دقيقةآخر تحديث 2 أكتوبر 2026

SQL قواعد البيانات

الإجابة

عند استخدام تسميات رقمية داخل ENUM، قد يؤدي الخلط بين الرقم والنص الرقمي إلى تخزين قيمة غير متوقعة. إذا قدمت عددًا صحيحًا دون اقتباس، يعامله MySQL باعتباره فهرسًا داخليًا لعنصر القائمة. أما إذا قدمت نصًا بين اقتباسين يطابق تسمية موجودة، فتستخدم هذه التسمية نفسها.

في قائمة عناصرها '10' ثم '20' ثم '1'، يشير العدد 1 إلى العنصر الأول، أي النص '10'. لكن النص '1' يطابق العنصر الثالث مباشرة. هذا الاختلاف يجعل التسميات الرقمية مصدر التباس عند مراجعة الإدخالات، خصوصًا إذا تغيرت طريقة تمرير القيم من التطبيق. لذلك يفضل تجنب مثل هذا التصميم عندما لا تكون له حاجة واضحة، أو التأكد بدقة من نوع القيم المرسلة. المهم أن تفرق بين موضع العنصر واسمه، فهما مفهومان مستقلان حتى لو بدا كلاهما رقمًا.

مثال

CREATE TABLE pokemon (
  id INT,
  tier ENUM('10', '20', '1')
);
INSERT INTO pokemon VALUES (1, 1), (2, '1');
SELECT id, tier FROM pokemon ORDER BY id;

باختصار: العدد غير المقتبس يحدد فهرس العنصر، بينما النص المطابق يحدد تسمية العنصر نفسها.

هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.

اختبر فهمك

ما قيمتا tier للصف ذي id = 1 ثم الصف ذي id = 2؟

CREATE TABLE pokemon (
  id INT,
  tier ENUM('10', '20', '1')
);
INSERT INTO pokemon VALUES (1, 1), (2, '1');
SELECT id, tier FROM pokemon ORDER BY id;