SQL, eller struktureret forespørgselssprog, lader os indsamle data fra en database gennem forespørgsler. Det giver os også mulighed for at indsætte, opdatere og slette disse data.
I dette blogindlæg vil vi fokusere på, hvordan man henter data og begrænser resultaterne ved hjælp af SQL.
Hvorfor skal du begrænse SQL-forespørgselsresultater?
En database er normalt en enorm samling af data. Nogle gange behøver vi ikke at hente alle resultaterne. For at begrænse resultaterne kan vi optimere forespørgslen.
Begrænsning af forespørgselsresultater er vigtig for DB-ydeevne. At hente et stort resultat, når det ikke er påkrævet, medfører ekstra belastning af databasen og påvirker brugeroplevelsen.
Sådan begrænser du forespørgselsresultater i SQL
Syntaksen er anderledes for SQL Server, Oracle og MySQL for at begrænse dataene.
- MySQL bruger
LIMIT
. - ORACLE bruger
FETCH FIRST
. - MS Access og SQL Server bruger
TOP
.
Vi vil se eksempler på, hvordan hver enkelt fungerer i detaljer nedenfor.
Demodatabase
Vi har følgende tabel med navnet students
med deres detaljer, som du kan se nedenfor:
ID | Navn | 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 |
Sådan begrænser du en forespørgsel i MySQL
Nedenfor er syntaksen for MySQL.
SELECT (expression)
FROM
table_name
LIMIT 5;
Som et eksempel vil vi vælge de første 5 poster fra tabellen.
Lad os bruge vores tabel students
til denne demonstration.
-- fetch top 5 values from table
SELECT * FROM students
LIMIT 5;
Output:
Sådan kombinerer du LIMIT med ORDER BY
Når du kombinerer LIMIT med ORDER BY, kan du få mere meningsfulde resultater. For eksempel kan vi bruge dette til at finde de 5 bedste studerende, der scorede mere end 70 % på deres eksamen.
Lad os bestille vores bord students
med kolonnen name
og vælg top 5 fra resultatet. Du kan gøre det sådan her:
SELECT * FROM students
order by name
LIMIT 5;
Output:
Sådan begrænser du resultater – Oracle-syntaks
Nedenfor er den tilsvarende syntaks for vores første eksempel i Oracle.
SELECT * FROM students
FETCH FIRST 5 ROWS ONLY;
I ældre versioner af Oracle kan du bruge ROWNUM til at begrænse antallet af rækker, der returneres af en forespørgsel.
Eksempel:
SELECT * FROM
students
WHERE ROWNUM < 5;
Sådan begrænser du resultater i SQL – MS Access-syntaks
Nedenfor er den tilsvarende syntaks for vores første eksempel i MS Access.
SELECT TOP 5 * FROM students;
Afslutning
LIMIT-funktionaliteten kan være meget effektiv til forespørgselsoptimering, når den kombineres med sortering. Effektive forespørgsler er lettere på systemet og hurtige for brugeren. Det anbefales altid at BEGRÆNSE resultaterne, hvor det er relevant.