الدرس 4 - سلسلة شرح لغة T-SQL- الدوال المدمجة -الجزء الأول

    تعلم mysql,قواعد البيانات,تعلم mysql بالأمثلة وبسهولة,تعليم,sql تعلم,اوراكل,تعليم sql,شرح حول foreign key constraint في mysql,تعلم asp.net,تعليم sql server,تعلم برمجة sql,تعلم البرمجة,تعلم_البرمجة,تعليم sql server 2014,تعليم البرمجة,دورة تعلم sql server,تعليم لغة sql server

    يحتوي MS SQL Server على العديد من الوظائف المضمنة لإجراء معالجة على النصوص أو بيانات رقمية. فيما يلي قائمة بجميع وظائف SQL المضمنة المفيدة -
    ·        دالة  COUNT - يتم استخدام الدالة التجميعية لـ  COUNT لحساب عدد الصفوف في جدول قاعدة البيانات.
    تعتبر دالة SQL COUNT هي أبسط وظيفة ومفيدة للغاية في حساب عدد السجلات ، التي يُتوقع إرجاعها بواسطة عبارة SELECT.
    لفهم وظيفة COUNT ، خذ بعين الاعتبار جدول employee_tbl ، الذي يحتوي على السجلات التالية -
     SELECT * FROM employee_tbl
    +------+------+------------+--------------------+
    | id   | name | work_date  | daily_typing_pages |
    +------+------+------------+--------------------+
    |    1 | John | 2007-01-24 |                250 |
    |    2 | Ram  | 2007-05-27 |                220 |
    |    3 | Jack | 2007-05-06 |                170 |
    |    3 | Jack | 2007-04-06 |                100 |
    |    4 | Jill | 2007-04-06 |                220 |
    |    5 | Zara | 2007-06-06 |                300 |
    |    5 | Zara | 2007-02-06 |                350 |
    +------+------+------------+--------------------+
    لنفترض الآن استنادًا إلى الجدول أعلاه أنك تريد حساب العدد الإجمالي للصفوف في هذا الجدول ، ثم يمكنك القيام بذلك على النحو التالي -
    SELECT COUNT(*) FROM employee_tbl
    +----------+
    | COUNT(*) |
    +----------+
    |        7 |
    +----------+
    وبالمثل ، إذا كنت تريد حساب عدد سجلات Zara ، فيمكن القيام بذلك على النحو التالي -
    SELECT COUNT(*) FROM employee_tbl WHERE name="Zara"
    +----------+
    | COUNT(*) |
    +----------+
    |        2 |
    +----------+
    ملاحظة - جميع استعلامات SQL غير حساسة لحالة الأحرف ، لذلك لا تحدث أي فرق إذا أعطيت ZARA أو Zara في المكان الذي يوجد فيه.
    ·         MAX Function - تسمح وظيفة  MAX التجميعية بتحديد أعلى قيمة (الحد الأقصى) لعمود معين.
    يتم استخدام دالة MAX اعلى قيمة فى حقل بين مجموعة سجلات.
    لفهم وظيفة MAX ، فى جدول employee_tbl ، والذي يحتوي على السجلات التالية -
     SELECT * FROM employee_tbl
    +------+------+------------+--------------------+
    | id   | name | work_date  | daily_typing_pages |
    +------+------+------------+--------------------+
    |    1 | John | 2007-01-24 |                250 |
    |    2 | Ram  | 2007-05-27 |                220 |
    |    3 | Jack | 2007-05-06 |                170 |
    |    3 | Jack | 2007-04-06 |                100 |
    |    4 | Jill | 2007-04-06 |                220 |
    |    5 | Zara | 2007-06-06 |                300 |
    |    5 | Zara | 2007-02-06 |                350 |
    +------+------+------------+--------------------+
    لنفترض الآن استنادًا إلى الجدول أعلاه أنك تريد جلب اعلى قيمة لـ daily_typing_pages ، ثم يمكنك القيام بذلك ببساطة باستخدام الأمر التالي -
     SELECT MAX(daily_typing_pages)FROM employee_tbl
    +-------------------------+
    | MAX(daily_typing_pages) |
    +-------------------------+
    |                     350 |
    +-------------------------+
    يمكنك العثور على جميع السجلات ذات القيمة القصوى لكل اسم باستخدام جملة GROUP BY كما يلي -
    SELECT id, name, MAX(daily_typing_pages) FROM   employee_tbl GROUP BY name
    +------+------+-------------------------+
    | id   | name | MAX(daily_typing_pages) |
    +------+------+-------------------------+
    |    3 | Jack |                     170 |
    |    4 | Jill |                     220 |
    |    1 | John |                     250 |
    |    2 | Ram  |                     220 |
    |    5 | Zara |                     350 |
    +------+------+-------------------------+
    يمكنك استخدام الدالة MIN مع وظيفة MAX لمعرفة الحد الأدنى للقيمة أيضًا. جرب المثال التالي -
     SELECT MIN(daily_typing_pages) least, MAX(daily_typing_pages) max FROM employee_tbl
    +-------+------+
    | least | max  |
    +-------+------+
    |   100 |  350 |
    +-------+------+
    ·        دالة  MIN - تتيح الوظيفة التجميعية لـ  MIN تحديد الحد الأدنى (الأدنى) لعمود معين.
    يتم استخدام دالة MIN لاكتشاف السجل بأقل قيمة بين مجموعة السجلات.
    لفهم دالة MIN ، ضع في اعتبارك جدول employee_tbl ، والذي يحتوي على السجلات التالية -
     SELECT * FROM employee_tbl
    +------+------+------------+--------------------+
    | id   | name | work_date  | daily_typing_pages |
    +------+------+------------+--------------------+
    |    1 | John | 2007-01-24 |                250 |
    |    2 | Ram  | 2007-05-27 |                220 |
    |    3 | Jack | 2007-05-06 |                170 |
    |    3 | Jack | 2007-04-06 |                100 |
    |    4 | Jill | 2007-04-06 |                220 |
    |    5 | Zara | 2007-06-06 |                300 |
    |    5 | Zara | 2007-02-06 |                350 |
    +------+------+------------+--------------------+
    لنفترض الآن استنادًا إلى الجدول أعلاه أنك تريد جلب الحد الأدنى لقيمة daily_typing_pages ، ثم يمكنك القيام بذلك ببساطة باستخدام الأمر التالي -
     SELECT MIN(daily_typing_pages) FROM employee_tbl
    +-------------------------+
    | MIN(daily_typing_pages) |
    +-------------------------+
    |                     100 |
    +-------------------------+
    يمكنك العثور على جميع السجلات بأقل قيمة لكل اسم باستخدام جملة GROUP BY كما يلي -
     SELECT id, name, work_date, MIN(daily_typing_pages) FROM employee_tbl GROUP BY name
    +------+------+-------------------------+
    | id   | name | MIN(daily_typing_pages) |
    +------+------+-------------------------+
    |    3 | Jack |                     100 |
    |    4 | Jill |                     220 |
    |    1 | John |                     250 |
    |    2 | Ram  |                     220 |
    |    5 | Zara |                     300 |
    +------+------+-------------------------+
    يمكنك استخدام الدالة MIN مع وظيفة MAX لمعرفة الحد الأدنى للقيمة أيضًا. جرب المثال التالي -
     SELECT MIN(daily_typing_pages) least,
       -> MAX(daily_typing_pages) max
       -> FROM employee_tbl
    +-------+------+
    | least | max  |
    +-------+------+
    |   100 |  350 |
    +-------+------+
    ·        دالة  AVG - تحدد الدالة التجميعية لـ  AVG متوسط ​​قيمة عمود جدول معين.
    يتم استخدام دالة AVG لمعرفة متوسط ​​الحقل في السجلات المختلفة.
    لفهم وظيفة AVG ، فى جدول employee_tbl ، والذي يحتوي على السجلات التالية -
     SELECT * FROM employee_tbl
    +------+------+------------+--------------------+
    | id   | name | work_date  | daily_typing_pages |
    +------+------+------------+--------------------+
    |    1 | John | 2007-01-24 |                250 |
    |    2 | Ram  | 2007-05-27 |                220 |
    |    3 | Jack | 2007-05-06 |                170 |
    |    3 | Jack | 2007-04-06 |                100 |
    |    4 | Jill | 2007-04-06 |                220 |
    |    5 | Zara | 2007-06-06 |                300 |
    |    5 | Zara | 2007-02-06 |                350 |
    +------+------+------------+--------------------+
    لنفترض الآن استنادًا إلى الجدول أعلاه أنك تريد حساب متوسط ​​جميع dialy_typing_pages ، ثم يمكنك القيام بذلك باستخدام الأمر التالي -
     SELECT AVG(daily_typing_pages) FROM employee_tbl
    +-------------------------+
    | AVG(daily_typing_pages) |
    +-------------------------+
    |                230.0000 |
    +-------------------------+
    يمكنك أن تأخذ متوسط ​​مجموعة السجلات المختلفة باستخدام جملة GROUP BY . سيأخذ المثال التالي كل السجلات المتعلقة بشخص واحد في المتوسط ​​، وسيكون لديك كل الصفحات متوسطة في المتوسط.
     SELECT name, AVG(daily_typing_pages) FROM employee_tbl GROUP BY name
    +------+-------------------------+
    | name | AVG(daily_typing_pages) |
    +------+-------------------------+
    | Jack |                135.0000 |
    | Jill |                220.0000 |
    | John |                250.0000 |
    | Ram  |                220.0000 |
    | Zara |                325.0000 |
    +------+-------------------------+
    ·        دالة  SUM - تتيح الوظيفة التجميعية لـ SUM لـ  تحديد الإجمالي لعمود رقمي.
    يتم استخدام دالة SQL SUM لمعرفة مجموع الحقل في السجلات المختلفة.
    لفهم وظيفة SUM ، فى جدول employee_tbl ، الذي يحتوي على السجلات التالية -
     SELECT * FROM employee_tbl
    +------+------+------------+--------------------+
    | id   | name | work_date  | daily_typing_pages |
    +------+------+------------+--------------------+
    |    1 | John | 2007-01-24 |                250 |
    |    2 | Ram  | 2007-05-27 |                220 |
    |    3 | Jack | 2007-05-06 |                170 |
    |    3 | Jack | 2007-04-06 |                100 |
    |    4 | Jill | 2007-04-06 |                220 |
    |    5 | Zara | 2007-06-06 |                300 |
    |    5 | Zara | 2007-02-06 |                350 |
    +------+------+------------+--------------------+
    لنفترض الآن استنادًا إلى الجدول أعلاه أنك تريد حساب إجمالي جميع dialy_typing_pages ، ثم يمكنك القيام بذلك باستخدام الأمر التالي -
     SELECT SUM(daily_typing_pages) FROM employee_tbl
    +-------------------------+
    | SUM(daily_typing_pages) |
    +-------------------------+
    |                    1610 |
    +-------------------------+
    يمكنك جمع مجموع السجلات المختلفة باستخدام جملة GROUP BY . المثال التالي سوف يلخص كل السجلات المتعلقة بشخص واحد وسيكون لديك كل الصفحات المكتوبة بواسطة كل شخص.
     SELECT name, SUM(daily_typing_pages) FROM employee_tbl GROUP BY name
    +------+-------------------------+
    | name | SUM(daily_typing_pages) |
    +------+-------------------------+
    | Jack |                     270 |
    | Jill |                     220 |
    | John |                     250 |
    | Ram  |                     220 |
    | Zara |                     650 |
    +------+-------------------------+

    ·         SQRT Function - يستخدم هذا لإنشاء الجذر التربيعي لعدد معين.
    يتم استخدام دالة SQRT لمعرفة الجذر التربيعي لأي رقم. يمكنك استخدام عبارة SELECT لمعرفة الجذر التربيعي لأي رقم كما يلي -
      select SQRT(16)
    +----------+
    | SQRT(16) |
    +----------+
    | 4.000000 |
    +----------+

    تشاهد قيمة التعويم هنا لأن SQL داخليًا سيتعامل مع الجذر التربيعي في نوع بيانات التعويم.
    يمكنك استخدام دالة SQRT لاكتشاف الجذر التربيعي للسجلات المختلفة أيضًا. لفهم وظيفة SQRT بمزيد من التفاصيل ، فى جدول الموظفينemployee_tbl  ، جدول يحتوي على السجلات التالية -
     SELECT * FROM employee_tbl
    +------+------+------------+--------------------+
    | id   | name | work_date  | daily_typing_pages |
    +------+------+------------+--------------------+
    |    1 | John | 2007-01-24 |                250 |
    |    2 | Ram  | 2007-05-27 |                220 |
    |    3 | Jack | 2007-05-06 |                170 |
    |    3 | Jack | 2007-04-06 |                100 |
    |    4 | Jill | 2007-04-06 |                220 |
    |    5 | Zara | 2007-06-06 |                300 |
    |    5 | Zara | 2007-02-06 |                350 |
    +------+------+------------+--------------------+
    لنفترض الآن استنادًا إلى الجدول أعلاه أنك تريد حساب الجذر التربيعي لجميع dialy_typing_pages ، ثم يمكنك القيام بذلك باستخدام الأمر التالي -
     SELECT name, SQRT(daily_typing_pages) FROM employee_tbl
    +------+--------------------------+
    | name | SQRT(daily_typing_pages) |
    +------+--------------------------+
    | John |                15.811388 |
    | Ram  |                14.832397 |
    | Jack |                13.038405 |
    | Jack |                10.000000 |
    | Jill |                14.832397 |
    | Zara |                17.320508 |
    | Zara |                18.708287 |
    +------+--------------------------+

    ·         RAND Function - يستخدم هذا لإنشاء رقم عشوائي باستخدام أمر SQL.
    دالة  RAND التي يمكن استدعاء لإنتاج أرقام عشوائية بين 0 و 1 -
      SELECT RAND( ), RAND( ), RAND( )
    +------------------+-----------------+------------------+
    | RAND( )          | RAND( )         | RAND( )          |
    +------------------+-----------------+------------------+
    | 0.45464584925645 | 0.1824410643265 | 0.54826780459682 |
    +------------------+-----------------+------------------+
    عند الاحتجاج باستخدام وسيطة عدد صحيح ، يستخدم RAND () تلك القيمة لتوليد مولد الأرقام العشوائية. في كل مرة تقوم فيها بذر المولد بقيمة معينة ، ستنتج RAND () سلسلة من الأرقام قابلة للتكرار -
      SELECT RAND(1), RAND( ), RAND( )
    +------------------+------------------+------------------+
    | RAND(1 )         | RAND( )          | RAND( )          |
    +------------------+------------------+------------------+
    | 0.18109050223705 | 0.75023211143001 | 0.20788908117254 |
    +------------------+------------------+------------------+
    يمكنك استخدام ORDER BY RAND () لعشوائية مجموعة من الصفوف أو القيم كما يلي -
    لفهم وظيفة ORDER BY RAND () ، خذ بعين الاعتبار جدول employee_tbl ، والذي يحتوي على السجلات التالية -
     SELECT * FROM employee_tbl
    +------+------+------------+--------------------+
    | id   | name | work_date  | daily_typing_pages |
    +------+------+------------+--------------------+
    |    1 | John | 2007-01-24 |                250 |
    |    2 | Ram  | 2007-05-27 |                220 |
    |    3 | Jack | 2007-05-06 |                170 |
    |    3 | Jack | 2007-04-06 |                100 |
    |    4 | Jill | 2007-04-06 |                220 |
    |    5 | Zara | 2007-06-06 |                300 |
    |    5 | Zara | 2007-02-06 |                350 |
    +------+------+------------+--------------------+
    الآن ، استخدم الأوامر التالية -
     SELECT * FROM employee_tbl ORDER BY RAND()
    +------+------+------------+--------------------+
    | id   | name | work_date  | daily_typing_pages |
    +------+------+------------+--------------------+
    |    5 | Zara | 2007-06-06 |                300 |
    |    3 | Jack | 2007-04-06 |                100 |
    |    3 | Jack | 2007-05-06 |                170 |
    |    2 | Ram  | 2007-05-27 |                220 |
    |    4 | Jill | 2007-04-06 |                220 |
    |    5 | Zara | 2007-02-06 |                350 |
    |    1 | John | 2007-01-24 |                250 |
    +------+------+------------+--------------------+

     SELECT * FROM employee_tbl ORDER BY RAND()
    +------+------+------------+--------------------+
    | id   | name | work_date  | daily_typing_pages |
    +------+------+------------+--------------------+
    |    5 | Zara | 2007-02-06 |                350 |
    |    2 | Ram  | 2007-05-27 |                220 |
    |    3 | Jack | 2007-04-06 |                100 |
    |    1 | John | 2007-01-24 |                250 |
    |    4 | Jill | 2007-04-06 |                220 |
    |    3 | Jack | 2007-05-06 |                170 |
    |    5 | Zara | 2007-06-06 |                300 |
    +------+------+------------+--------------------+
    ·        دالة CONCAT في  - يتم استخدام هذا لسَلسَلة معلمات متعددة لمعلمة واحدة.
    يتم استخدام دالة CONCAT  لدمح نصيين لتشكيل نص واحدة. جرب المثال التالي -
     SELECT CONCAT('FIRST ', 'SECOND')
    +----------------------------+
    | CONCAT('FIRST ', 'SECOND') |
    +----------------------------+
    | FIRST SECOND               |
    +----------------------------+
    لفهم وظيفة CONCAT بمزيد من التفاصيل ، فى جدول employee_tbl ، الذي يحتوي على السجلات التالية -
     SELECT * FROM employee_tbl
    +------+------+------------+--------------------+
    | id   | name | work_date  | daily_typing_pages |
    +------+------+------------+--------------------+
    |    1 | John | 2007-01-24 |                250 |
    |    2 | Ram  | 2007-05-27 |                220 |
    |    3 | Jack | 2007-05-06 |                170 |
    |    3 | Jack | 2007-04-06 |                100 |
    |    4 | Jill | 2007-04-06 |                220 |
    |    5 | Zara | 2007-06-06 |                300 |
    |    5 | Zara | 2007-02-06 |                350 |
    +------+------+------------+--------------------+
    لنفترض الآن ، استنادًا إلى الجدول أعلاه ، أنك تريد أن تسلسل كل معرف هوية الموظف و work_date ، ثم يمكنك القيام بذلك باستخدام الأمر التالي -

     SELECT CONCAT(id, name, work_date) FROM employee_tbl
    +-----------------------------+
    | CONCAT(id, name, work_date) |
    +-----------------------------+
    | 1John2007-01-24             |
    | 2Ram2007-05-27              |
    | 3Jack2007-05-06             |
    | 3Jack2007-04-06             |
    | 4Jill2007-04-06             |
    | 5Zara2007-06-06             |
    | 5Zara2007-02-06             |
    +-----------------------------+



    Smart Blogger
    @مرسلة بواسطة
    كاتب ومحرر اخبار اعمل في موقع يونى سوفت لتكنولوجيا المعلومات .