انتقل إلى محتوى الدرس
الدرس 35
دورة MySQL

الدوال الرقمية والرياضية والتقريب الحسابي في MySQLMySQL Numeric and Math Functions

تعلّم الدوال الرقمية والرياضية والتقريب الحسابي في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
أقسام الدرس
6
الأمثلة
5
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
7
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

تتطلب التقارير المالية وحسابات الضرائب والفواتير تقريب الأعداد العشرية إلى عدد محدد من الخانات باستخدام دالة ROUND(X, D):

  • الصيغة المختصرة ROUND(X): تقرب الرقم إلى أقرب عدد صحيح (وتكافئ ROUND(X, 0)).
  • الصيغة الدقيقة ROUND(X, D): تقرب الرقم إلى D من الخانات العشرية؛ ومع الأعداد العشرية الدقيقة DECIMAL يطبق MySQL قاعدة التقريب الحسابي القياسي من النصف للأعلى (Round Half Away From Zero).
  • المعامل السالب D < 0: تمرير عدد سالب مثل ROUND(1248, -2) يقرب الأعداد الصحيحة على يسار الفاصلة العشرية إلى أقرب مئة (1200).
مخطط يقارن بين التقريب الحسابي ROUND والقص المباشر TRUNCATE ودوال الحدود الصحيحة CEIL و FLOOR والدوال الرياضية في MySQL 8
SQL
SELECT
  product_id,
  unit_price,
  ROUND(unit_price * 1.15, 2) AS price_with_vat,
  ROUND(unit_price, 0) AS nearest_whole,
  ROUND(unit_price, -1) AS nearest_ten
FROM products;

على عكس دالة ROUND() التي تفحص الخانة التالية وتجبر الكسر للأعلى، تقوم دالة TRUNCATE(X, D) بقص الأرقام الزائدة مباشرة باتجاه الصفر دون أي تقريب حسابي:

  • إلزامية المعاملين معاً: يجب دائماً تمرير الرقم X وعدد الخانات D (فمثلاً TRUNCATE(99.999, 2) تعيد 99.99، بينما تعيد ROUND(99.999, 2) القيمة 100.00).
  • عدم الخلط مع أمر TRUNCATE TABLE: دالة TRUNCATE(X, D) هي دالة رياضية آمنة داخل الاستعلام ولا علاقة لها بأمر تفريغ الجداول.
SQL
SELECT
  ROUND(99.999, 2) AS rounded_val,
  TRUNCATE(99.999, 2) AS truncated_val,
  TRUNCATE(1589.75, 0) AS whole_only,
  TRUNCATE(1589.75, -2) AS hundreds_only;

عند حساب عدد صناديق الشحن اللازمة لطلبية، أو إجمالي صفحات الترقيم، أو عدد السنوات المكتملة، نحتاج إلى التقريب القسري باتجاه واحد نحو عدد صحيح باستخدام دالتي السقف والأرضية:

  • دالة السقف CEIL(X) (أو CEILING(X)): تعيد أصغر عدد صحيح أكبر من أو يساوي X؛ فأي كسر موجب مهما صغر يُرفع للعدد الصحيح الأعلى (CEIL(4.01) تعيد 5).
  • دالة الأرضية FLOOR(X): تعيد أكبر عدد صحيح أصغر من أو يساوي X؛ فتُهمل الكسور الموجبة نزولاً للعدد الصحيح الأدنى (FLOOR(4.99) تعيد 4).
SQL
SELECT
  total_items,
  CEIL(total_items / 12.0) AS boxes_needed,
  FLOOR(loyalty_points / 100) AS redeemable_vouchers
FROM shipments
WHERE total_items > 0;

يوفر محرك MySQL مجموعة متكاملة من الدوال الحسابية لحساب المقدار المطلق وباقي القسمة والأسس والجذور:

  • دالة القيمة المطلقة ABS(X): تزيل الإشارة السالبة وتعيد المسافة الموجبة عن الصفر (تحول -250 إلى 250)، بينما تعيد دالة SIGN(X) إشارة الرقم (-1 أو 0 أو 1).
  • دالة باقي القسمة MOD(N, M): تعيد الباقي من قسمة N على M، وتُستخدم بكثرة لاختبار الأرقام الزوجية والفردية وتوزيع السجلات على مجموعات.
  • دالتا الأس والجذر POW(X, Y) وSQRT(X): لحساب القوى الأسية والجذر التربيعي.
SQL
SELECT
  ABS(-420.50) AS abs_amount,
  SIGN(-420.50) AS num_sign,
  MOD(105, 10) AS remainder_val,
  POW(2, 10) AS kilobyte_bytes,
  SQRT(144) AS root_val;

تولد دالة RAND() عدداً عشرياً عشوائياً يقع في النطاق 0 <= v < 1.0:

  • توليد عدد صحيح عشوائي بين حدين [min, max]: نستخدم المعادلة القياسية FLOOR(min + RAND() * (max - min + 1)).
  • البذرة الثابتة القابلة للتكرار RAND(N): عند تمرير عدد صحيح كبذرة (Seed) مثل RAND(42)، ينتج المحرك نفس التسلسل العشوائي في كل مرة، وهو أمر مثالي لبيانات الاختبار القابلة لإعادة الإنتاج.
SQL
SELECT
  RAND(7) AS seeded_float,
  FLOOR(1 + RAND() * 100) AS random_1_to_100,
  FLOOR(100000 + RAND() * 900000) AS six_digit_code;

يوضح الجدول المرجعي التالي مقارنة شاملة بين الدوال الرقمية والرياضية في MySQL 8:

الدالة الرقميةالسلوك الحسابيمثال الاستدعاءالنتيجة المعادة
ROUND(X, D)التقريب الحسابي لعدد D من الخاناتROUND(19.876, 2)19.88
TRUNCATE(X, D)قص الكسر لعدد D دون أي تقريبTRUNCATE(19.876, 2)19.87
CEIL(X)التقريب للعدد الصحيح الأعلىCEIL(4.05)5
FLOOR(X)التقريب للعدد الصحيح الأدنىFLOOR(4.95)4
ABS(X) / MOD(N,M)القيمة المطلقة وباقي القسمةMOD(17, 5)2
RAND()كسر عشوائي بين 0 و 1FLOOR(1 + RAND()*6)1..6
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

أتقنت في هذا الدرس التقريب الحسابي بدالة ROUND(X, D)، وقص الكسور المباشر بدالة TRUNCATE(X, D)، والحدود الصحيحة عبر CEIL() وFLOOR()، ودوال القيمة المطلقة وباقي القسمة والأسس وتوليد الأرقام العشوائية بـ RAND().

الخطوة التالية والدرس القادم

انتقل الآن إلى الدرس السادس والثلاثين «دوال التاريخ والوقت وحساب الفروق الزمنية وتنسيقها في MySQL» لاحتراف العمليات الزمنية.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Math Functions الدوال الرياضية
تعلّم الدوال الرقمية والرياضية والتقريب الحسابي في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
للمراجعة
02 Rounding Decimals with ROUND تقريب الأعداد بدالة ROUND
المفهوم الهندسي وصياغة استعلام SQL القياسية لقسم تقريب الأعداد بدالة ROUND في MySQL 8.
للمراجعة
03 Cutting Decimals with TRUNCATE قص الكسور بدالة TRUNCATE
المفهوم الهندسي وصياغة استعلام SQL القياسية لقسم قص الكسور بدالة TRUNCATE في MySQL 8.
للمراجعة
04 Ceiling and Floor Integer Bounds التقريب للأعلى CEIL وللأسفل
المفهوم الهندسي وصياغة استعلام SQL القياسية لقسم التقريب للأعلى CEIL وللأسفل في MySQL 8.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 VAT VAT
Value Added Tax
ضريبة القيمة المضافة وتُحسب على أسعار المنتجات وتُقرب إلى خانتين عشريتين بدالة ROUND(amount, 2).
للمراجعة
02 IEEE IEEE
Institute of Electrical and Electronics Engineers (IEEE 754)
المعيار الهندسي لتمثيل الأعداد العشرية التقريبية FLOAT و DOUBLE في المعالجات.
للمراجعة
03 PRNG PRNG
Pseudo-Random Number Generator
مولد الأرقام شبه العشوائية خلف دالة RAND() وينتج تسلسلاً قابلاً للتكرار عند تزويده ببذرة رقمية.
للمراجعة
04 DDL DDL
Data Definition Language
فئة أوامر تعريف البيانات وتضم أمر TRUNCATE TABLE المختلف تماماً عن الدالة الحسابية TRUNCATE(X, D).
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. نفّذ استعلامات SQL المشروحة في قسم تقريب الأعداد بدالة ROUND داخل قاعدة بيانات MySQL 8 المحلية وتأكد من مطابقة النتائج.

  2. بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم قص الكسور بدالة TRUNCATE وقارن مخرجات الاستعلام.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 3أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

ما هي مخرجات الاستعلام SELECT ROUND(19.876, 2), TRUNCATE(19.876, 2); في MySQL؟

تقرب دالة ROUND القيمة إلى 19.88 بينما تقص TRUNCATE الأرقام بعد الخانة الثانية لتعيد 19.87.

02

في MySQL، المعامل الثاني D في الدالة الحسابية TRUNCATE(X, D) إلزامي ولا يمكن حذفه.

صواب؛ يجب دائماً تمرير الرقم وعدد الخانات العشرية في دالة TRUNCATE(X, D).

03

أي دالة رياضية في MySQL ترفع القيمة العشرية 4.05 دائماً إلى العدد الصحيح الأعلى 5؟

تعيد دالة CEIL() أصغر عدد صحيح أكبر من أو يساوي الرقم المدخل.

04

ما هي القيمة التي تعيدها الدالة FLOOR(9.99) في MySQL؟

تعيد دالة FLOOR() أكبر عدد صحيح أصغر من أو يساوي القيمة، فتكون النتيجة 9.

05

ما هي نتيجة الاستعلام SELECT ABS(-35), MOD(17, 5); في MySQL؟

تعيد ABS(-35) القيمة الموجبة 35، وباقي قسمة 17 على 5 في دالة MOD هو 2.

06

تمرير عدد صحيح ثابت كبذرة مثل RAND(42) يولد تسلسلاً عشوائياً قابلاً للتكرار بنفس القيم عند إعادة التشغيل.

صواب؛ تمرير بذرة ثابتة لدالة RAND(N) يضمن الحصول على نفس الأرقام العشوائية عند تكرار الاختبار.

07

ما النتيجة التي تعيدها الدالة ROUND(1460, -2) عندما يكون المعامل الثاني سالباً؟

يقرب المعامل السالب -2 الرقم الصحيح على يسار الفاصلة العشرية إلى أقرب مئة فتكون النتيجة 1500.

08

ما هما الدالتان الرياضيتان لحساب القوى الأسية والجذر التربيعي في MySQL؟ (اختر إجابتين)

تحسب دالة POW(X, Y) الأسس، وتحسب دالة SQRT(X) الجذر التربيعي.