SQL или езикът за структурирани заявки ни позволява да събираме данни от база данни чрез заявки. Той също така ни позволява да вмъкваме, актуализираме и изтриваме тези данни.
В тази публикация в блога ще се съсредоточим върху това как да извличаме данни и да ограничаваме резултатите с помощта на SQL.
Защо трябва да ограничавате резултатите от SQL заявките?
Базата данни обикновено е огромна колекция от данни. Понякога не е необходимо да извличаме всички резултати. За да ограничим резултатите, можем да оптимизираме заявката.
Ограничаването на резултатите от заявките е важно за производителността на DB. Извличането на голям резултат, когато не се изисква, води до допълнително натоварване на базата данни и оказва влияние върху потребителското изживяване.
Как да ограничим резултатите от заявките в SQL
Синтаксисът е различен за SQL Server, Oracle и MySQL за ограничаване на данните.
- MySQL използва
LIMIT
. - ORACLE използва
FETCH FIRST
. - MS Access и SQL Server използват
TOP
.
Ще видим примери за това как работи всеки един от тях в подробности по-долу.
Демонстрационна база данни
Имаме следната таблица с име students
с техните подробности, както можете да видите по-долу:
ID | Име | Пол |
---|---|---|
1 | Райън | М |
2 | Джоана | F |
3 | Миранда Андерсен | F |
4 | Далия Мата | F |
5 | Лилиана Бойд | F |
6 | Лекси Шарп | М |
7 | Jazlene Cordova | F |
8 | Брайсен Вернер | М |
9 | Кариса Търнър | F |
10 | Айша Додсън | F |
11 | Айдън Рийвс | М |
Как да ограничим заявка в MySQL
По-долу е синтаксисът за MySQL.
SELECT (expression)
FROM
table_name
LIMIT 5;
Като пример ще изберем първите 5 записа от таблицата.
Нека използваме нашата таблица students
за тази демонстрация.
-- fetch top 5 values from table
SELECT * FROM students
LIMIT 5;
Изход:
Как да комбинирате LIMIT с ORDER BY
Когато комбинирате LIMIT с ORDER BY, можете да получите по-значими резултати. Например можем да използваме това, за да намерим първите 5 студенти, които са отбелязали повече от 70% на изпита си.
Нека поръчаме нашата маса students
с колоната name
и изберете първите 5 от резултата. Можете да направите това по следния начин:
SELECT * FROM students
order by name
LIMIT 5;
Изход:
Как да ограничим резултатите – синтаксис на Oracle
По-долу е еквивалентният синтаксис за първия ни пример в Oracle.
SELECT * FROM students
FETCH FIRST 5 ROWS ONLY;
В по-старите версии на Oracle можете да използвате ROWNUM, за да ограничите броя на редовете, върнати от заявка.
Пример:
SELECT * FROM
students
WHERE ROWNUM < 5;
Как да ограничим резултатите в SQL – синтаксис MS Access
По-долу е еквивалентният синтаксис за първия ни пример в MS Access.
SELECT TOP 5 * FROM students;
Приключване
Функционалността LIMIT може да бъде много мощна за оптимизиране на заявки, когато се комбинира със сортиране. Ефективните заявки са по-леки за системата и бързи за потребителя. Винаги се препоръчва да ОГРАНИЧИТЕ резултатите, където е приложимо.