Oracle Limit Rows

Oracle Limit Rows



Ограничаването на редовете е мощна и често срещана функция, която се прилага от повечето машини за релационни бази данни. Ограничаването на редовете се отнася до броя редове, които SQL оператор SELECT може да върне.

В повечето случаи максималният брой ограничения се задава от машината на базата данни. Въпреки това можем да заменим тази стойност в нашата заявка, като използваме различни техники. Преди да промените броя на редовете, които се връщат от оператор SQL SELECT, е добре да разгледате наличните ресурси във вашата система.







Ограничението за редове е ценна функция по няколко причини. Първо, това помага да се предотврати връщането на прекомерно количество данни от заявките, което може да използва ценните ресурси и да причини някои проблеми с производителността.



Второ, може да помогне за предотвратяване на атаките с инжектиране на SQL чрез ограничаване на количеството данни, които атакуващият може да извлече от базата данни.



Тази публикация ще обсъди кратък формат за ограничаване на броя на записите, които се връщат от дадена заявка на Oracle. Не забравяйте, че в базата данни на Oracle няма клауза LIMIT, както ще намерите в други бази данни като MySQL, PostgreSQL и др.





Oracle ROWNUM

За да приложим клауза, подобна на ограничение, използваме функцията rownum в SQL. Тази функция връща броя на редовете в даден резултат.

Примерна употреба:

Да предположим, че имаме таблица, която съдържа информацията за базата данни, както е показано на следното изображение:



проблем:

Да предположим, че ни интересуват само първите пет реда от таблицата.

Решение:

Можем да използваме заявка, както е показано в следния фрагмент:

изберете * от бази данни, където ROWNUM <= 5;

В предишната заявка  ние дефинираме условна инструкция, която гарантира, че върнатият брой редове е по-малък или равен на 5. Това принуждава броя на записите от заявката да спре на пет.

Примерен изход е както следва:

Заключение

Функцията ROWNUM на Oracle е мощен инструмент за ограничаване на броя на редовете, които се връщат в Oracle SQL заявка. Може да се използва по различни начини за контролиране на броя редове, които се връщат от заявка, и гарантира, че се връщат само най-подходящите данни.