Oracle Limit Rows

Oracle Limit Rows



Ograničavanje redaka moćna je i uobičajena značajka koju implementira većina motora relacijskih baza podataka. Ograničenje redaka odnosi se na broj redaka koje SQL SELECT naredba može vratiti.

U većini slučajeva maksimalan broj ograničenja postavlja pogon baze podataka. Međutim, možemo poništiti ovu vrijednost u našem upitu koristeći različite tehnike. Prije promjene broja redaka koje vraća SQL SELECT naredba, dobro je razmotriti dostupne resurse u vašem sustavu.







Ograničenje redaka je vrijedna značajka iz nekoliko razloga. Prvo, pomaže spriječiti da upiti vrate prekomjernu količinu podataka, što može iskoristiti vrijedne resurse i uzrokovati probleme s izvedbom.



Drugo, može pomoći u sprječavanju napada SQL injekcijom ograničavanjem količine podataka koje napadač može izvući iz baze podataka.



Ovaj će post raspravljati o kratkom formatu za ograničavanje broja zapisa koji se vraćaju iz zadanog Oracle upita. Imajte na umu da u Oracle bazi podataka ne postoji klauzula LIMIT kao što ćete naći u drugim bazama podataka kao što su MySQL, PostgreSQL itd.





Oracle ROWNUM

Da bismo implementirali klauzulu sličnu ograničenju, koristimo funkciju rownum u SQL-u. Ova funkcija vraća broj redaka u danom rezultatu.

Primjer upotrebe:

Pretpostavimo da imamo tablicu koja sadrži informacije o bazi podataka kao što je prikazano na sljedećoj slici:



Problem:

Pretpostavimo da nas zanima samo prvih pet redaka iz tablice.

Riješenje:

Možemo koristiti upit kao što je prikazano u sljedećem isječku:

odaberite * iz baza podataka gdje je ROWNUM <= 5;

U prethodnom upitu  definirali smo uvjetnu izjavu koja osigurava da je vraćeni broj redaka manji ili jednak 5. To prisiljava broj zapisa iz upita da se zaustavi na pet.

Primjer izlaza je sljedeći:

Zaključak

Oracle ROWNUM funkcija moćan je alat za ograničavanje broja redaka koji se vraćaju u Oracle SQL upitu. Može se koristiti na različite načine za kontrolu broja redaka koje vraća upit i osigurava vraćanje samo najrelevantnijih podataka.