الأعمدة المحسوبة وأسبقية التعبيرات
الحساب والربط النصي وأسبقية العوامل داخل قوائم SELECT
الأعمدة المحسوبة وأسبقية التعبيرات درس مجاني في SQL Interview Prep على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Interview Prep، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Interview Prep 4 دروس في المجموع.
الأعمدة المحسوبة في SELECT
العمود المحسوب هو تعبير في SELECT يشتق قيمة بدلًا من قراءتها مباشرةً، مثل price * quantity. احرص دائمًا على منحه اسمًا مستعارًا واضحًا.
SELECT product,
price,
quantity,
price * quantity AS line_total
FROM order_items;العوامل الحسابية
توفّر SQL عوامل الرياضيات المتوقعة: +, -, *, /، بالإضافة إلى معامل باقي القسمة. يعتمد نوع النتيجة على المعاملات، وهنا تكمن المشكلة التالية.
SELECT 7 + 3 AS sum_val,
7 - 3 AS diff_val,
7 * 3 AS prod_val,
7 % 3 AS remainder;مشكلة القسمة الصحيحة
انتبه: تؤدي قسمة عددين صحيحين إلى قسمة صحيحة، ولذلك تعطي 5 / 2 القيمة 2 لا 2.5. أصلح ذلك بتحويل أحد الطرفين إلى decimal أو بالضرب في 1.0.
SELECT 5 / 2 AS int_div, -- 2
5 * 1.0 / 2 AS real_div, -- 2.5
CAST(5 AS DECIMAL) / 2 AS cast_div; -- 2.5أسبقية العوامل
تتبع SQL أسبقية العمليات الحسابية المعتادة: يُنفَّذ * و/ قبل + و-. لذلك تكون نتيجة 2 + 3 * 4 هي 14 لا 20. وتتجاوز الأقواس كل قواعد الأسبقية.
SELECT 2 + 3 * 4 AS no_parens, -- 14
(2 + 3) * 4 AS with_parens; -- 20الأسبقية في استعلام خصم حقيقي
تحب أخطاء الأسبقية الظهور في منطق الأعمال. عند حساب السعر بعد الخصم، يكون price - price * rate صحيحًا لأن * يُنفَّذ أولًا. تحقّق دائمًا من التجميع الذي يستخدمه المحرك فعليًا.
SELECT price,
discount_rate,
price - price * discount_rate / 100 AS net_price
FROM products;ضم السلاسل النصية
يعتمد ضم النصوص على قاعدة البيانات: || في Postgres وSQL القياسية، و+ في SQL Server، وCONCAT() في MySQL. وتُعد CONCAT() الخيار الآمن والقابل للنقل.
-- Postgres / standard
SELECT first_name || ' ' || last_name AS full_name
FROM employees;
-- Portable
SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM employees;القيمة NULL تفسد العمليات الحسابية
هذه نقطة مهمة: أي عملية حسابية تتضمن NULL تعطي NULL. لذلك تكون base_salary + bonus مساوية لـ NULL لأي شخص لا يملك مكافأة. غلّف الأعمدة المعرضة لهذه المشكلة باستخدام COALESCE لتوفير قيمة افتراضية.
SELECT base_salary,
bonus,
base_salary + bonus AS unsafe_total,
base_salary + COALESCE(bonus,0) AS safe_total
FROM employees;الضم وNULL حسب اللهجة
تؤثر NULL في النصوص أيضًا، وتختلف اللهجات في ذلك: تجعل Postgres السلسلة بأكملها تختفي، بينما تتعامل CONCAT في SQL Server مع NULL باعتبارها سلسلة فارغة. غلّف كل جزء باستخدام COALESCE للحصول على مخرجات يمكن التنبؤ بها.
SELECT COALESCE(first_name,'') || ' ' || COALESCE(last_name,'') AS full_name
FROM employees;الدوال داخل التعبيرات
يمكن للأعمدة المحسوبة أن تتضمن بسهولة دوال مثل ROUND وABS وUPPER. واستدعاء الدالة ليس سوى تعبير آخر، لذلك يمكنك تضمينه مباشرةً داخل العمليات الحسابية.
SELECT product,
ROUND(price * quantity * 1.0, 2) AS line_total,
UPPER(product) AS product_caps
FROM order_items;تحويل الأنواع وCAST
عندما تختلف أنواع المعاملات، تنفّذ SQL تحويلًا ضمنيًا للأنواع قد يفاجئك. كن صريحًا باستخدام CAST(expr AS type)؛ فالمحاورون يرون في ذلك دليلًا على كتابة حذرة ووقائية.
SELECT 'Order #' || CAST(order_id AS VARCHAR) AS label
FROM orders;التعبيرات المنطقية كأعمدة
تُعد مقارنة مثل price > 100 تعبيرًا بحد ذاتها. يستطيع Postgres تحديدها في SELECT على شكل true/false، لكن الحل القابل للنقل يغلّفها داخل CASE لإخراج 1/0 أو تسمية.
-- Portable
SELECT product,
CASE WHEN price > 100 THEN 1 ELSE 0 END AS is_pricey
FROM products;اختبار سريع
قيّم التعبير.
مراجعة
مراجعة: أنشئ أسماءً مستعارة لأعمدتك المحسوبة. استخدم التحويل للحصول على قسمة عشرية، وانتبه إلى الأسبقية، واستخدم CONCAT() للنصوص القابلة للنقل، وتذكّر أن NULL تفسد العمليات الحسابية، لذا احمها باستخدام COALESCE.
الأسئلة الشائعة
هل درس «الأعمدة المحسوبة وأسبقية التعبيرات» مجاني؟
نعم — نص درس «الأعمدة المحسوبة وأسبقية التعبيرات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Interview Prep، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Interview Prep 4 دروس في المجموع.
ماذا ستتعلم في «الأعمدة المحسوبة وأسبقية التعبيرات»؟
الحساب والربط النصي وأسبقية العوامل داخل قوائم SELECT تتمرن على SQL Interview Prep مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ SQL Interview Prep؟
لا تُشترط خبرة سابقة. SQL Interview Prep على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «الأعمدة المحسوبة وأسبقية التعبيرات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس SQL Interview Prep هذا؟
نعم. كل درس في SQL Interview Prep يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- إسقاط الأعمدة ومشكلات التسمية المستعارة
- الأعمدة المحسوبة وأسبقية التعبيرات
- DISTINCT مقابل GROUP BY للتفرّد
- تعبيرات CASE في SELECT