بعض الدوال المساعدة في SQL
< SQL
الدوال الرياضية
الدالة | مهمتها |
---|---|
COUNT(*)
|
تعيد عدد السجلات الموجودة في الجدول |
MAX(col_name)
|
تعيد القيمة الأكبر في حقل col_name في سجلات الجدول |
MIN(col_name)
|
تعيد القيمة الأصغر في حقل col_name في سجلات الجدول |
AVG(col_name)
|
تعيد قيمة المتوسط الحسابي لقيم الحقل col_name في سجلات الجدول |
SUM(col_name)
|
تعيد قيمة مجموع قيم الحقل col_name في سجلات الجدول |
SQRT(m)
|
تعيد قيمة الجذر التربيعي للقيمة m (قد تكون قيمة أحد الحقول) |
RAND()
|
تعيد قيمة عشوائية مُولّدة واقعة في المجال ما بين القيمة 0 والقيمة 1 |
MOD(N,M)
|
تعيد باقي قسمة N على M |
OCT(N)
|
تعيد سلسلة من الخانات الثنائية bits تعبر عن تمثيل العدد N بالنظام الثماني Octal |
HEX(N)
|
تعيد سلسلة نصية تعبّر عن تمثيل N بالنظام الست عشري Hexadecimal |
PI()
|
تعيد قيمة النسبة PI |
POW(X,Y) | POWER(X,Y)
|
تعيد قيمة العدد X مرفوعًا للقوة Y |
ROUND(X)
|
تعيد أقرب صحيح يمكن تقريب العدد X له |
الدوال النصيّة
الدالة | مهمتها |
---|---|
CONCAT('string1','string2')
|
تعيد سلسلة نصية وحيدة ناتجة عن لربط السلسلتين 'string1' و 'string2' |
LOWER('string')
|
تعيد سلسلة نصية بعد تحويل كافة الأحرف الواردة في السلسلة 'string' إلى حالة الأحرف الصغيرة |
UPPER('string')
|
تعيد سلسلة نصية بعد تحويل كافة الأحرف الواردة في السلسلة 'string' إلى حالة الأحرف الكبيرة |
CHAR_LENGTH('string')
|
تعيد عدد أحرف السلسلة النصية 'string' |
TRIM('string')
|
تعيد السلسلة النصية 'string' بعد إزالة الفراغات على طرفيها (إن وُجدت) |
مثال
إذا كان الجدول الآتي cars موجودًا في قاعدة البيانات:
Colour | Price | Year | Company | Model | CarID |
---|---|---|---|---|---|
White | 22,500 | 2018 | KIA | Optima | 05081 |
Red | 25,995 | 2017 | KIA | Optima Hybrid | 05082 |
Red | 31,900 | 2018 | KIA | Stinger | 05083 |
Black | 31,990 | 2017 | KIA | Cadenza | 05084 |
Blue | 23,240 | 2018 | KIA | Niro | 05085 |
Grey | 14,200 | 2018 | KIA | Rio 5-Door | 05086 |
Blue | 18,200 | 2018 | KIA | Forte5 | 05087 |
Blue | 32,250 | 2017 | KIA | Soul EV | 05088 |
Red | 23,385 | 2017 | Nissan | Altima | 05089 |
White | 46,195 | 2017 | Nissan | Armada | 05090 |
Black | 33,495 | 2017 | Nissan | Maxima | 05091 |
Black | 30,715 | 2017 | Nissan | Murano | 05092 |
Grey | 31,265 | 2017 | Nissan | Pathfinder | 05093 |
White | 17,875 | 2017 | Nissan | Sentra | 05094 |
Red | 12,875 | 2017 | Nissan | Versa | 05095 |
إن تنفيذ الاستعلام الآتي:
SELECT count(*) AS Total Number, MAX(Price) AS Most Expensive, MIN(Price) AS Cheapest, ROUND(AVG(Price)) AS Average, SUM(Price) AS Total Sum
FROM cars;
سيُظهر العدد الإجمالي للسيارات الموجودة في الجدول بمسمى Total Number
وقيمة السيارة الأعلى سعرًا بمسمى Most Expensive
وقيمة السيارة الأقل سعرًا Cheapest
والمتوسط الحسابي لسعر السيارات من بعد تقريبه لأقرب عدد صحيح Average
والمجموع الإجمالي لأسعار السيارات Total Sum
، لتظهر النتائج الآتية:
Total Sum | Average | Cheapest | Most Expensive | Total Number |
---|---|---|---|---|
396,080 | 26,404 | 12,875 | 46,195 | 15 |
وعند تنفيذ الاستعلام الآتي:
SELECT CONCAT(UPPER(Model), ' - ' , Company, ' - ' , LOWER(Colour)) AS Name
FROM cars
ORDER BY RAND();
سيظهر عمود واحد يحتوي على نوع السيارة (بعد تحويله لأحرف كبيرة) متبوعًا بشركتها المنتجة ولونها (بعد تحويله لأحرف صغيرة)، وترتيب النتائج الصادرة ترتيبًا عشوائيًا، لتظهر النتائج الآتية:
Name |
---|
RIO 5-DOOR - KIA - grey |
STINGER - KIA - red |
ARMADA - Nissan - white |
SOUL EV - KIA - blue |
PATHFINDER - Nissan - grey |
MAXIMA - Nissan - black |
ALTIMA - Nissan - red |
OPTIMA HYBRID - KIA - red |
OPTIMA - KIA - white |
MURANO - Nissan - black |
CADENZA - KIA - black |
NIRO - KIA - blue |
FORTE5 - KIA - blue |
SENTRA - Nissan - white |
VERSA - Nissan - red |
توافقية الدوال مع محركات البيانات
الدالة | MySQL | PostgreSQL | Oracle | SQLite | SQL Server |
---|---|---|---|---|---|
COUNT(*)
|
نعم | نعم | نعم | نعم | نعم |
MAX(col_name)
|
نعم | نعم | نعم | نعم | نعم |
MIN(col_name)
|
نعم | نعم | نعم | نعم | نعم |
AVG(col_name)
|
نعم | نعم | نعم | نعم | نعم |
SUM(col_name)
|
نعم | نعم | نعم | نعم | نعم |
SQRT(m)
|
نعم | نعم | نعم | لا | نعم |
RAND()
|
نعم | RANDOM()
|
DBMS_RANDOM.VALUE()
|
RANDOM()
|
نعم |
MOD(N,M)
|
نعم | نعم | نعم | % | % |
OCT(N)
|
نعم | لا | لا | لا | لا |
HEX(N)
|
نعم | TO_HEX(N)
|
RAWTOHEX(N)
|
نعم | لا |
PI()
|
نعم | نعم | نعم | نعم | نعم |
POW(X,Y) | POWER(X,Y)
|
نعم | نعم | نعم | لا | نعم |
ROUND(X)
|
نعم | نعم | نعم | نعم | نعم |
CONCAT('string1','string2')
|
نعم | نعم | نعم | || | نعم |
LOWER('string')
|
نعم | نعم | نعم | نعم | نعم |
UPPER('string')
|
نعم | نعم | نعم | نعم | نعم |
CHAR_LENGTH('string')
|
نعم | نعم | LENGTH('string')
|
LENGTH('string')
|
LEN('string')
|