PostgreSQL begrenser rader

PostgreSQL begrenser rader
PostgreSQL omhandler mange funksjoner angående datalagring og visning av den for brukeren. Å vise begrensede data fra databasen er nødvendig når det. Som vi vet at data er til stede i form av bulker. Så for å redusere visningen av tabeller til brukeren, må vi begrense radene ved å spesifisere dem. PostgreSql 'Limit' -bestemmelse er en alternativklausul i "Select" -uttalelsen som kan brukes med andre klausuler som 'Ties', 'Offset', etc. Hver av dem vil være en del av diskusjonen vår i dette innholdet. La oss komme i gang med den enkle syntaksen til begrensningsklausulen. Velg * fra tabellenavnsordre etter uttrykksgrense ROW

Og i tilfelle av 'offset':

Velg * fra Table-Name Limit Row Offset 'Row for å hoppe over';

Enkel begrensningsklausul

Beveger seg mot eksempler på emnet som diskuteres. Tenk på et bord som heter “Retter”. Innholdet i tabellen opptil 3 rader fra starten av er å vises som utgang. Og dette utvalget gjøres ved å sortere dataene i rader i henhold til ID -kolonnen. 'Grense' er nøkkelordet som brukes til å kontrollere visningen som er opprettet for brukeren i tabellen. For det første vil vi vise alt innholdet i tabellen 'Retter' ved å bruke en SELECT -kommando

>> Velg * fra retter;

Nå vil vi bruke spørringen for å vise radene opp til 3Rd id.

>> Velg * fra retter bestill etter ID -grense 3;

Gjennom SNAP kan du se utgangen der de to siste linjene blir trukket på grunn av grensebegrensningen som brukes på tabellen.

Begrens klausulen med en forskyvningsklausul

Det andre eksemplet innebærer bruk av 'forskyvning' sammen med 'grense' nøkkelord. Denne klausulen hopper/hopper over radene med 'nth' forskyvningsnummer. Forskjellen mellom grensen og forskyvningsklausulen er at grensen teller antallet opp som vi ønsker å vise dataene, mens forskyvning fjerner den bestemte raden eller rader fra tabellen ved å oppgi forskyvningsnummeret i kommandoen. Nå vil vi bruke begge klausulene på spørringen, så vi får ønsket utgang.

>> velg * fra retter bestill etter ID -grense 3 forskyvning 1;

Kommandoen ovenfor viser at grensen "3" brukes, noe som betyr at den resulterende tabellen bare vil inneholde 3 rader i tabellen, og forskyvning "1" betyr at den første raden blir trukket fra utgangen. Derfor fra 5 vises bare tre rader på grunn av grense og forskyvning.

Bruk av begrensningsklausul med ordreklausulen

I tillegg til begrensning, kan vi også bruke ordrenklausulen til å vise tabelldata. Dette vil fungere slik at alt innholdet blir ordnet i en rekkefølge som er spesifisert i spørringen. Da vil grensedelen bli ansett for å bli utført. La oss se.

>> Velg * fra retter bestill etter type Desc -grense 4;

Denne spørringen viser at resultatet først er ordnet etter den spesifiserte kolonnen 'Type'. Så når de 5 radene er ordnet overfor den alfabetiske rekkefølgen på 'typen', vises de første 4 radene.

Grense som null

Hvis vi spesifiserer "grense" -klausulen som null, bruker den ingen endring på tabellen. Her har vi bare vist "ID" -kolonnen bare for å sjekke effektiviteten til "Limit" -klausulen.

>> Velg ID fra retter begrenser null;

Bånd ... hent først

Dette eksemplet er bruken av "bånd" i begrensningsklausulen. Dette hjelper til med å få alle dataene som til og med brukes gjentatte ganger i en hvilken som helst kolonne i tabellen. For det spesifikke formålet skal vi lage en ny tabell først som har en enkelt ID -kolonne

>> Lag tabell TBL1 (i int)

Sett deretter inn verdier i den.

>> sett inn i TBL1 -verdier (1), (5), (4), (6);

Normalt når vi introduserer alle kolonnene på tidspunktet for opprettelse av bord, men her i tilfelle av tilfeldige tall. En kolonne som heter 'tall' opprettes. Denne funksjonen er en innebygd funksjon for å generere de tilfeldige tallene og hvert tall i ID-kolonnen. For dette formålet bruker vi en spesifikk uttalelse, 'alter'. Som vil legge til en kolonne i tabellen som vist nedenfor i bildet tatt.

>> endre tabell tbl1 legge til kolonne numre numerisk standard tilfeldig ();

Tilsvarende la vi noen flere rader til bordet. Det resulterende tabellen er som følger.

Nå på denne tabellen vil vi bruke 'Ties' -bestemmelsen med faktoren "hente-først".

Hvis vi henter de første radene på tabellen, er det som vanligvis skjer at PostgreSQL pauser som fungerer på de faste radnumrene når det kommer de samme tallene. For å overvinne problemet, i tillegg til "bånd", er "orden etter" -bestemmelsen også nødvendig fordi uten det vil resultatet være ganske tilfeldig. Bruk nå denne tilstanden på tabellen med en spørring.

Den "hente først" -delen vil få alle postene ordnet i stigende rekkefølge av ID -kolonnen. I følge kommandoen blir de første 5 radene valgt.

Offset med bånd

Tenk på en annen tabell som heter “Technology”. Her er vi interessert i å anvende Fetch_First, bånd og forskjøvet klausuler i en enkelt kommando. Disse tre kombinerte og lovet ikke å returnere nøyaktig samme antall rader du har spesifisert i spørringen.

>> Velg * fra teknologi;

Her ønsker vi å spesifisere 2 rader for henting først med en forskyvning på 3. Så for det første er alle dataene organisert i synkende rekkefølge, deretter fjernes de tre første radene; Derfor får vi de to siste radene bestilt av modellens kolonne i tabellen. Den enkle syntaksen er:

>> Velg * fra tabellnavnsordre etter kolonne Navn Desc Hent First (N) Rows with Ties Offset (N);

Begrens med en underspørs

Dette er et eksempel på å begrense antall rader ved å bruke en underspørsmål til bordet som heter Worker. Du kan bruke alle kommandoene på en enkelt tabell. Men for å forklare forskjellige begrensninger, må vi ha en rekke i tabellskaping, som ikke er tilgjengelig ennå på et enkelt bord. Så arbeiderbordet har følgende attributter.

>> Velg * fra arbeidere;

En ting som bør huskes er å bruke ordren bare med klausulen med Ties -klausulen når de passer hverandre; Ellers må du bruke en sub-Query hvis du vil ha spesifikke rader med en annen kolonne i tabellen.

>> velg * fra (velg * fra arbeiderbestilling av City Desc Fetch fra de første 4 rader med bånd) som subq -ordre av City Desc, fname

For det første løses sub-Query-delen.

Konklusjon

'PostgreSql Limit Rows' er en løsning for å skjule noen data fra brukeren på grunn av noen spesifiserte årsaker. Ved å bruke 'Offset', blir 'ordrebestemmelse' og 'bånd' med Fetch-First-konseptet diskutert for å redusere tvetydigheten ved å kombinere dem alle i en enkelt uttalelse. Jeg håper dette innholdet vil hjelpe deg med å håndtere tabeller med begrensningsklausulen.