SQL -sekvens

SQL -sekvens
Har du noen gang brukt auto-increment eller seriell uttalelse i en database? I så fall har du en SQL -sekvens. Selv om sekvenser og identitetskolonner er litt forskjellige, deler de vanlige egenskaper.

En sekvens refererer til et sett med unike heltallverdier som genereres på forespørsel. De er en utbredt funksjon i mange databasemotorer. Dette er fordi forskjellige scenarier krever hver post i databasen for å ha en unik identifikator.

La oss diskutere begrepet SQL -sekvenser i denne opplæringen.

Hvordan SQL -sekvenser fungerer

Det er ingen universell måte å beskrive hvordan sekvenser fungerer. Dette er fordi forskjellige databasemotorer implementerer dem annerledes.

La oss lære hvordan dette fungerer.

Sekvenser i MySQL

Sekvenser i MySQL implementeres ved å stille inn Auto_Increment -attributtet i en kolonne. I de fleste tilfeller er denne kolonnen også valgt som den primære nøkkelen ettersom hver verdi i kolonnen må være unik.

Vi kan illustrere hvordan du bruker en sekvens i MySQL som vist i spørringen nedenfor:

-- Mysql
Lag tabell tabell_navn (
kolonne_navn int auto_increment primærnøkkel,
Column_name2 varchar (100),
);

Ovennevnte spørring oppretter en kolonne med en SQL -sekvens ved hjelp av auto_increment -nøkkelordet. Merk at vi også setter den primære nøkkelbegrensningen til kolonnen.

Selv om å legge til sekvenser i MySQL er like enkelt som illustrert ovenfor, er det noen få punkter å merke seg:

  1. Sekvenssøylen i MySQL må indekseres. Dette betyr å sette kolonnen som primærnøkkel eller unik.
  2. Kolonnen kan ikke inneholde nullverdier. Du kan løse dette ved å sette ikke nullbegrensningen til kolonnen. I noen tilfeller kan MySQL eksplisitt spesifisere ikke nullbegrensningen når Auto_increment -begrensningen legges til.
  3. Verdiene i sekvenssøylen starter fra 1 og øker med 1 for hver post som er lagt til tabellen.
  4. Myisam og InnoDB støtter ikke gjenbruk av slettede sekvensnumre. Derfor vil MySQL tilordne følgende verdi til neste innsatte sekvens hvis du fjerner en post. For eksempel, hvis du sletter 10, vil MySQL ikke gjenbruke den verdien. I stedet vil den tildele 11 til neste post.
  5. MySQL tillater deg å tilbakestille auto-increment-verdien.

Sekvens i PostgreSql

I PostgreSQL er sekvenser brukerdefinerte objekter bundet til skjemaet de er opprettet.

For å lage en sekvens i PostgreSQL, bruk syntaks som vist nedenfor:

-- PostgreSql
lage sekvens [hvis ikke eksisterer] sekvensnavn
som data_type
økning av [inkrement_value]
MinValue [Minumum_Value] | Ingen Minumum_Value
MaxValue [MAXIMAL_VALUE] | Ingen maksimum_value
start [med] start
cache
Ingen syklus
eid av [tabell_navn.kolonne_navn] Ingen

Ok, hva betyr det alle? La oss dele det ned i mindre seksjoner som vi kan forstå.

Lag sekvens

Den første delen er Create Sequence. Dette lar deg lage en ny sekvens hvis den ikke eksisterer. Sekvensnavnet kan være hva du ønsker.

Som data_type

AS -leddet lar deg spesifisere datatypen for sekvensen. PostgreSql tillater små, int og bigint -typer. Hvis du ikke ønsker å identifisere datatypen, kan du hoppe over denne klausulen, og PostgreSQL vil standard være BigInt.

Økning av

Denne klausulen spesifiserer verdien som legges til gjeldende sekvens for å opprette en ny sekvensverdi. For eksempel, hvis sekvensen er 1,2,3,4,5, er økningsverdien 1.

Hvis du ønsker å starte fra toppen og gå ned når postene legges til, spesifiser en negativ verdi til økningen etter klausul.

Som standard vil PostgreSQL bruke økningsverdien på 1.

Minvalue

Denne klausulen definerer minimumsverdien for sekvensen. Hvis ingen verdi er spesifisert, vil PostgreSQL bruke standard.

MaxValue

MaxValue -klausulen angir maksimal verdi for sekvensen.

BEGYNNER MED

Denne klausulen angir startverdien for sekvensen. Hvis ingen verdi er spesifisert, brukes minvaluen til stigende sekvenser, og maxvule brukes til synkende sekvenser.

Cache

Denne klausulen vil definere hvor mange sekvensnumre som skal utføres og lagres i minnet. Dette gir raskere tilgang. Som standard vil PostgreSQL bruke en verdi på 1 derav NO-cache.

SYKLUS

Syklusklausulen lar deg spesifisere omslaget når maks- eller minverdiene oppnås i sekvensen. PostgreSQL vil bruke henholdsvis Min og MaxValue når grensen er nådd hvis syklusen ikke er spesifisert.

EID AV

Dette alternativet spesifiserer hvilken tabellkolonnen sekvensen er tilknyttet. Derfor, hvis kolonnen eller tabellen blir droppet, blir sekvensen også slettet.

Hvis sekvensen ikke er assosiert med noen tabell eller kolonne, kan du angi eid med til ingen.

For å lage en enkel sekvens i PostgreSQL, kjør spørringen:

Lag sekvens my_seq
økning med 1
MinValue 1
MaxValue 1000
Start 1
eid av my_table.my_column

Ovennevnte spørring oppretter en ny sekvens assosiert med my_column i my_table -tabellen.

Du kan utforske mer om PostgreSQL -sekvenser i ressursen nedenfor:

https: // www.PostgreSql.org/docs/current/sql-createsequence.html

Sekvenser i SQL Server

Som PostgreSQL, er sekvenser i SQL Server brukerdefinerte objekter. Derfor bruker de tett lignende syntaks for sekvenser i PostgreSQL. Den eneste forskjellen er syntaks.

Eksemplet syntaks er som illustrert nedenfor:

Lag sekvens [skjema_navn.] sekvensnavn
[Som heltall_type]
[Start med start_value]
[Økning av inkrement_value]
[MinValue [Min_Value] | Ingen minvalue]
[MaxValue [max_value] | Ingen maxValue]
[Syklus | Ingen syklus]
[Cache [cache_size] | Ingen cache];

I stedet for ingen, bruker SQL Server ingen syklus og ingen hurtigbuffer.

Du kan utforske mer om SQL Server -sekvenser i ressursen nedenfor:

https: // dokumenter.Microsoft.com/en-us/sql/t-sql/utsagn/create-sekvens-transact-sql?Vis = SQL-SERVER-VER15

Merk: For Oracle Database -brukere, sjekk ressursen nedenfor

https: // dokumenter.Oracle.com/cd/b12037_01/server.101/b10759/uttalelser_6014.htm

Konklusjon

Denne detaljerte artikkelen dekket SQL -sekvenser og hvordan vi kan bruke dem i databasene våre. Følg med for flere opplæringsprogrammer.