Lorsque l'on définit une table, on définit également des contraintes sur cette table, qui serviront à contrôler son intégrité, par rapport à des règles que l'on aura fixées.
C'est notamment le cas des contraintes de domaine, qui permettent de vérifier qu'une colonne prend ses valeurs parmi un ensemble déterminé (les chaînes de 10 caractères au plus, les entier de 1 à 1000, etc.).
Exécuter l'instruction suivante et expliquer pourquoi le système renvoie une erreur.
INSERT INTO tEtu (pk_numSecu, k_numEtu, nom, prenom)
VALUES ('XXXXXXXXXXXXXXX', 'XXXXXX', 'Dupont', 'Pierre');
Donner un exemple de contrainte qui n'est pas formulée dans la définition de la table tEtu et que l'on aurait pu souhaiter.
Pour indiquer qu'un élément est obligatoire, on ajoute la clause NOT NULL
après la définition de son domaine dans l'instruction CREATE TABLE
.
Par exemple le fait que le nom et le prénom ne sont pas optionnels (tous les étudiants en ont un).
CREATE TABLE tEtu (
pk_numSecu CHAR(13) PRIMARY KEY,
k_numEtu VARCHAR(20) UNIQUE NOT NULL,
nom VARCHAR(50) NOT NULL,
prenom VARCHAR(50) NOT NULL);
Les contraintes de clé se composent de contraintes d'unicité et de contraintes de non nullité. Elles permettent d'assurer que toutes les valeurs d'une colonne seront différentes pour chaque ligne.
Exécuter les trois instructions suivantes (les unes après les autres) et expliquer ce qui se passe.
INSERT INTO tEtu (pk_numSecu, k_numEtu, nom, prenom)
VALUES ('1800675001066', 'HGYT67655Y', 'Dupont', 'Pierre');
INSERT INTO tEtu (pk_numSecu, k_numEtu, nom, prenom)
VALUES ('2810592012232', 'XGB67668', 'Durand', 'Anne');
INSERT INTO tEtu (pk_numSecu, k_numEtu, nom, prenom)
VALUES ('2810592012232', 'HGYT67655Y', 'Duchemin', 'Aline');
La première instruction est rejetée car le pk_numSecu=1800675001066
existe déjà
La première instruction est rejetée car le k_numEtu=XGB67668
existe déjà
La troisième instruction est exécutée, car les deux instructions précédentes ont été rejetées
Explorer le contenu de votre table en exécutant l'instruction suivante, et vérifier vos explications précédentes.
SELECT *
FROM tEtu;
Pourrait-on insérer dans la table une seconde personne qui aurait le prénom "Aline" et le nom "Duchemin" ? Pourquoi ?
Oui, car aucune contrainte n'impose le contrainte, seuls les numéros (sécurité sociale et numéro d'étudiant) doivent être uniques.