SQL, eller strukturerat frågespråk, låter oss samla in data från en databas genom frågor. Det gör det också möjligt för oss att infoga, uppdatera och ta bort dessa data.
I det här blogginlägget kommer vi att fokusera på hur man hämtar data och begränsar resultaten med hjälp av SQL.
Varför ska du begränsa SQL-frågeresultat?
En databas är vanligtvis en enorm samling data. Ibland behöver vi inte hämta alla resultat. För att begränsa resultaten kan vi optimera frågan.
Att begränsa frågeresultat är viktigt för DB-prestanda. Att hämta ett stort resultat när det inte krävs medför extra belastning på databasen och påverkar användarupplevelsen.
Hur man begränsar frågeresultat i SQL
Syntaxen är annorlunda för SQL Server, Oracle och MySQL för att begränsa data.
- MySQL använder
LIMIT
. - ORACLE använder
FETCH FIRST
. - MS Access och SQL Server använder
TOP
.
Vi kommer att se exempel på hur var och en fungerar i detalj nedan.
Demodatabas
Vi har följande tabell som heter students
med deras uppgifter som du kan se nedan:
ID | Namn | Kön |
---|---|---|
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 |
Hur man begränsar en fråga i MySQL
Nedan finns syntaxen för MySQL.
SELECT (expression)
FROM
table_name
LIMIT 5;
Som ett exempel väljer vi de första 5 posterna från tabellen.
Låt oss använda vår tabell students
för denna demonstration.
-- fetch top 5 values from table
SELECT * FROM students
LIMIT 5;
Utdata:
Hur man kombinerar LIMIT med ORDER BY
När du kombinerar LIMIT med ORDER BY kan du få mer meningsfulla resultat. Vi kan till exempel använda detta för att hitta de 5 bästa eleverna som fick mer än 70 % på sitt prov.
Låt oss beställa vårt bord students
med kolumnen name
och välj de 5 bästa från resultatet. Du kan göra det så här:
SELECT * FROM students
order by name
LIMIT 5;
Utdata:
Hur man begränsar resultat – Oracle-syntax
Nedan är motsvarande syntax för vårt första exempel i Oracle.
SELECT * FROM students
FETCH FIRST 5 ROWS ONLY;
I äldre versioner av Oracle kan du använda ROWNUM för att begränsa antalet rader som returneras av en fråga.
Exempel:
SELECT * FROM
students
WHERE ROWNUM < 5;
Hur man begränsar resultat i SQL – MS Access-syntax
Nedan är motsvarande syntax för vårt första exempel i MS Access.
SELECT TOP 5 * FROM students;
Avsluta
LIMIT-funktionen kan vara mycket kraftfull för frågeoptimering när den kombineras med sortering. Effektiva frågor är lättare på systemet och snabba för användaren. Det rekommenderas alltid att BEGRÄNSA resultaten där så är tillämpligt.