SQL LIMIT, SELECT TOP, FETCH FIRST, ROWNUM utasítások bemutatása példákkal
Ebben a leckében az SQL LIMIT utasítása kerül bemutatásra, amelyet adatbázi-skezelőtől függően szoktak még SELECT TOP-nak, FETCH FIRST-nek vagy ROWNUM-nak is nevezni.
A LIMIT, SELECT TOP, FETCH FIRST, ROWNUM utasítások leírása
A fent említett utasítások segítségével lehet meghatározni a lekérdezés eredményeként visszaadott sorok számát. Ezek az utasítások rendkívül hasznosak lehetnek egy nagy méretű adatbázis esetén, illetve akkor, amikor nincs szükségünk a lekérdezés összes eredményére. Utóbbira kiváló példa lehet egy tabella, amikor csak az első három helyezettet szeretnénk kilistázni.
Melyik adatbázis-kezelő melyik utasítást támogatja?
Ahogy a bevezetőben is szó volt róla, adatbázis-kezelőnként eltér, hogy melyik utasítást támogatják, így érdemes tisztában lenni vele, hogy az általunk használt adatbázis-kezelő melyik utasítást támogatja, hogy ne érjen meglepetés, ha az adatbázis-kezelő nem ismeri fel az utasítást.
- MySQL: LIMIT
- Oracle Database: FETCH FIRST, ROWNUM
- SQL SERVER: SELECT TOP
- MS Access: SELECT TOP
LIMIT, SELECT TOP, FETCH FIRST, ROWNUM szintaxisok és példák
Ebben a szekcióban kerül bemutatásra a LIMIT, a SELECT TOP, a FETCH FIRST és a ROWNUM szintaxisa. A záradékokhoz tartozó példákat a lent látható táblán és adatokon fogjuk bemutatni.
vasarlok tábla
ID | vezeteknev | keresztnev | lakhely | szuletesi_ev |
---|---|---|---|---|
1 | Horváth | Tamás | Budapest | 1989 |
2 | Lakatos | Dezső | Debrecen | 1961 |
5 | Losonczi | Léna | Nyíregyháza | 2005 |
6 | Balogh | Beatrix | Miskolc | 1985 |
9 | Kovács | István | Budapest | 1957 |
10 | Lakatos | Boldizsár | Debrecen | 2009 |
LIMIT szintaxis
A LIMIT kulcsszót a lekérdezés végén helyezzük el, majd megadjuk, hogy hány rekordot szeretnénk kilistázni.
SELECT oszlop(ok)
FROM tábla
LIMIT szám;
Code language: SQL (Structured Query Language) (sql)
LIMIT példa
Ebben a példában a „vasarlok” tábla első három rekordját szeretnénk kilistázni.
SQL lekérdezés
SELECT * FROM vasarlok
LIMIT 3;
Code language: SQL (Structured Query Language) (sql)
Eredmény
ID | vezeteknev | keresztnev | lakhely | szuletesi_ev |
---|---|---|---|---|
1 | Horváth | Tamás | Budapest | 1989 |
2 | Lakatos | Dezső | Debrecen | 1961 |
5 | Losonczi | Léna | Nyíregyháza | 2005 |
SELECT TOP szintaktika
A SELECT TOP kulcsszó után megadjuk, hogy hány sort szeretnénk az eredményhalmazban látni.
SELECT TOP szám oszlop(ok)
FROM tábla;
Code language: SQL (Structured Query Language) (sql)
Másik lehetőségként megadhatjuk azt is, hogy a lekérdezés eredményének hány százalékát szeretnénk látni.
SELECT TOP szám PERCENT oszlop(ok)
FROM tábla;
Code language: SQL (Structured Query Language) (sql)
SELECT TOP példa
Az első példában a „vasarlok” tábla összes rekordja közül csak az első hármat szeretnénk lekérdezni.
SQL lekérdezés
SELECT TOP 3 * FROM vasarlok;
Code language: SQL (Structured Query Language) (sql)
Eredmény
ID | vezeteknev | keresztnev | lakhely | szuletesi_ev |
---|---|---|---|---|
1 | Horváth | Tamás | Budapest | 1989 |
2 | Lakatos | Dezső | Debrecen | 1961 |
5 | Losonczi | Léna | Nyíregyháza | 2005 |
A második példában ugyanazon tábla 50%-át listázzuk ki. Amennyiben WHERE feltételünk is lenne, akkor már nem az összes rekord 50%-át listázná ki, hanem a WHERE feltételnek eleget tevő rekordok felét.
SQL lekérdezés
SELECT TOP 50 PERCENT FROM vasarlok;
Code language: SQL (Structured Query Language) (sql)
Eredmény
ID | vezeteknev | keresztnev | lakhely | szuletesi_ev |
---|---|---|---|---|
1 | Horváth | Tamás | Budapest | 1989 |
2 | Lakatos | Dezső | Debrecen | 1961 |
5 | Losonczi | Léna | Nyíregyháza | 2005 |
FETCH FIRST szintaxis
A FETCH FIRST és a ROWS ONLY kulcsszó közé kell megadni azt, hogy hány rekordot listázzon ki.
SELECT oszlop(ok)
FROM tábla
FETCH FIRST szám ROWS ONLY;
Code language: SQL (Structured Query Language) (sql)
Csak úgy, mint a SELECT TOP esetében, itt is megadhatjuk százalékos formában a kilistázandó sorok számát.
SELECT oszlop(ok)
FROM tábla
FETCH FIRST szám PERCENT ROWS ONLY;
Code language: SQL (Structured Query Language) (sql)
FETCH FIRST példa
Ahogyan eddig, a következő példákban is csak az első három rekordot kérdezzük le.
SQL lekérdezés
SELECT * FROM vasarlok
FETCH FIRST 3 ROWS ONLY;
Code language: SQL (Structured Query Language) (sql)
Eredmény
ID | vezeteknev | keresztnev | lakhely | szuletesi_ev |
---|---|---|---|---|
1 | Horváth | Tamás | Budapest | 1989 |
2 | Lakatos | Dezső | Debrecen | 1961 |
5 | Losonczi | Léna | Nyíregyháza | 2005 |
SQL lekérdezés
SELECT * FROM vasarlok
FETCH FIRST 50 PERCENT ROWS ONLY;
Code language: SQL (Structured Query Language) (sql)
Eredmény
ID | vezeteknev | keresztnev | lakhely | szuletesi_ev |
---|---|---|---|---|
1 | Horváth | Tamás | Budapest | 1989 |
2 | Lakatos | Dezső | Debrecen | 1961 |
5 | Losonczi | Léna | Nyíregyháza | 2005 |
ROWNUM szintaktika
A ROWNUM kulcsszót a WHERE záradék után kell megadni egy operátorral egyetemben, amely lehet: >, >=, <, <=, =. Az operátort követi a szám.
SELECT oszlop(ok)
FROM tábla
WHERE ROWNUM = szám;
Code language: SQL (Structured Query Language) (sql)
ROWNUM példa
A korábbi példákhoz hasonlóan itt is az első három rekordot listáztattuk ki.
SQL lekérdezés
SELECT * FROM vasarlok
WHERE ROWNUM = 3;
Code language: SQL (Structured Query Language) (sql)
Eredmény
ID | vezeteknev | keresztnev | lakhely | szuletesi_ev |
---|---|---|---|---|
1 | Horváth | Tamás | Budapest | 1989 |
2 | Lakatos | Dezső | Debrecen | 1961 |
5 | Losonczi | Léna | Nyíregyháza | 2005 |