Séquence SQL

Séquence SQL
Avez-vous déjà utilisé l'incrément automatique ou l'instruction série dans une base de données? Si oui, alors vous avez une séquence SQL. Bien que les séquences et les colonnes d'identité soient légèrement différentes, elles partagent des caractéristiques communes.

Une séquence fait référence à un ensemble de valeurs entières uniques qui sont générées à la demande. Ils sont une caractéristique répandue dans de nombreux moteurs de base de données. En effet, divers scénarios nécessitent chaque enregistrement de la base de données pour avoir un identifiant unique.

Discutons du concept de séquences SQL dans ce tutoriel.

Comment fonctionnent les séquences SQL

Il n'y a pas de moyen universel de décrire comment fonctionnent les séquences. En effet, divers moteurs de base de données les implémentent différemment.

Laissez-nous savoir comment cela fonctionne.

Séquences dans MySQL

Les séquences de MySQL sont implémentées en définissant l'attribut Auto_inCment dans une colonne. Dans la plupart des cas, cette colonne est également sélectionnée comme clé principale car chaque valeur de la colonne doit être unique.

Nous pouvons illustrer comment utiliser une séquence dans MySQL comme indiqué dans la requête ci-dessous:

-- Mysql
Créer une table table_name (
Colonnel_name int Auto_increment Clé primaire,
Column_Name2 Varchar (100),
));

La requête ci-dessus crée une colonne avec une séquence SQL en utilisant le mot-clé Auto_inCmenment. Notez que nous définissons également la contrainte de clé primaire à la colonne.

Bien que l'ajout de séquences dans MySQL soit aussi simple que l'illustré ci-dessus, il y a quelques points à noter:

  1. La colonne de séquence dans MySQL doit être indexée. Cela signifie définir la colonne comme clé primaire ou unique.
  2. La colonne ne peut pas contenir des valeurs nulles. Vous pouvez résoudre ceci en définissant la contrainte non nulle à la colonne. Dans certains cas, MySQL peut explicitement spécifier la contrainte non nulle lorsque la contrainte auto_increment est ajoutée.
  3. Les valeurs de la colonne de séquence commencent à partir de 1 et augmentent de 1 pour chaque enregistrement ajouté au tableau.
  4. Myisam et InnoDB ne soutiennent pas la réutilisation des numéros de séquence supprimés. Par conséquent, MySQL affectera la valeur suivante à la séquence insérée suivante si vous supprimez un enregistrement. Par exemple, si vous supprimez 10, MySQL ne réutilisera pas cette valeur. Au lieu de cela, il attribuera 11 à l'enregistrement suivant.
  5. MySQL vous permet de réinitialiser la valeur automatique.

Séquence dans PostgreSQL

Dans PostgreSQL, les séquences sont des objets définis par l'utilisateur liés au schéma dans lequel ils sont créés.

Pour créer une séquence dans PostgreSQL, utilisez la syntaxe comme indiqué ci-dessous:

-- Postgresql
Créer une séquence [s'il n'est pas existant] Sequence_name
comme data_type
Incrément par [incrément_value]
minValue [MIMUMUM_VALUE] | pas de minimum_value
MaxValue [maximum_value] | pas maximum_value
Commencez [avec] commencer
cache
pas de cycle
appartenant à [Table_Name.colonnen_name] aucun

D'accord, qu'est-ce que tout cela signifie? Nous permettre de le décomposer en sections plus petites que nous pouvons comprendre.

Créer une séquence

La première partie est la séquence de création. Cela vous permet de créer une nouvelle séquence si elle n'existe pas. Le nom de séquence peut être tout ce que vous souhaitez.

Comme data_type

La clause AS vous permet de spécifier le type de données pour la séquence. PostgreSQL permet des types SmallInt, INT et BigInt. Si vous ne souhaitez pas identifier le type de données, vous pouvez ignorer cette clause et PostgreSQL sera par défaut.

Incrément de

Cette clause spécifie la valeur ajoutée à la séquence actuelle pour créer une nouvelle valeur de séquence. Par exemple, si la séquence est 1,2,3,4,5, la valeur d'incrément est 1.

Si vous souhaitez commencer par le haut et descendre au fur et à mesure que les enregistrements sont ajoutés, spécifiez une valeur négative à l'incrément par clause.

Par défaut, PostgreSQL utilisera la valeur d'incrément de 1.

Mine

Cette clause définit la valeur minimale de la séquence. Si aucune valeur n'est spécifiée, PostgreSQL utilisera la valeur par défaut.

VALEUR MAX

La clause maxvalue définit la valeur maximale de la séquence.

COMMENCE AVEC

Cette clause définit la valeur de début de la séquence. Si aucune valeur n'est spécifiée, le minvalue est utilisé pour les séquences ascendantes et Maxvule est utilisé pour les séquences descendantes.

Cache

Cette clause définira le nombre de numéros de séquence à préalder et stockés en mémoire. Cela permet un accès plus rapide. Par défaut, PostgreSQL utilisera une valeur de 1 d'où aucun cache.

CYCLE

La clause de cycle vous permet de spécifier l'enveloppement lorsque les valeurs max ou min sont atteintes dans la séquence. PostgreSQL utilisera respectivement Min et MaxValue lorsque la limite est atteinte si le cycle n'est pas spécifié.

Appartenant à

Cette option spécifie avec laquelle la colonne de table la séquence est associée. Par conséquent, si la colonne ou la table est supprimée, la séquence est également supprimée.

Si la séquence n'est associée à aucune table ou colonne, vous pouvez définir la propriété de None.

Pour créer une séquence simple dans PostgreSQL, exécutez la requête:

créer une séquence my_seq
incrément de 1
minvalue 1
maxvalue 1000
Démarrer 1
Propriété de My_Table.My_Column

La requête ci-dessus crée une nouvelle séquence associée à My_Column dans le tableau my_table.

Vous pouvez explorer plus sur les séquences postgresql dans la ressource ci-dessous:

https: // www.postgresql.org / docs / courant / sql-créatesequence.html

Séquences dans SQL Server

Comme PostgreSQL, les séquences de SQL Server sont des objets définis par l'utilisateur. Par conséquent, ils utilisent une syntaxe étroitement similaire pour les séquences dans PostgreSQL. La seule différence est la syntaxe.

L'exemple de syntaxe est comme illustré ci-dessous:

Créer une séquence [schéma_name.] Sequence_name
[Comme Integer_Type]
[Commencez par start_value]
[Incrément par incrément_value]
[MinValue [min_value] | Pas de minvalue]
[MaxValue [max_value] | Pas maxvalue]
[Cycle | Pas de cycle]
[Cache [cache_size] | Pas de cache];

Au lieu d'aucun, SQL Server n'utilise aucun cycle et aucun cache.

Vous pouvez en explorer plus sur les séquences de serveur SQL dans la ressource ci-dessous:

https: // docs.Microsoft.com / en-us / sql / t-sql / instructions / create-séquence-transact-sql?View = SQL-Server-Ver15

Remarque: Pour les utilisateurs de la base de données Oracle, consultez la ressource ci-dessous

https: // docs.oracle.com / cd / b12037_01 / serveur.101 / b10759 / instructions_6014.htm

Conclusion

Cet article détaillé couvrait les séquences SQL et comment nous pouvons les utiliser dans nos bases de données. Restez à l'écoute pour plus de tutoriels.