سفارش با توضیحات کار با پایگاه داده مرتب سازی داده ها در نتیجه پرس و جوی SQL. ترتیب دستور ORDER BY در یک پرس و جو

اغلب نیاز به نمایش نتیجه یک پرس و جو به ترتیب خاصی، به عنوان مثال، بر اساس حروف الفبا وجود دارد. برای این، DBMS دارد عملکرد ویژهبر زبان SQL- مرتب سازی. در عین حال برنامه نویس می تواند انتخاب کند که کدام زمینه ها و به چه ترتیبی اتفاق بیفتد تا بدون استفاده از مهارت های جدی برنامه نویسی به نتیجه دلخواه برسد.

مرتب سازی در پایگاه داده چیست؟

کار با پایگاه های داده به طور مداوم با حجم زیادی از اطلاعات مرتبط است که باید سفارش داده شوند. در حال حاضر، تعدادی DBMS وجود دارد که دارای طیف گسترده ای از توابع هستند که محبوب ترین آنها Oracle و MS SQL هستند. مرتب سازی اطلاعات، به عنوان یکی از رویه های اصلی در کار با پایگاه داده، توسط یک تابع داخلی خاص در هر یک از آنها ارائه می شود.

رتبه بندی داده ها به شما امکان می دهد فرآیند جستجو را ساده کنید و در برخی موارد به حل برخی مشکلات یا بهینه سازی برنامه کمک می کند. مرتب سازی SQL توسط یک فیلد جداگانه انتخاب شده انجام می شود و در صورت لزوم، در صورت وجود مقادیر یکسان در عناصر این فیلد، می توانید تعیین کنید. گزینه های اضافی، تعیین ترتیب ردیف ها.

دستور مرتب سازی

مرتب سازی SQL در پایگاه داده با استفاده از تابع ORDER BY ارائه می شود. بنابراین در هنگام نمایش اطلاعات از پایگاه داده، پس از تعیین ستون ها و جداولی که از آنها قرائت انجام می شود، باید دستور sort را در کوئری مشخص کرد و سپس فیلد یا فیلدهایی را که مرتب سازی انجام می شود مشخص کرد.

به عنوان مثال، اگر شما نیاز به دریافت داده‌ها از فیلدهای Name و Age از جدول افراد دارید، در حالی که نتیجه را به ترتیب حروف الفبا بر اساس ستون Name نمایش می‌دهید، پرسش زیر به شما کمک می‌کند: نام، سن را از افراد سفارش بر اساس نام انتخاب کنید.

چگونه ترتیب مرتب سازی را تنظیم کنیم؟

شرایط مدرن وظایف مختلفی را برای برنامه نویسان ایجاد می کند، و گاهی اوقات لازم است از قبل تعیین شود که نتیجه به چه ترتیبی نمایش داده می شود - به ترتیب نزولی یا صعودی، حروف الفبا یا به ترتیب معکوس؟ و برای این کار، در SQL، ترتیب مرتب سازی با افزودن یک کلمه کلیدی به پرس و جو تعیین می شود. پس از انتخاب فیلدها و جداولی که اطلاعات مورد نظر از آنها به دست می آید، باید ORDER BY را اضافه کنید و سپس نام ستونی را که می خواهید بر اساس آن مرتب کنید، مشخص کنید.

برای بدست آوردن ترتیب معکوس، باید پارامتر DESC را بعد از نام مشخص کنید. اگر لازم باشد عناصر بر اساس دو یا چند معیار مرتب شوند، ستون‌ها با کاما از هم جدا می‌شوند و اولویت رتبه‌بندی به فیلدی است که در لیست قرار می‌گیرد. شایان ذکر است که ترتیب عناصر به ترتیب معکوس، پارامتر DESC هر کدام تنها یک فیلد را ارائه می دهد که پس از نام آن این کلمه کلیدی نشان داده شده است، بنابراین در صورت لزوم باید در تمام ستون های انتخاب شده مشخص شود.

روش های مرتب سازی جایگزین

اگر امکان استفاده از تابع مرتب سازی داخلی SQL وجود نداشته باشد، می توان یکی از الگوریتم های شناخته شده را نوشت. اگر برای دستیابی به سریعترین ترتیب عناصر ضروری است، ارزش دارد که از روشی مبتنی بر نیمه شکستن یک آرایه از عناصر استفاده کنید. همچنین روش‌های رتبه‌بندی «حبابی» بسیار محبوب هستند، که در آن دو عنصر مجاور در صورت موقعیت نادرست، «مرتب‌سازی پشته» که بزرگ‌ترین عنصر را به انتهای فهرست ارسال می‌کند و «مرتب‌سازی درج» که از پیش تعیین می‌کند، تعویض می‌شوند. محل هر عنصر به نوبه خود

نوشتن خودنویس الگوریتم سرعت مرتب سازی را به میزان قابل توجهی افزایش نمی دهد، با این حال، به توسعه مهارت های برنامه نویسی کمک می کند، و همچنین به شما امکان می دهد با تنظیم طرح رتبه بندی برای یک پایگاه داده خاص، فرآیند را تغییر دهید تا کارایی را افزایش دهید. از برنامه

هنگام بازیابی داده ها، مهم است که آنها را به ترتیب خاصی دریافت کنید. مرتب سازی را می توان در هر فیلدی با هر نوع داده ای انجام داد. این را می توان به ترتیب صعودی یا نزولی برای فیلدهای عددی مرتب کرد. برای فیلدهای کاراکتر (متن)، این را می توان به ترتیب حروف الفبا مرتب کرد، اگرچه در واقع به ترتیب صعودی یا نزولی نیز مرتب می شود. همچنین می تواند در هر جهت انجام شود - از A تا Z و بالعکس از Z تا A.

ماهیت فرآیند مرتب سازی این است که دنباله را به ترتیب خاصی برسانید. می‌توانید در مقاله «الگوریتم‌های مرتب‌سازی» درباره مرتب‌سازی اطلاعات بیشتری کسب کنید، به‌عنوان مثال، مرتب‌سازی یک دنباله عددی دلخواه به ترتیب صعودی:

2, 4, 1, 5, 9

باید منجر به یک توالی مرتب شود:

1, 2, 4, 5, 6

به طور مشابه، هنگام مرتب‌سازی به ترتیب صعودی مقادیر رشته:

ایوانف ایوان، پتروف پتر، ایوانف آندری

نتیجه باید این باشد:

ایوانف آندری، ایوانف ایوان، پتروف پتر

در اینجا رشته "ایوانف آندری" به ابتدا منتقل شد، زیرا مقایسه رشته ها کاراکتر به کاراکتر انجام می شود. هر دو خط با شخصیت های یکسان "ایوانف" شروع می شود. از آنجایی که کاراکتر «الف» در کلمه «آندری» در الفبا زودتر از کاراکتر «من» در کلمه «ایوان» آمده است، این خط زودتر قرار خواهد گرفت.

مرتب سازی در SQL Query

برای انجام مرتب سازی، باید دستور ORDER BY را به رشته کوئری اضافه کنید. بعد از این دستور فیلدی که مرتب سازی توسط آن انجام می شود نشان داده می شود.

به عنوان مثال، از جدول کالاها استفاده می کنیم:

تعداد
(شماره مورد)
عنوان
(نام)
قیمت
(قیمت)
1 ماندارین50
2 هندوانه120
3 یک آناناس80
4 موز40

داده های اینجا قبلاً با ستون "num" مرتب شده اند. اکنون، بیایید یک پرس و جو بسازیم که جدولی را با محصولات مرتب شده بر اساس حروف الفبا نمایش دهد:

انتخاب کنید * سفارش کالا بر اساس عنوان

SELECT * FROM goods - انتخاب تمام فیلدها از جدول کالاها را مشخص می کند.

ORDER BY - دستور مرتب سازی؛

عنوان ستونی است که باید بر اساس آن مرتب شود.

نتیجه چنین پرس و جوی به شرح زیر است:

تعداد عنوان قیمت
3 یک آناناس80
2 هندوانه120
4 موز40
1 ماندارین50

همچنین می توانید برای هر یک از فیلدهای جدول مرتب کنید.

جهت مرتب سازی

به طور پیش فرض، دستور ORDER BY به ترتیب صعودی مرتب می شود. برای کنترل دستی جهت مرتب سازی، نام ستون با کلمه کلیدی ASC (صعودی) یا DESC (نزولی) دنبال می شود. بنابراین، برای نمایش جدول خود به ترتیب نزولی قیمت ها، باید پرس و جو را به این صورت قرار دهیم:

انتخاب کنید * از کالاها سفارش بر اساس قیمت DESC

مرتب سازی به ترتیب صعودی خواهد بود:

انتخاب کنید * از کالاها سفارش بر اساس قیمت ASC

مرتب سازی بر اساس چندین فیلد

SQL امکان مرتب سازی بر اساس چندین فیلد را به طور همزمان فراهم می کند. برای این کار پس از دستور ORDER BY فیلدهای مورد نیاز با کاما از هم جدا شده اند. ترتیب در نتیجه پرس و جو به همان ترتیبی که فیلدهای مرتب سازی مشخص شده اند پیکربندی می شود.

ستون 1 ستون 2 ستون 3
3 1 ج
1 3 ج
2 2 ب
2 1 ب
1 2 آ
1 3 آ
3 4 آ

جدول را بر اساس قوانین زیر مرتب کنید:

انتخاب کنید * از mytable ORDER BY ستون1 ASC، ستون2 DESC، ستون3 ASC

آن ها ستون اول صعودی، دوم نزولی، سوم دوباره صعودی. پرس و جو سطرها را بر اساس ستون اول و سپس بدون از بین بردن قانون اول، توسط ستون دوم مرتب می کند. سپس به همین ترتیب بدون تخطی از قوانین موجود طبق ثالث. نتیجه یک مجموعه داده مانند زیر است:

ستون 1 ستون 2 ستون 3
1 3 آ
1 3 ج
1 2 آ
2 2 ب
2 1 ب
3 1 آ
3 1 ج

ترتیب دستور ORDER BY در یک پرس و جو

مرتب‌سازی ردیف اغلب همراه با یک شرط انتخاب داده انجام می‌شود. دستور ORDER BY بعد از عبارت انتخاب WHERE قرار می گیرد. به عنوان مثال، ما محصولاتی را با قیمت کمتر از 100 روبل انتخاب می کنیم و بر اساس نام به ترتیب حروف الفبا مرتب می کنیم:

انتخاب کنید * از کالاهایی که قیمت 100سفارش بر اساس قیمت ASC

عبارت ORDER BY در Access رکوردهای برگشتی توسط یک پرس و جو را به ترتیب صعودی یا نزولی بر اساس مقادیر فیلد(های) مشخص شده مرتب می کند.

نحو

انتخاب کنید فیلد_لیست
از جانب جدول
جایی که انتخاب_شرایط
[, میدان 2 ][, ...]]]

دستور SELECT حاوی عبارت ORDER BY شامل عناصر زیر است:

ملاحظات

بند ORDER BY اختیاری است. زمانی که نیاز به نمایش داده ها به شکل مرتب شده دارید باید از آن استفاده شود.

ترتیب مرتب سازی پیش فرض صعودی است (A تا Z، 0 تا 9). دو مثال زیر مرتب‌سازی اسامی کارکنان را بر اساس نام خانوادگی نشان می‌دهد.

نام خانوادگی، نام خانوادگی را انتخاب کنید
از کارمندان
سفارش بر اساس نام خانوادگی؛
نام خانوادگی، نام خانوادگی را انتخاب کنید
از کارمندان
سفارش بر اساس نام خانوادگی ASC;

برای مرتب سازی به ترتیب نزولی (از Z تا A، 9 تا 0)، کلمه رزرو شده DESC را در انتهای هر فیلدی که می خواهید رکوردها را بر اساس آن مرتب کنید، اضافه کنید. مثال زیر نام خانوادگی کارکنان را به ترتیب نزولی حقوق مرتب می کند.

نام خانوادگی، حقوق و دستمزد را انتخاب کنید
از کارمندان
سفارش بر اساس حقوق DESC، نام خانوادگی;

اگر فیلدی را در عبارت ORDER BY مشخص کنید که حاوی داده هایی از نوع Memo یا است اشیاء OLE، خطایی رخ خواهد داد. هسته DBMS مایکروسافت Access از مرتب سازی در این نوع فیلدها پشتیبانی نمی کند.

عبارت ORDER BY معمولا آخرین عنصر در دستور SQL است.

فیلدهای اضافی را می توان در بند ORDER BY گنجاند. رکوردها ابتدا بر اساس فیلدی که ابتدا در عبارت ORDER BY فهرست شده است مرتب می شوند. رکوردهای با همان مقدار در فیلد اول بر اساس فیلد مشخص شده در قسمت دوم مرتب می شوند و به همین ترتیب.


حلقه بعدی:

مرحله 8: مرتب سازی ساده

اگر نتیجه پرس و جوی SQL شما باید به منبع یک گزارش خاص تبدیل شود، موضوع مرتب سازی داده ها در آن بسیار مهم می شود، زیرا برای شخصی که گزارشی را می خواند که به درستی مرتب نشده است یافتن سریع آن بسیار دشوار است. بخشی از اطلاعات مورد نیاز او در آن است. برای مرتب سازی داده ها بر اساس ستون های نتیجه پرس و جو (در مورد ما بر اساس فیلدهای جدول)، SQL از کلمه کلیدی ORDER BY استفاده می کند. نمونه ای از ساده ترین مرتب سازی در زیر آورده شده است. بر اساس پرس و جو از مرحله 2: "پرس و جو با یک معیار انتخاب ساده". ما کارمندان را بر اساس فیلد S_NAME (نام کامل) مرتب می کنیم.

S_NAME را انتخاب کنید، S_EXPERIENCE از D_STAFF WHERE S_EXPERIENCE

مرتب سازی نتیجه پرس و جوی SQL بر اساس یک فیلد.

مرحله 9. مرتب سازی پیچیده

اغلب و تقریباً همیشه لازم است داده ها بر اساس بیش از یک ستون مرتب شوند و نه همیشه به ترتیب صعودی. نحو SQL، پس از کلمه کلیدی ORDER BY، فهرستی از ستون‌ها و همچنین یک روش مرتب‌سازی برای هر ستون را فرض می‌کند: به ترتیب صعودی مقادیر - ASC یا نزولی - DESC. در مثال زیر، سوابق همه کارکنان را به ترتیب نزولی ارشد نشان می دهیم. کارمندان با طول خدمت یکسان بر اساس حروف الفبا مرتب می شوند.

SELECT S_EXPERIENCE، S_NAME از D_STAFF ORDER BY S_EXPERIENCE DESC، S_NAME ASC


مرتب سازی نتیجه پرس و جو SQL بر اساس دو فیلد.

اغلب مرتب سازی معکوس با ستون های [تاریخ] استفاده می شود. اگر تاریخ، به عنوان مثال، تاریخ ورود اطلاعات را ذخیره می کند، سپس هنگام مرتب سازی مجدد، در همان ابتدای لیست، ورودی هایی هستند که اخیراً نسبت به بقیه اضافه شده اند. اگر پرس و جو اعلامیه های خبری را از پایگاه داده بازیابی کند، لیستی از اعلان ها را دریافت می کنیم که به ترتیب نزولی مربوط به آنها مرتب شده اند، که می تواند بسیار مفید باشد، زیرا اعلان ها معمولاً از بالا به پایین خوانده می شوند و همه آنها در اخبار نشان داده نمی شوند. سایت‌ها، اما فقط تعداد کمی «تازه‌ترین» هستند.




بالا