Blog Alphorm Logo de blog informatique spécialisé en technologie et solutions IT
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Contraintes SQL : Assurez l’intégrité des données
Agrandisseur de policeAa
Blog AlphormBlog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Search
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Suivez-nous
© Alphorm 2024 - Tous droits réservés
Bases de donnéesDéveloppement

Contraintes SQL : Assurez l’intégrité des données

L'Équipe Alphorm Par L'Équipe Alphorm 20 novembre 2024
Partager
Partager

Assurer l’intégrité des données dans une base de données est un défi crucial.

Sans des règles strictes, vos données peuvent devenir incohérentes et peu fiables, compromettant la qualité de l’information.

Les contraintes SQL vous permettent d’imposer des règles solides, garantissant la cohérence et la fiabilité de vos données.

Table de matière
Contraintes SQL : Types et RôleFAQConclusion

Formation Le langage SQL : Le Guide Complet

Appréhendez les fondamentaux du langage SQL pour savoir assimiler ses fonctions standards.

Découvrir cette formation
Question : Qu’est-ce qu’une contrainte ?

Une contrainte d’intégrité est une clause permettant de contraindre la modification de tables dans une base de données. Elle permet d’assurer la cohérence des données en imposant certaines règles. Les contraintes peuvent être spécifiées dès la création de la table ou ajoutées par la suite à l’aide de la commande ALTER TABLE.

Diagramme des contraintes SQL sur une table
  • Syntaxe pour créer une table avec des contraintes :
				
					
 CREATE TABLE nom_table (
nom_champ type_de_donnée CONSTRAINT nom_contraint type_contrainte,
...
);

				
			
  • Syntaxe pour ajouter une contrainte :
				
					
 ALTER TABLE nom_table
ADD CONSTRAINT nom_contraint type_contrainte;

				
			

Contraintes SQL : Types et Rôle

Voici les principales contraintes que vous devez connaître :

Type de contrainte
Description
NOT NULL
Cette contrainte empêche l’insertion de valeurs nulles dans une colonne. Cela garantit que chaque enregistrement aura une valeur pour cette colonne.
PRIMARY KEY
Une clé primaire identifie de manière unique chaque enregistrement dans une table. Une colonne définie comme clé primaire ne peut pas avoir de valeurs nulles et doit contenir des valeurs uniques.
UNIQUE
Cette contrainte garantit que toutes les valeurs dans une colonne sont distinctes. Elle permet d’empêcher l’insertion de doublons dans la colonne spécifiée.
REFERENCES
Utilisée pour établir une clé étrangère, cette contrainte lie une colonne dans une table à une colonne dans une autre table, assurant ainsi l’intégrité référentielle.
DEFAULT
Cette contrainte définit une valeur par défaut pour une colonne lorsqu’aucune valeur n’est spécifiée lors de l’insertion d’un nouvel enregistrement.
CHECK
Cette contrainte impose une condition sur les valeurs d’une colonne. Par exemple, elle peut être utilisée pour s’assurer qu’une valeur est supérieure à un certain nombre.
Possibilité de nommer une contrainte
Lorsque vous créez ou modifiez une contrainte, vous pouvez lui attribuer un nom personnalisé à l’aide de la clause CONSTRAINT. Cela facilite la gestion et la référence ultérieure à cette contrainte.

Tableau 4 : les principales contraintes en SQL

  • Exemple de mise en œuvre
Schéma SQL avec clés et contraintes.

Ce schéma présente la modélisation d’une base de données pour la gestion des conducteurs et des véhicules. Il se compose de deux tables principales :

Table CONDUCTEURS

  • Objectif :Stocker les informations relatives aux conducteurs, tels que leur nom, prénom, âge, adresse mail, etc.
  • Contraintes :

La colonne CODE_CONDUCTEUR est la clé primaire, garantissant que chaque conducteur ait un identifiant unique .

Des contraintes de validation sont appliquées sur les données, comme :

  • L’âge doit être compris entre 18 et 70 ans.
  • L’adresse mail doit être unique pour chaque conducteur .
  • La date de location a une valeur par défaut qui est la date actuelle.
  • Le département doit être compris entre 01 et 95.

Table VEHICULES

  • Objectif :Enregistrer les informations relatives aux véhicules, comme la marque, le modèle, et le nombre de places.
  • Contraintes :La colonneIMMAT (immatriculation)est la clé primaire, assurant quechaque véhiculeait un identifiantunique.La colonneCODE_CONDUCTEURest une clé étrangère, faisantréférenceà la tableCONDUCTEURS. Cela établit une relation entre les véhicules et les conducteurs, garantissant que chaque véhicule soit associé à un conducteur existant.Le nombre de places (NBR_PLACE)dans un véhicule doit être compris entre 1 et 7.

Relations

La clé étrangère entre la table VEHICULES et la table CONDUCTEURS permet de lier un véhicule à un conducteur, assurant ainsi que les véhicules ne peuvent être attribués qu’à des conducteurs valides. Ce schéma garantit l’intégrité des données et la cohérence des informations dans la base de données.

  • Création de la table CONDUCTEURS
				
					
 CREATE TABLE CONDUCTEURS (
CODE_CONDUCTEUR INT PRIMARY KEY, -- Clé primaire
NOM VARCHAR(50) NOT NULL, -- NOT NULL
PRENOM VARCHAR(50) NOT NULL, -- NOT NULL
AGE INT CHECK (AGE BETWEEN 18 AND 70), -- Vérification de l'âge entre 18 et 70
MAIL VARCHAR(100) UNIQUE, -- Adresse email doit être unique
DATE_LOCATION DATE DEFAULT GETDATE(), -- Date avec valeur par défaut du jour
ADRESSE VARCHAR(100),
DEPARTEMENT INT NOT NULL -- NOT NULL
);

				
			
Astuce Pratique : La commande suivante permet d’ajouter une contrainte CHECK à la table CONDUCTEURS, spécifiant que le champ DEPARTEMENT doit avoir une valeur comprise entre 01 et 95.
				
					
 ALTER TABLE CONDUCTEURS ADD CONSTRAINT chk_Departement CHECK (DEPARTEMENT BETWEEN 01 AND 95);

				
			

Explications :

  • CODE_CONDUCTEUR :Cette colonne est définie comme une clé primaire. Elle estuniqueetne peut pas être nulle.
  • NOM et PRENOM :Ces champs ne peuvent pas accepter de valeurs nulles grâce à la contrainteNOT NULL.
  • AGE :La contrainte CHECKassure que l’âge du conducteur soit compris entre 18 et 70 ans.
  • MAIL :Ce champ estunique,empêchant plusieurs conducteurs d’avoir le même email.
  • DATE_LOCATION :La date de location prend par défaut la date du jour grâce àDEFAULT GETDATE().
  • DEPARTEMENT :La contrainte CHECKgarantit que le département soit compris entre 01 et 95.

Résultats obtenus

Voilà, après l’exécution de cette requête pour la création de la table conducteur avec ses contraintes, nous trouvons le résultat suivant :

Table stagiaire avec colonnes et contraintes SQL.

Et voilà l’affichage des contraintes de cette table dans un répertoire dans MSSMS :

Liste de contraintes SQL sous SQL Server
  • Exemple de test l’un des contraints

Lorsque vous essayez d’insérer une valeur NULL dans le champ PRENOM qui a une contrainte NOT NULL selon le schéma. Cela entraînera une erreur car le champ PRENOM ne peut pas accepter de valeurs nulles.

Voici la requête que vous avez créez :

				
					
 INSERT INTO CONDUCTEURS VALUES (1, 'Harabazan', NULL,20,
'harabazan@alphorm.com', DEFAULT, NULL, 101);

				
			
  • Résultat attendu :
Erreur SQL contrainte valeur NULL colonne PRENOM

Correction de l’erreur :

Pour résoudre ce problème, vous devez insérer une valeur non-nulle pour le champ PRENOM . Et une valeur valide dans la plage entre 1 et 95 pour le champ DEPARTEMENT . Par exemple :

				
					
 INSERT INTO CONDUCTEURS VALUES (1, 'Harabazan', 'hamid',32, 'harabazan@alphorm.com', DEFAULT, NULL, 75);

				
			

Et voilà le résultat lorsque nous effectuons une vérification avec cette requête de sélection :

				
					
 SELECT * FROM CONDUCTEURS

				
			
Table SQL démontrant des contraintes
  • Création de la table VEHICULES
				
					
 CREATE TABLE VEHICULES (
IMMAT VARCHAR(20) PRIMARY KEY, -- Clé primaire
CODE_CONDUCTEUR INTEGER NOT NULL, -- Clé étrangère, ne peut pas être NULL
MARQUE CHAR(20) NOT NULL, -- Marque du véhicule, ne peut pas être NULL
MODELE VARCHAR(50), -- Modèle du véhicule
NBR_PLACE INTEGER NOT NULL, -- Nombre de places, ne peut pas être NULL
CONSTRAINT FK_CODE_CONDUCTEUR FOREIGN KEY (CODE_CONDUCTEUR) REFERENCES CONDUCTEURS (CODE_CONDUCTEUR), -- Clé étrangère
CONSTRAINT chk_nbr_place CHECK (NBR_PLACE BETWEEN 1 AND 7) -- Vérifie que le nombre de places est entre 1 et 7
);

				
			

Explications :

  • IMMAT :La clé primaire pour la tabledes véhicules, qui doitêtre unique.
  • CODE_CONDUCTEUR :Champ de type INTEGER, qui est une clé étrangère reliant la table VEHICULES à latable CONDUCTEURS.Il ne peut pas être NULL, garantissant qu’un véhicule doit toujours être associé à un conducteur existant.
  • MARQUE :Champ de type CHAR(20) pour la marque du véhicule, quine peut pas être NULL.
  • MODELE :Champ de type VARCHAR(50) pour le modèle du véhicule,pouvant être NULL.
  • NBR_PLACE :Champ de type INTEGER pour le nombre de places dans le véhicule, quine peut pas être NULL.
  • CONSTRAINT FK_CODE_CONDUCTEUR :Cette contrainte définitCODE_CONDUCTEURcomme une clé étrangère, garantissant que chaque véhicule est associé à un conducteur existant dans la table CONDUCTEURS.
  • CONSTRAINT chk_nbr_place :Cettecontrainte CHECKassure que le nombre de places dans un véhicule est compris entre 1 et 7.
  • Résultat attendu :

La création de cette table avec les contraintes définies garantit l’intégrité des données et respecte les règles d’association entre les tables.

Schéma de table SQL pour véhicules avec contraintes

Et voilà que l’on se trouve dans le répertoire des clés et des contraintes :

Image montrant des contraintes SQL et clés.

Pour tester les contraintes de la table VEHICULES, vous pouvez utiliser la requête d’insertion suivante :

				
					
 INSERT INTO VEHICULES VALUES ('1889TP74', 2, 'OPEL', 'Frontera', 10);

				
			
  • Résultat affiché :
Erreur SQL due à une contrainte CHECK
Erreur Courante : Une erreur fréquente est d’utiliser un nombre comme ‘2’ ici, qui n’existe pas dans la table conductrice. Il faut spécifier que le CODE_CONDUCTEUR existe.

Voici un exemple d’insertion valide :

				
					
 INSERT INTO VEHICULES VALUES ('1889TP74', 1, 'OPEL', 'Frontera', 7);

				
			

Et voilà le résultat lorsque nous effectuons une vérification avec cette requête de sélection :

Tableau affichant des données de contrainte SQL

Formez-vous gratuitement avec Alphorm !

Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.

Démarrer gratuitement
illustration processus de paiement en ligne avec étapes claires et convivialité

FAQ

Qu'est-ce qu'une contrainte en SQL ?
Une contrainte en SQL est une règle que l’on applique à une colonne ou à une table pour garantir l’intégrité des données. Les contraintes assurent que les opérations de modification des données respectent certaines conditions prédéfinies. Par exemple, elles peuvent empêcher l’insertion de valeurs nulles ou de doublons, ou encore établir des relations entre différentes tables grâce aux clés étrangères. Chaque contrainte sert un objectif spécifique pour maintenir la cohérence et la fiabilité des bases de données.
Quels types de contraintes SQL existe-t-il ?
Les principaux types de contraintes SQL incluent NOT NULL, qui empêche les valeurs nulles; PRIMARY KEY, qui assure l’unicité des enregistrements; UNIQUE, qui empêche les doublons; FOREIGN KEY, qui établit des relations entre tables; DEFAULT, qui définit une valeur par défaut; et CHECK, qui impose des conditions spécifiques sur les valeurs. Chaque type de contrainte joue un rôle crucial pour garantir l’intégrité et la structure des données dans une base de données.
Comment ajouter une contrainte à une table existante ?
Pour ajouter une contrainte à une table existante, vous pouvez utiliser la commande ALTER TABLE suivie de ADD CONSTRAINT. Par exemple, pour ajouter une contrainte CHECK à une table nommée CONDUCTEURS afin de vérifier que la colonne DEPARTEMENT est comprise entre 01 et 95, utilisez la commande suivante : ALTER TABLE CONDUCTEURS ADD CONSTRAINT chk_Departement CHECK (DEPARTEMENT BETWEEN 01 AND 95);. Cette méthode permet de renforcer les règles d’intégrité des données après la création initiale de la table.
Pourquoi utiliser une clé étrangère en SQL ?
Une clé étrangère en SQL est utilisée pour créer une relation entre deux tables, assurant ainsi l’intégrité référentielle des données. Elle garantit que les valeurs d’une colonne correspondent à des valeurs existantes dans une autre table. Par exemple, dans une base de données de gestion de véhicules, la clé étrangère CODE_CONDUCTEUR dans la table VEHICULES fait référence à la clé primaire de la table CONDUCTEURS, assurant que chaque véhicule est associé à un conducteur valide. Cela prévient les incohérences dans les données.
Comment garantir l'unicité des enregistrements dans une table SQL ?
Pour garantir l’unicité des enregistrements dans une table SQL, on utilise principalement les contraintes PRIMARY KEY et UNIQUE. La contrainte PRIMARY KEY impose que chaque valeur de la colonne soit unique et non nulle, permettant d’identifier chaque enregistrement de manière distincte. La contrainte UNIQUE, quant à elle, assure que toutes les valeurs dans une colonne sont distinctes, empêchant ainsi les doublons. Ces contraintes contribuent à maintenir l’intégrité et la fiabilité des données dans une base de données.

Conclusion

En maîtrisant les contraintes en SQL, vous assurez la cohérence et l’intégrité de vos données. Comment allez-vous appliquer ces principes dans vos projets futurs ?

ÉTIQUETÉ : Langage SQL
Facebook
Twitter
LinkedIn
Email
WhatsApp
Par L'Équipe Alphorm
Démocratiser la Connaissance Informatique pour Tous !
Suivre :
L'Équipe Alphorm, c'est la démocratisation de la connaissance informatique. Passionnés et dévoués, nous sommes là pour vous guider vers le succès en rendant la technologie accessible à tous. Rejoignez notre aventure d'apprentissage et de partage. Avec nous, le savoir IT devient une ressource inspirante et ouverte à tous dans un monde numérique en constante évolution.

Derniers Articles

  • Techniques pour gérer les fichiers texte en C#
  • Créer et lire un fichier CSV avec C#
  • JSON : Comprendre et Utiliser Efficacement
  • Créer une Base SQLite dans C#
  • Lecture des données SQLite simplifiée
Laisser un commentaire Laisser un commentaire

Laisser un commentaire Annuler la réponse

Vous devez vous connecter pour publier un commentaire.

Blog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Contraintes SQL : Assurez l’intégrité des données

© Alphorm - Tous droits réservés