DataData & Facts

Comment utiliser des contraintes SQL et traiter les données

Dans ce tutoriel, nous vous montrons comment utiliser des contraintes SQL. 

Qu’est ce qu’une contrainte SQL?

 Tout d’abord, nous rappelons ceux qui tombent sur cet article par hasard et ne connaissent pas encore SQL, que ce langage nous permet d’interroger une base de données==> Lire sur le langage SQL

Une restriction (contrainte) SQL garantit, lors de la conception d’une base de données, l’intégrité des informations que cette BDD contient. D’une autre façon, nous pouvons dire que les contraintes SQL sont des règles qui limitent les données stockées dans les tables. En tant qu’utilisateurs de SQL ou administrateur de base de données, vous pouvez créer des contraintes lors de la création de nouvelles tables ou de la modification de tables existantes.  

Il existe trois types de contraintes d’intégrité:

Affirmations

Restrictions de domaine

Au sein de ces trois catégories, les restrictions les plus implémentées sont les restrictions liées aux tables et elles sont divisées en : restrictions de table et restrictions de colonne. Une contrainte de colonne est déclarée lorsqu’une nouvelle colonne est définie, tandis qu’une contrainte de table est incluse en tant qu’élément de table.

sql
BDD SQL

Contraintes de colonne:

  • NON NUL
  • Check
  • Foreign key 
  • Primary Key
  • UNIQUE

Contraintes de table:

  • UNIQUE
  • Check
  • Foreign key 
  • Primary Key

Utiliser des contraintes SQL 

NOT NULL : lorsqu’un champ doit être obligatoire, c’est-à-dire qu’il ne peut pas être laissé vide, vous devez utiliser ladite restriction.

CHECK : Lorsqu’il est nécessaire de vérifier les informations que contiendra un champ, cette restriction doit être utilisée puisqu’elle permet de valider les informations que contiendra le champ selon la restriction CHECK.

UNIQUE: Il est utilisé lorsqu’un champ doit contenir des valeurs uniques, c’est-à-dire des valeurs significatives pour identifier chaque ligne de toutes les autres.

PRIMARY KEY: Une seule clé primaire peut être définie dans une table, cette restriction, comme la UNIQUE, est utilisée lorsqu’un champ doit contenir des valeurs uniques.

FOREIGN KEY: Cette restriction est responsable du maintien de l’intégrité relationnelle des données, si la valeur d’un champ dans une table fait référence à un autre champ dans une seconde table qui contient cette même valeur, cette valeur ne peut pas être supprimée. car il est référencé et lié dans une autre table. Sans contrainte de clé étrangère, l’intégrité relationnelle d’un certain ensemble de données liées est perdue.

Problématique:

Dans la pratique, les administrateurs des bases de données et les développeurs traitent des informations massives. La défi s’impose: compiler efficacement les données!

Par exemple, pour représenter des t-shirts de la même marque et identiques dans une base de données, vous devez représenter chaque t-shirt dans la base de données afin qu’une ou plusieurs de ses colonnes soient distinctes. Pour ce faire, les dévs et les admins des BDD  utilisent un numéro d’index pour s’assurer que deux lignes sont égales, mais avec SQL il est possible de créer une contrainte unique sans utiliser d’index.

Créer une contrainte Unique sans index

Ouvrez la base de données que vous utilisez ( celle fournit par l’éditeur de l’IDE)

Identifiez les informations qui distinguent chaque type de ligne des autres types de ligne. Prenons un exemple simple: chaque ligne d’une table de produits cosmétiques contient une marque et un numéro de modèle, et comme deux produits ne contiennent pas la même marque et le même numéro de modèle, ces deux données forment une contrainte unique.

Si vous ne pouvez pas identifier une contrainte d’unicité existante, créez une colonne TimeStamp ou DateTime dans la base de données. ⇒ Réglez la date et l’heure pour suivre les millisecondes. 

Insérez des lignes dans la base de données uniquement après que chaque ligne a reçu une valeur TimeStamp ou DataTime supérieure à toute autre ligne. Cette valeur garantit qu’aucune ligne de la base de données ne ressemble à une autre ligne.

Index ordinaire

CREATE INDEX `index_nom` ON `table` (`colonne1`);

Pour l’insérer sur une colline 1 et colonne 2 

CREATE INDEX `index_nom` ON `table` (`colonne1`, `colonne2`);

Index Unique 

CREATE UNIQUE INDEX `index_nom` ON `table` (`colonne1`);

Pour l’insérer sur une colline 1 et colonne 2 

CREATE UNIQUE INDEX `index_nom` ON `table` (`colonne1`, `colonne2`);
ON table_name(column_list);

⇒ Il faut donc spécifier le nom de l’index unique après les mots-clés CREATE UNIQUE INDEX.

Synthèse:

 La règle de valeur unique est définie dans une colonne ou un ensemble de colonnes et permet la saisie ou mettre à jour une ligne uniquement si elle en contient une

valeur unique dans le ou les détails Colonnes.

UNIQUE <attribut(s)>

Différences entre les contraintes UNIQUE et PRIMARY KEY

 La règle de valeur unique est définie dans une colonne ou un ensemble de colonnes et permet la saisie ou mettre à jour une ligne uniquement si elle en contient une

valeur unique dans le ou les détails Colonnes.

UNIQUE <attribut(s)>

Contraintes d’intégrité référentielle
• Réglez sur une clé (simple ou complexe) et s’assure que ses valeurs correspondent aux valeurs dans un:

Bien que les contraintes UNIQUE et PRIMARY KEY imposent l’unicité des données, vous devez utiliser la contrainte UNIQUE au lieu de la contrainte PRIMARY KEY lorsque vous souhaitez appliquer l’unicité à une colonne ou à un groupe de colonnes qui ne sont pas les colonnes de clé primaire. .

Contrairement aux contraintes PRIMARY KEY, les contraintes UNIQUE autorisent les valeurs NULL. De plus, les contraintes UNIQUE traitent NULL comme une valeur normale, n’autorisant donc qu’un seul NULL par colonne.

L’instruction suivante insère une ligne dont la valeur dans la colonne email est NULL :


INSERT INTO Etudiants(first_name, last_name)
VALUES('Mathematics Group','PC’');

Utiliser la restriction CHECK

La restriction CHECK permet de spécifier les valeurs dans une colonne qui doit satisfaire une expression booléenne.

Par exemple, pour exiger des prix unitaires positifs, vous pouvez utiliser l’exemple suivant de CREATE TABLE :

SQL restrictions

Comme vous pouvez le voir, la définition de la contrainte CHECK vient après le type de données. Il se compose du mot-clé CHECK suivi d’une expression logique entre parenthèses :

Comme la contrainte UNIQUE, vous pouvez également donner un nom à la contrainte CHECK en utilisant le mot-clé CONSTRAINT comme suit :

CREATE TABLE test.products(
    product_id INT IDENTITY PRIMARY KEY,
    product_name VARCHAR(255) NOT NULL,
    unit_price DEC(10,2) CONSTRAINT positive_price CHECK(unit_price > 0)
);

Les noms explicites aident à classer les messages d’erreur et vous permettent de référencer les contraintes lorsque vous souhaitez les modifier.

Si vous ne spécifiez pas de nom de contrainte de cette manière, SQL génère automatiquement un nom.

SQL renvoie l’erreur suivante :

Instruction INSERT en conflit avec la contrainte CHECK 'positive_price'. Le conflit est apparu dans la base de données 'master', table 'test.products', colonne 'unit_price'.

L’erreur s’est produite car le prix unitaire n’est pas supérieur à zéro comme spécifié dans la contrainte CHECK.

L’instruction suivante fonctionne car l’expression logique définie dans la contrainte CHECK prend la valeur TRUE

Les contraintes CHECK rejettent les valeurs qui entraînent l’évaluation de l’expression booléenne sur FALSE.

Étant donné que NULL prend la valeur UNKNOWN, il peut être utilisé dans l’expression pour contourner une contrainte.

Par exemple, vous pouvez insérer un produit dont le prix unitaire est NULL comme indiqué dans la requête suivante :

Contrainte CHECK faisant référence à plusieurs colonnes.

Une contrainte CHECK peut référencer plusieurs colonnes. Par exemple, stockez les prix normaux et réduits dans la table test.products et si vous voulez vous assurer que le prix réduit est toujours inférieur au prix normal

Les deux premières contraintes pour unit_price et discounted_price devraient vous sembler familières.

La troisième contrainte utilise une nouvelle syntaxe qui ne s’attache pas à une colonne particulière. Au lieu de cela, il apparaît comme un élément de ligne distinct dans la liste des colonnes séparées par des virgules.

Les deux premières contraintes sont des contraintes de colonne, tandis que la troisième est une contrainte de table.

Autres articles

Guide Complet : Utilisation de la Commande...
La commande INSERT INTO ... SELECT en MySQL est un...
Read more
Entrepôt de Données : Exercices Corrigés
Les entrepôts de données sont des systèmes de gestion des...
Read more
Mysql Update Jointure - Guide Déraillé
La commande UPDATE jointure en MySQL est utilisée pour...
Read more

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *