SQL, neboli strukturovaný dotazovací jazyk, nám umožňuje shromažďovat data z databáze prostřednictvím dotazů. Umožňuje nám také vkládat, aktualizovat a mazat tato data.
V tomto blogovém příspěvku se zaměříme na to, jak získat data a omezit výsledky pomocí SQL.
Proč byste měli omezit výsledky dotazů SQL?
Databáze je obvykle obrovská sbírka dat. Někdy nepotřebujeme získat všechny výsledky. Pro omezení výsledků můžeme dotaz optimalizovat.
Omezení výsledků dotazů je důležité pro výkon DB. Načítání velkého výsledku, když to není vyžadováno, způsobuje dodatečné zatížení databáze a má dopad na uživatelskou zkušenost.
Jak omezit výsledky dotazů v SQL
Syntaxe je odlišná pro SQL Server, Oracle a MySQL pro omezení dat.
- MySQL používá
LIMIT
. - ORACLE používá
FETCH FIRST
. - MS Access a SQL Server používají
TOP
.
Níže se podíváme na podrobné příklady, jak každý z nich funguje.
Ukázková databáze
Máme následující tabulku s názvem students
s jejich podrobnostmi, jak můžete vidět níže:
ID | Jméno | Pohlaví |
---|---|---|
1 | Ryan | M |
2 | Joanna | F |
3 | Miranda Andersen | F |
4 | Dalia Mata | F |
5 | Lilianna Boyd | F |
6 | Lexie Sharp | M |
7 | Jazlene Cordova | F |
8 | Brycen Werner | M |
9 | Karissa Turner | F |
10 | Aisha Dodson | F |
11 | Aydin Reeves | M |
Jak omezit dotaz v MySQL
Níže je syntaxe pro MySQL.
SELECT (expression)
FROM
table_name
LIMIT 5;
Jako příklad vybereme prvních 5 záznamů z tabulky.
Použijme naši tabulku students
pro tuto ukázku.
-- fetch top 5 values from table
SELECT * FROM students
LIMIT 5;
Výstup:
Jak zkombinovat LIMIT s ORDER BY
Když zkombinujete LIMIT s ORDER BY, můžete získat smysluplnější výsledky. Můžeme to například použít k nalezení 5 nejlepších studentů, kteří dosáhli u zkoušky více než 70 %.
Pojďme si objednat náš stůl students
se sloupcem name
a z výsledku vyberte 5 nejlepších. Můžete to udělat takto:
SELECT * FROM students
order by name
LIMIT 5;
Výstup:
Jak omezit výsledky – syntaxe Oracle
Níže je uvedena ekvivalentní syntaxe pro náš první příklad v Oracle.
SELECT * FROM students
FETCH FIRST 5 ROWS ONLY;
Ve starších verzích Oracle můžete použít ROWNUM k omezení počtu řádků vrácených dotazem.
Příklad:
SELECT * FROM
students
WHERE ROWNUM < 5;
Jak omezit výsledky v SQL – syntaxe MS Access
Níže je uvedena ekvivalentní syntaxe pro náš první příklad v MS Access.
SELECT TOP 5 * FROM students;
Zabalení
Funkce LIMIT může být velmi výkonná pro optimalizaci dotazů v kombinaci s řazením. Efektivní dotazy jsou v systému lehčí a pro uživatele rychlejší. Vždy se doporučuje OMEZIT výsledky tam, kde je to možné.