SQL -grense

SQL -grense
Grensen og forskjøvene i SQL lar deg begrense antall poster som blir returnert av en SELECT -uttalelse.

Denne artikkelen vil se på å bruke grensen og forskjøvet klausuler i SQL.

MERK: Det er godt å huske at SQL -grensen og forskyvningsklausulene ikke er en del av ANSI SQL -standarden. Imidlertid er det mye vedtatt av store databasemotorer.

Syntaks

Syntaksen for grensen og forskjøvene er som vist nedenfor:

PLUKKE UT
col1, col2, ... coln
FRA
Tabell_navn
Bestill etter kolonne_navn
Begrens telling forskyvningsforskyvning;

Grenseverdien vil avgjøre antall rader/poster som er returnert fra spørringen.

Offsetverdien lar deg hoppe over spesifikke rader før du begynner å hente for matchende poster.

MERK: Forskyvningsverdien er ikke nødvendig. Hvis det mangler, vil spørringen hente poster fra første rad.

Eksempel
Anta at du har en eksempeltabell og data som vist i spørringen nedenfor:

Lag tabellansatte (
ID Seriell primærnøkkel,
full_name varchar (255),
E -post varchar (255),
Avdeling varchar (100),
start_date dato,
aktiv bool,
Kategori varchar (50)
);
Sett inn i ansatte (full_navn, e -post, avdeling, start_date, aktiv, kategori)
Verdier
('Meghan Edwards', '[email protected] ',' Game Development ',' 2016-06-22 ', True,' Dev-G1 '),
('Sam Davis', '[email protected] ',' Game Development ',' 2014-01-04 ', False,' Dev-G1 '),
('Taylor Miller', '[email protected] ',' Game Development ',' 2019-10-06 ', True,' Dev-G1 '),
('Wilson Smitty', '[email protected] ',' Database Developer ',' 2016-12-23 ', True,' Dev-DB1 '),
('Barbara Moore', '[email protected] ',' Database Developer ',' 2015-12-23 ', True,' DEV-DB1 '),
('Raj Chan', '[email protected] ',' Database Developer ',' 2017-12-23 ', False,' Dev-DB1 '),
('Susan Brown', '[email protected] ',' DevOps Engineer ',' 2011-12-23 ', True,' Dev-ops1 '),
('Marial Anderson', '[email protected] ',' Devops Engineer ',' 2015-12-23 ', True,' Dev-ops1 '),
('Nancy Thomas', '[email protected] ',' DevOps Engineer ',' 2014-12-23 ', False,' Dev-ops1 ');

Du kan se alle postene i tabellen ved hjelp av SELECT -spørringen som vist:

Velg * fra ansatte;

Dette skal returnere alle radene som vist:

Anta at vi vil ha de tre første postene. For det kan vi bruke grenseklausulen som:

Velg * fra ansatte grense 3;

Ovennevnte spørring skal returnere de tre første radene fra 1. Utgangen er som vist:

Hva om du vil hente følgende tre elementer? Vi kan bruke grensen og forskyvningsklausulen som illustrert nedenfor:

Velg * fra ansatte begrenser 3 Offset 3;

Spørringen over vil returnere tre elementer fra den fjerde raden (inkluderende). Hvis du har en ID for radene dine, bør utgangen være beskrivende som vist:

Avslutte

Som illustrert i denne artikkelen, er grensen og forskyvningsklausuler en sikkerhetsfunksjon som forhindrer deg i å hente tusenvis, om ikke millioner, av poster i en enkelt spørring. Derfor er det bra å bruke denne funksjonen for enkel paginering og ganske produksjon.