Comment utiliser une contrainte unique dans SQLite

Comment utiliser une contrainte unique dans SQLite
Dans SQLite, il existe différentes contraintes, qui restreignent les données de la colonne par certaines règles, lorsque les données sont insérées, mises à jour ou modifiées. Certaines des contraintes courantes des bases de données qui sont prises en charge par le SQLite sont uniques, clé primaire, clé étrangère, vérifier et non nul.

SQLite est un SGBDR, qui est utilisé pour gérer les données de la base de données, qui est placée dans les lignes et les colonnes du tableau. Cet article nous aide à comprendre ce qui est une contrainte unique dans SQLite ainsi que la façon dont il fonctionne dans SQLite.

Quelle est la contrainte unique de Sqlite

Une contrainte unique garantit que les données dans la colonne doivent être uniques, ce qui signifie qu'aucun champ de la même colonne ne contienne des valeurs similaires. Par exemple, nous créons une colonne, un e-mail et la définissons avec la contrainte unique afin qu'elle s'assure qu'aucun e-mail inséré dans la colonne ne devrait être le même que l'autre enregistrement de la colonne.

Quelle est la différence entre la contrainte de clé unique et principale dans SQLite

Les contraintes, la clé primaire et unique garantissent qu'aucune entrée en double ne doit être insérée dans le tableau, mais la différence est; Le tableau ne doit contenir qu'une seule clé primaire tandis que la contrainte unique peut être utilisée pour plus d'une colonne dans le même tableau.

Comment une contrainte unique doit être définie dans SQLite

La contrainte unique peut être définie soit sur la colonne unique ou les plusieurs colonnes de SQLite.

Comment une contrainte unique doit être définie dans une colonne

Une contrainte unique peut être définie comme une colonne, par laquelle il peut garantir qu'aucune valeur similaire ne peut entrer dans un champ de cette colonne. La syntaxe générale de la définition de la contrainte unique sur une colonne est:

Create Table Table_name (Column1 DataType unique, Column2 DataType);

L'explication de ceci est:

  • Utilisez la clause Create Table pour créer une table et remplacer le Table_Name
  • Définissez un nom de colonne avec son type de données en remplaçant la colonne1 et le type de données
  • Utilisez la clause unique dans une colonne que vous allez définir avec cette contrainte
  • Définissez les autres colonnes avec leurs données

Pour comprendre cette syntaxe, considérez un exemple de création d'une table pour Students_data qui a deux colonnes, l'une de std_id et l'autre est de ST_NAM STD_ID similaire

Créer une table Students_data (std_id entier unique, texte std_name);

Insérez les valeurs en utilisant:

Insérer dans Students_data Values ​​(1, «John»), (2, «Paul»);

Maintenant, nous allons ajouter un autre nom d'élève où le std_id est 1:

Insérer dans Students_data Values ​​(1, «Hannah»);

Nous pouvons voir à partir de la sortie, il a généré l'erreur d'insérer la valeur de STD_ID car elle a été définie avec la contrainte unique, ce qui signifie qu'aucune valeur ne peut être dupliquée avec les autres valeurs de cette colonne.

Comment la contrainte unique est-elle définie pour plusieurs colonnes

Nous pouvons définir plusieurs colonnes avec la contrainte unique, qui garantit qu'il n'y a pas de duplication des données insérées dans toutes les lignes en même temps. Par exemple, si nous devons choisir des villes pour un voyage à trois groupes de personnes (A, B et C), nous ne pouvons pas affecter la même ville à tous les trois groupes, cela peut être fait en utilisant la contrainte unique.

Par exemple, ces trois scénarios peuvent être possibles:

Groupe A Group_b Group_c
Floride Floride Boston
New York Floride Floride
Floride Floride Floride

Mais le scénario suivant n'est pas possible si nous utilisons les contraintes uniques:

Groupe A Group_b Group_c
Floride Floride Floride

La syntaxe générale de l'utilisation de la contrainte unique aux multiples colonnes est:

Create Table Table_Name (Column1 DataType, Column2, UNIQUE (Column1, Column2));

L'explication de ceci est:

  • Utilisez la clause Create Table pour créer une table et remplacer le Table_Name par son nom
  • Définissez un nom de colonne avec son type de données en remplaçant la colonne1 et le type de données
  • Utilisez la clause unique et tapez les noms des colonnes dans le () que vous allez définir avec cette contrainte

Pour comprendre cela, nous considérerons l'exemple ci-dessus, et exécuterons la commande suivante pour créer un tableau de trip_data:

Créer une table Trip_data (Text Group_A, Text Group_B, Text Group_C, UNIQUE (GROUP_A, GROUP_B, GROUP_C));

Nous insérerons les valeurs de l'attribution de leurs villes:

Insérer dans Trip_data Values ​​(«Floride», «Floride», «Boston»), («New York», «Floride», «Floride»), («Floride», «Floride», «Floride»);

Maintenant, nous allons insérer la même ville dans toutes les colonnes de Trip_data:

Insérer dans Trip_data Values ​​(«Floride», «Floride», «Floride»);

Nous pouvons voir à partir de la sortie, la duplication des données dans toutes les colonnes définies par la contrainte unique n'est pas autorisée et l'erreur générée de la contrainte unique a échoué.

Comment ajouter la contrainte unique au tableau existant

Dans SQLite, nous pouvons ajouter la contrainte en utilisant la commande alter, par exemple, nous avons une table Students_data avec des colonnes std_id, std_name, nous voulons ajouter une contrainte std_id à la table, Students_Data:

  • Utilisez la commande «Pragma Foreign Keys = OFF» pour désactiver les contraintes de clé étrangère
  • Utilisez la commande «Begin Transaction»;
  • Utilisez la commande «ALTER TABLE TABLE_NAME RENAME vers OLD_TABLE;» Pour renommer le tableau réel
  • Créez à nouveau une table avec le nom précédent, mais tout en définissant la colonne cette fois, définissez également les contraintes uniques
  • Copiez les données de la table précédente (dont le nom est modifié), dans la nouvelle table (qui a le nom précédent)
  • Supprimer la première table (dont le nom a été modifié)
  • Utilisez «Commit»
  • Utilisez la commande «Pragma Foreign Keys = ON», sur les contraintes de touches étrangères
Commencer la transaction;
ALTER TABLE Students_data Renommez à new_students_data;
Créer une table Students_data (ID INTEGER NON NULL UNIQUE, NOM Texte non nulle, entier de fréquentation et non nul);
Insérer dans Students_Data Select * FROM NEW_STUDENTS_DATA;
Drop TABLE NEW_STUDENTS_DATA;
COMMETTRE;
Pragma étrangère_keys = on;

Comment supprimer la contrainte unique au tableau existant

Comme d'autres bases de données, nous ne pouvons pas supprimer la contrainte en utilisant les commandes Drop and Alter, pour supprimer les contraintes uniques, nous devons suivre la même procédure que nous avons choisi d'ajouter la contrainte à un tableau existant et de redéfinir la structure du tableau.

Reprenez à nouveau l'exemple ci-dessus et supprimez les contraintes uniques:

Pragma étrangère_keys = off;
Commencer la transaction;
ALTER TABLE Students_data Renommez à new_students_data;
Créer une table Students_data (ID INTEGER NON NULL, NOM Texte non nul, entier de fréquentation non nul);
Insérer dans Students_Data Select * FROM NEW_STUDENTS_DATA;
Drop TABLE NEW_STUDENTS_DATA;
COMMETTRE;
Pragma étrangère_keys = on;

Conclusion

La contrainte unique est utilisée dans les bases de données pour restreindre la duplication des valeurs insérées dans les champs du tableau, tout comme la contrainte de clé primaire, mais il y a une différence entre les deux; Une table ne peut avoir qu'une seule clé primaire, alors qu'une table peut avoir plus de colonnes de clés uniques. Dans cet article, nous avons discuté de ce qu'est une contrainte unique et comment elle peut être utilisée dans SQLite à l'aide d'exemples.