-- Q1

INSERT INTO etudiants
VALUES ('12333', 'Michaud', 'Martin', 'PARIS');

-- Rejet de la commande, car : il existe déjà un étudiant 12333 ; or, le numero d'étudiant est la clé primaire de la table : il n'est donc pas possible d'avoir 2 fois le même numéro.


-- Q2

INSERT INTO etudiants
VALUES ('12409', 'Michaud', 'Martin', 'PARIS');

-- tout va bien

-- Q3 

INSERT INTO etudiants (Nom, Prenom, Ville, Numero)
VALUES ('Michu', 'Gaston', 'CALAIS', '12410');


-- Q4

UPDATE notes
SET Valeur = 15
WHERE cours = "analyse 1" AND NumEtudiant = '12309';

-- Q5

UPDATE notes
SET Valeur = Valeur + 1
WHERE cours = "analyse 1" AND Valeur < 15;

-- Q6

UPDATE notes
SET numEtudiant = '12320'
WHERE cours = "informatique" AND numEtudiant = '12319';

-- rejet de la commande : car l'étudiant 12320 n'existe pas (la valeur est absente des clés primaires de la table étudiant). Or, toute clé étrangère doit absolument correspondre à une clé primaire. Sinon ce serait un « lien rompu », or les clés étrangères servent justement à garantir l'absence de liens rompus. 

-- Q7

DELETE FROM notes
WHERE numEtudiant = '12245' AND Valeur IS NULL;

-- Q8

DELETE FROM etudiants
WHERE numero = '12309';

-- l'opération s'est bien passée, malgré que certaines clés étrangères de la table notes désignait cet étudiant. Voyons voir pourquoi le lien n'est pas rompu :

SELECT * 
FROM notes
WHERE numEtudiant = '12309';

-- on s'aperçoit que l'étudiant 12309 n'a plus de notes (inscriptions), même en analyse 1. Ses notes auraient-elles disparu en même temps que lui ?

SHOW CREATE TABLE notes;

-- on s'aperçoit en effet de la clause « ON DELETE CASCADE » sur la clé étrangère 'numEtudiant' : l'effacement de l'étudiant 12309 a donc bien provoqué l'effacement de toutes ses notes. Il n'y a donc plus aucune note associée à cet étudiant (ça aurait été des liens rompus). Donc tout va bien.

-- La modification de la clé primaire de cet étudiant - 12309 -  (dans la table etudiants !) aurait entraîné une modification en cascade de toutes les clés étrangères égales à 12309. À cause du « ON UPDATE CASCADE ».



