Sequenza SQL

Sequenza SQL
Hai mai usato l'auto-incremento o l'istruzione seriale in un database? In tal caso, allora hai una sequenza SQL. Sebbene le sequenze e le colonne di identità siano leggermente diverse, condividono caratteristiche comuni.

Una sequenza si riferisce a una serie di valori interi unici generati su richiesta. Sono una caratteristica prevalente in molti motori di database. Questo perché vari scenari richiedono che ogni record nel database abbia un identificatore univoco.

Discutiamo il concetto di sequenze SQL in questo tutorial.

Come funzionano le sequenze SQL

Non esiste un modo universale per descrivere come funzionano le sequenze. Questo perché vari motori di database li implementano in modo diverso.

Impariamo come funziona.

Sequenze in mysql

Le sequenze in MySQL sono implementate impostando l'attributo Auto_InCrement in una colonna. Nella maggior parte dei casi, questa colonna è anche selezionata come chiave primaria poiché ciascun valore nella colonna deve essere univoco.

Possiamo illustrare come usare una sequenza in MySQL come mostrato nella query seguente:

-- Mysql
Crea table table_name (
Column_Name Int Auto_Increment Key primario,
column_name2 varchar (100),
);

La query sopra crea una colonna con una sequenza SQL utilizzando la parola chiave Auto_InCrement. Si noti che impostiamo anche il vincolo della chiave primaria sulla colonna.

Sebbene l'aggiunta di sequenze in MySQL sia facile come illustrato sopra, ci sono alcuni punti da notare:

  1. La colonna di sequenza in mysql deve essere indicizzata. Ciò significa impostare la colonna come chiave primaria o univoca.
  2. La colonna non può contenere valori null. È possibile risolverlo impostando il vincolo non null sulla colonna. In alcuni casi, MySQL può specificare esplicitamente il vincolo non null quando viene aggiunto il vincolo automatico.
  3. I valori nella colonna sequenza iniziano da 1 e aumentano di 1 per ciascun record aggiunto alla tabella.
  4. Myisam e InnoDB non supportano il riutilizzo dei numeri di sequenza eliminati. Quindi, MySQL assegnerà il seguente valore alla sequenza inserita successiva se si rimuove un record. Ad esempio, se si elimina 10, MySQL non riutilizzarà quel valore. Invece, assegnerà 11 al prossimo record.
  5. MySQL ti consente di ripristinare il valore di incremento automatico.

Sequenza in PostgreSQL

In PostgreSQL, le sequenze sono oggetti definiti dall'utente legati allo schema in cui vengono creati.

Per creare una sequenza in PostgreSQL, utilizzare la sintassi come mostrato di seguito:

-- Postgresql
Crea sequenza [se non esiste] sequence_
come data_type
incremento di [increment_value]
Minvalue [minumum_value] | Nessun minumum_value
maxValue [Maximum_value] | Nessun Maximum_Value
Inizia [con] Inizia
cache
Nessun ciclo
Di proprietà di [table_name.column_name] Nessuno

Ok, cosa significa tutto questo? Permettici di scomporlo in sezioni più piccole che possiamo capire.

Creare sequenza

La prima parte è la sequenza di creazione. Ciò consente di creare una nuova sequenza se non esiste. Il nome della sequenza può essere tutto ciò che desideri.

Come data_type

La clausola AS consente di specificare il tipo di dati per la sequenza. PostgreSQL consente tipi Smallint, Int e Bigint. Se non si desidera identificare il tipo di dati, puoi saltare questa clausola e PostgreSQL sarà impostata predefinita a Bigint.

Incremento di

Questa clausola specifica il valore aggiunto alla sequenza corrente per creare un nuovo valore di sequenza. Ad esempio, se la sequenza è 1,2,3,4,5, il valore dell'incremento è 1.

Se si desidera iniziare dall'alto e scendere quando vengono aggiunti i record, specificare un valore negativo per l'incremento per clausola.

Per impostazione predefinita, PostgreSQL utilizzerà il valore di incremento di 1.

Minvalue

Questa clausola definisce il valore minimo per la sequenza. Se non viene specificato alcun valore, PostgreSQL utilizzerà il valore predefinito.

Maxvalue

La clausola MaxValue imposta il valore massimo per la sequenza.

INIZIA CON

Questa clausola imposta il valore iniziale per la sequenza. Se non viene specificato alcun valore, il minvalue viene utilizzato per le sequenze ascendenti e Maxvule viene utilizzato per sequenze discendenti.

Cache

Questa clausola definirà quanti numeri di sequenza devono essere preallocati e memorizzati in memoria. Ciò consente un accesso più rapido. Per impostazione predefinita, PostgreSQL utilizzerà un valore di 1 quindi non cache.

CICLO

La clausola del ciclo consente di specificare l'involucro quando i valori max o min sono raggiunti nella sequenza. PostgreSQL utilizzerà rispettivamente Min e MaxValue quando viene raggiunto il limite se il ciclo non specificato.

POSSEDUTO DA

Questa opzione specifica con cui è associata la colonna della tabella la sequenza. Quindi, se la colonna o la tabella viene eliminata, la sequenza viene anche eliminata.

Se la sequenza non è associata a nessuna tabella o colonna, è possibile impostare il di proprietà di nessuno.

Per creare una sequenza semplice in PostgreSQL, eseguire la query:

Crea sequenza my_seq
incremento di 1
Minvalue 1
MaxValue 1000
Inizio 1
Di proprietà di my_table.my_column

La query sopra crea una nuova sequenza associata a my_column nella tabella my_table.

Puoi esplorare di più sulle sequenze di PostgreSQL nella risorsa seguente:

https: // www.Postgresql.Org/Docs/Current/SQL-Createsequence.html

Sequenze in SQL Server

Come PostgreSQL, le sequenze in SQL Server sono oggetti definiti dall'utente. Pertanto, usano una sintassi strettamente simile per le sequenze in PostgreSQL. L'unica differenza è la sintassi.

La sintassi di esempio è come illustrato di seguito:

Crea sequenza [Schema_Name.] sequence_name
[Come integer_type]
[Inizia con Start_Value]
[Incremento di increment_value]
[Minvalue [Min_Value] | No Minvalue]
[MaxValue [max_value] | No maxValue]
[Ciclo | No ciclo]
[Cache [cache_size] | No cache];

Invece di nessuno, SQL Server non utilizza ciclo e nessuna cache.

Puoi esplorare di più sulle sequenze di server SQL nella risorsa seguente:

https: // docs.Microsoft.com/en-us/sql/t-sql/istruzioni/create-sequence-transact-sql?Visualizza = SQL-Server-Ver15

NOTA: per gli utenti del database Oracle, controlla la risorsa di seguito

https: // docs.oracolo.com/cd/b12037_01/server.101/b10759/istruzioni_6014.htm

Conclusione

Questo articolo dettagliato ha riguardato le sequenze SQL e come possiamo usarle nei nostri database. Resta sintonizzato per altri tutorial.