شعار زيفيرنت

ORDER BY جملة في SQL

التاريخ:

المُقدّمة

لغة الاستعلام الهيكلية (SQL) هي العمود الفقري لأنظمة إدارة قواعد البيانات العلائقية، وتمكين المستخدمين من التفاعل مع واسترجاع المعلومات من قواعد البيانات. عند العمل مع قواعد البيانات، غالبًا ما يكون فرز البيانات بترتيب معين ضروريًا لجعلها ذات معنى أكبر وأسهل في التحليل. هذا هو المكان الذي تلعب فيه جملة ORDER BY في SQL. في هذه المدونة، سوف نتعمق في تعقيدات ORDER BY في SQL، ونستكشف تركيبها وتطبيقاتها وبعض التقنيات المتقدمة لتسخير قوتها بفعالية.

ORDER BY جملة في SQL

جدول المحتويات

فهم جملة ORDER BY في SQL

تقوم جملة ORDER BY في SQL بفرز مجموعة النتائج بناءً على عمود واحد أو أكثر. فهو يمكّنك من تحديد الترتيب الذي يجب أن يتم إرجاع الصفوف به، إما بترتيب تصاعدي (افتراضي) أو تنازلي. بشكل افتراضي، تقوم جملة ORDER BY بفرز البيانات بترتيب تصاعدي.

فرز البيانات بترتيب تصاعدي وتنازلي

يمكنك تحديد اسم العمود بعد الكلمة الأساسية ORDER BY لفرز البيانات بترتيب تصاعدي. على سبيل المثال، إذا كان لديك جدول يسمى "الموظفون" مع عمود يسمى "الاسم"، فيمكنك فرز البيانات بترتيب تصاعدي باستخدام الاستعلام التالي:

SELECT * FROM Employees ORDER BY Name;

من ناحية أخرى، إذا كنت تريد فرز البيانات بترتيب تنازلي، فيمكنك استخدام الكلمة الأساسية DESC بعد اسم العمود. على سبيل المثال:

SELECT * FROM Employees ORDER BY Name DESC;

فرز البيانات حسب أعمدة متعددة

قم بفرز البيانات حسب أعمدة متعددة عن طريق تحديد أسماء أعمدة متعددة مفصولة بفواصل في جملة ORDER BY. سيتم الفرز بناءً على العمود الأول المحدد، وإذا كان هناك أي روابط، فسيتم فرزها أيضًا بناءً على العمود الثاني، وهكذا.

على سبيل المثال، إذا كان لديك جدول يسمى "الموظفون" يحتوي على عمودين "الاسم" و"الراتب"، فيمكنك فرز البيانات أولاً حسب الاسم ثم حسب الراتب باستخدام الاستعلام التالي:

SELECT * FROM Employees ORDER BY Name, Salary;

فرز البيانات بقيم فارغة

عند فرز البيانات، فكر في كيفية التعامل مع القيم الخالية. افتراضيًا، تعامل مع القيم الخالية كأصغر قيمة ممكنة، مع وضعها في بداية مجموعة النتائج التي تم فرزها تصاعديًا. ومع ذلك، عند الفرز بترتيب تنازلي، تعامل مع القيم الخالية كأكبر قيمة ممكنة، مع وضعها في نهاية مجموعة النتائج التي تم فرزها.

استخدم الكلمات الأساسية NULLS FIRST أو NULLS LAST لتغيير هذا السلوك ومعاملة القيم NULL بشكل مختلف. على سبيل المثال:

SELECT * FROM Employees ORDER BY Salary NULLS LAST;

استخدام ORDER BY مع الوظائف التجميعية

يمكن للوظائف التجميعية مثل SUM وCOUNT وAVG وما إلى ذلك أيضًا استخدام جملة ORDER BY. تقوم جملة ORDER BY عادةً بتجميع النتيجة التي تم تعيينها بواسطة عمود واحد أو أكثر باستخدام وظائف مجمعة. استخدام جملة ORDER BY لفرز المجموعات بناءً على عمود أو عمود محدد.

على سبيل المثال، لنفترض أن لديك جدولًا يسمى "المبيعات" يحتوي على عمودين "المنتج" و"إجمالي المبيعات". في هذه الحالة، يمكنك حساب إجمالي المبيعات لكل منتج وفرز مجموعة النتائج بترتيب تنازلي لإجمالي المبيعات باستخدام الاستعلام التالي:

SELECT Product, SUM(TotalSales) AS Total FROM Sales GROUP BY Product ORDER BY Total DESC;

تحديد عدد الصفوف التي يتم إرجاعها باستخدام ORDER BY

في بعض الأحيان، قد تكون مهتمًا فقط باسترداد عدد معين من الصفوف من مجموعة النتائج التي تم فرزها. يمكن تحقيق ذلك باستخدام جملة LIMIT، التي تدعمها بعض قواعد بيانات SQL مثل MySQL وPostgreSQL.

على سبيل المثال، إذا كنت تريد استرداد أعلى 10 موظفين أجرًا من جدول "الموظفين"، فيمكنك استخدام الاستعلام التالي في MySQL:

SELECT * FROM Employees ORDER BY Salary DESC LIMIT 10;

تقنيات الفرز المتقدمة

وبصرف النظر عن تقنيات الفرز الأساسية المذكورة أعلاه، يمكن استخدام العديد من تقنيات الفرز المتقدمة مع جملة ORDER BY.

فرز البيانات حسب حساسية الحالة

بشكل افتراضي، تقوم جملة ORDER BY بإجراء فرز غير حساس لحالة الأحرف. ومع ذلك، إذا كنت تريد إجراء فرز حساس لحالة الأحرف، فيمكنك استخدام الكلمة الأساسية COLLATE متبوعة باسم ترتيب حساس لحالة الأحرف.

على سبيل المثال، إذا كان لديك جدول يسمى "الأسماء" يحتوي على عمود يسمى "الاسم"، فيمكنك فرز البيانات بترتيب حساس لحالة الأحرف باستخدام الاستعلام التالي في MySQL:

SELECT * FROM Names ORDER BY Name COLLATE utf8_bin;

لذا، فإن الاستعلام بأكمله يوجه MySQL لتحديد جميع الأعمدة من جدول "الأسماء"، وترتيب النتائج بناءً على عمود "الاسم"، وإجراء فرز حساس لحالة الأحرف باستخدام ترتيب utf8_bin.

فرز البيانات حسب المعايير المخصصة

في بعض الأحيان، قد ترغب في فرز البيانات بناءً على معايير مخصصة لا يمكن تحقيقها باستخدام اسم عمود بسيط. في مثل هذه الحالات، يمكنك استخدام عبارة CASE ضمن جملة ORDER BY لتحديد منطق الفرز المخصص.

على سبيل المثال، إذا كان لديك جدول يسمى "الطلاب" يحتوي على عمودين "الاسم" و"الدرجة"، وتريد فرز البيانات بناءً على الدرجة بترتيب تنازلي، ولكن مع ظهور التقديرات "أ" أولاً، تليها "ب" "، وما إلى ذلك، يمكنك استخدام الاستعلام التالي:

SELECT *
FROM Students
ORDER BY
CASE Grade
     WHEN 'A' THEN 1
     WHEN 'B' THEN 2
     WHEN 'C' THEN 3
     ELSE 4
END,
Grade DESC;

فرز البيانات حسب التاريخ والوقت

عند التعامل مع بيانات التاريخ والوقت، من المهم فرزها بشكل صحيح لضمان التحليل الدقيق. يمكن استخدام جملة ORDER BY لفرز بيانات التاريخ والوقت بتنسيقات مختلفة، مثل YYYY-MM-DD وDD-MM-YYYY وما إلى ذلك.

على سبيل المثال، لنفترض أن لديك جدول يسمى "الطلبات" مع عمود يسمى "تاريخ الطلب" بالتنسيق "YYYY-MM-DD". في هذه الحالة، يمكنك فرز البيانات بترتيب تصاعدي لتاريخ الطلب باستخدام الاستعلام التالي:

SELECT * FROM Orders ORDER BY OrderDate;

فرز البيانات حسب طول السلسلة

في بعض الحالات، قد ترغب في فرز البيانات بناءً على طول عمود السلسلة. يمكن تحقيق ذلك باستخدام الدالة LENGTH ضمن جملة ORDER BY.

على سبيل المثال، إذا كان لديك جدول يسمى "Words" يحتوي على عمود يسمى "Word"، فيمكنك فرز البيانات بترتيب تصاعدي لطول السلسلة باستخدام الاستعلام التالي:

SELECT * FROM Words ORDER BY LENGTH(Word);

الجمع بين ORDER BY وبنود SQL الأخرى

يمكن دمج عبارة ORDER BY مع عبارات SQL الأخرى لتحسين مجموعة النتائج بشكل أكبر.

استخدام ORDER BY مع جملة WHERE

تقوم عبارة WHERE بتصفية الصفوف التي يقوم استعلام SQL بإرجاعها بناءً على شرط معين. يمكنك استخدام جملة ORDER BY مع جملة WHERE لفرز الصفوف التي تمت تصفيتها.

على سبيل المثال، إذا كنت تريد استرداد جميع الموظفين الذين لديهم راتب أكبر من 5000 وفرزهم بترتيب تنازلي للرواتب، يمكنك استخدام الاستعلام التالي:

SELECT * FROM Employees WHERE Salary > 5000 ORDER BY Salary DESC;

استخدام ORDER BY مع جملة GROUP BY

تقوم جملة GROUP BY بتجميع الصفوف بناءً على عمود واحد أو أكثر. يمكنك استخدام جملة ORDER BY مع جملة GROUP BY لفرز المجموعات بناءً على عمود أو أعمدة محددة.

على سبيل المثال، إذا كان لديك جدول يسمى "المبيعات" يحتوي على عمودين "المنتج" و"إجمالي المبيعات"، وتريد حساب إجمالي المبيعات لكل منتج وفرز مجموعة النتائج بترتيب تنازلي لإجمالي المبيعات، فيمكنك استخدام ما يلي استفسار:

SELECT Product, SUM(TotalSales) AS Total FROM Sales GROUP BY Product ORDER BY Total DESC;

استخدام ORDER BY مع جملة JOIN

تقوم جملة JOIN بدمج صفوف من جدولين أو أكثر بناءً على عمود ذي صلة. يمكنك استخدام جملة ORDER BY بالتزامن مع جملة JOIN لفرز الصفوف المرتبطة.

على سبيل المثال، إذا كان لديك جدولين يسمى "العملاء" و"الطلبات"، وتريد استرداد كافة الطلبات مع تفاصيل العميل، مرتبة حسب اسم العميل، فيمكنك استخدام الاستعلام التالي:

SELECT
    Orders.OrderID,
    Customers.CustomerName
FROM
    Orders
JOIN
    Customers ON Orders.CustomerID = Customers.CustomerID
ORDER BY
    Customers.CustomerName;

ORDER BY في قواعد بيانات SQL مختلفة

تدعم معظم قواعد بيانات SQL جملة ORDER BY، ولكن قد يختلف بناء الجملة والسلوك قليلاً. فيما يلي بعض الأمثلة على كيفية استخدام جملة ORDER BY في قواعد بيانات SQL المختلفة:

الطلب حسب في MySQL

في MySQL، يتم استخدام جملة ORDER BY لفرز مجموعة النتائج بترتيب تصاعدي أو تنازلي. بناء الجملة هو كما يلي:

SELECT * FROM table_name ORDER BY column_name [ASC|DESC];

الطلب حسب في أوراكل

في Oracle، يتم استخدام جملة ORDER BY لفرز مجموعة النتائج بترتيب تصاعدي أو تنازلي. بناء الجملة هو كما يلي:

SELECT * FROM table_name ORDER BY column_name [ASC|DESC];

ترتيب حسب في SQL Server

في SQL Server، يتم استخدام جملة ORDER BY لفرز مجموعة النتائج بترتيب تصاعدي أو تنازلي. بناء الجملة هو كما يلي:

SELECT * FROM table_name ORDER BY column_name [ASC|DESC];

ترتيب حسب في PostgreSQL

في PostgreSQL، يتم استخدام جملة ORDER BY لفرز مجموعة النتائج بترتيب تصاعدي أو تنازلي. بناء الجملة هو كما يلي:

SELECT * FROM table_name ORDER BY column_name [ASC|DESC];

اطلب حسب في SQLite

يستخدم SQLite جملة ORDER BY لفرز مجموعة النتائج بترتيب تصاعدي أو تنازلي. بناء الجملة هو كما يلي:

SELECT * FROM table_name ORDER BY column_name [ASC|DESC];

نصائح وأفضل الممارسات لاستخدام ORDER BY

عند استخدام جملة ORDER BY، من المهم مراعاة النصائح وأفضل الممارسات التالية:

تحسين الترتيب حسب الأداء

يمكن أن يكون فرز مجموعات النتائج الكبيرة مستهلكًا للموارد وقد يؤثر على أداء استعلامات SQL الخاصة بك. لتحسين أداء جملة ORDER BY، يمكنك التفكير في إنشاء فهارس على الأعمدة المستخدمة للفرز.

اختيار نوع البيانات المناسب للفرز

يمكن أن يؤدي اختيار نوع البيانات الصحيح للأعمدة المستخدمة في جملة ORDER BY إلى تحسين الأداء أيضًا. على سبيل المثال، يمكن أن يكون استخدام أنواع البيانات الرقمية لفرز القيم الرقمية أكثر كفاءة من استخدام أنواع بيانات السلسلة.

التعامل مع مجموعات النتائج الكبيرة من خلال ORDER BY

إذا كنت تتعامل مع مجموعات نتائج كبيرة وتحتاج فقط إلى مجموعة فرعية من البيانات التي تم فرزها، فكر في استخدام جملة LIMIT (إذا كانت مدعومة من قاعدة البيانات الخاصة بك) للحد من عدد الصفوف التي يتم إرجاعها.

وفي الختام

تعد جملة ORDER BY أداة قوية في SQL تسمح لك بفرز البيانات بطرق مختلفة. سواء كنت بحاجة إلى فرز البيانات بترتيب تصاعدي أو تنازلي، أو الفرز حسب أعمدة متعددة، أو التعامل مع القيم الخالية، أو استخدام تقنيات الفرز المتقدمة، فإن جملة ORDER BY توفر المرونة لتلبية متطلبات الفرز الخاصة بك. باتباع النصائح وأفضل الممارسات المذكورة في هذه المقالة، يمكنك تحسين أداء استعلامات SQL الخاصة بك وتجنب الأخطاء الشائعة عند استخدام عبارة ORDER BY.

آمل أن يكون هذا المقال قد ساعدك على فهم جملة ORDER BY في SQL. إذا كنت ترغب في استكشاف المزيد حول الذكاء الاصطناعي/التعلم الآلي، فاختر برنامج AI & ML BlackBelt Plus المعتمد.

أطلق العنان للمستقبل من خلال برنامج AI وML BlackBelt Plus المعتمد! اكتسب التمكن من الذكاء الاصطناعي والتعلم الآلي من خلال تجربة تعليمية غامرة. ارفع مهاراتك، وعزز آفاق حياتك المهنية، وكن خبيرًا معتمدًا في التقنيات المتطورة التي تشكل العالم. اغتنم الفرصة لتحويل حياتك المهنية - سجل الآن وابدأ رحلة نحو التميز في الذكاء الاصطناعي والتعلم الآلي!

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة