Maison > Article > base de données > Résumé des points de connaissance des contraintes de clé étrangère MySQL
Cet article vous apporte des connaissances pertinentes sur mysql, qui organise principalement les problèmes liés aux contraintes de clé étrangère (Foreign Key) sont établies par une colonne entre deux tables de données dans la base de données. généralement causé par des champs ayant exactement la même signification dans des scénarios réels. Examinons-les ensemble, j'espère que cela sera utile à tout le monde.
Apprentissage recommandé : Tutoriel vidéo mysql
Les contraintes de clé étrangère (Foreign Key) sont une relation établie par une colonne entre deux tables de données dans la base de données. Cette connexion est généralement provoquée par des champs ayant exactement la même signification dans les scénarios réels. Grâce à l'introduction de contraintes de clé étrangère, MySQL peut rendre l'intégrité des données dans la table de données plus forte et plus cohérente avec la situation d'affichage. Ci-dessous, je donne un exemple pour illustrer le rôle des contraintes de clé étrangère MySQL.
Si nous construisons une base de données pour le système de gestion des performances des étudiants universitaires, il existe deux tables. L'une est la table des étudiants, qui stocke le numéro d'étudiant, le nom, le sexe, le département et d'autres informations, et l'autre table est la table des notes. , qui stocke des informations telles que le numéro d'identification de l'étudiant, le numéro du cours, les résultats des tests, etc. De cette manière, une contrainte de clé étrangère sera établie entre les deux tables via le numéro d'étudiant. Il est naturel pour nous de penser que le numéro d'identification d'étudiant dans le tableau des relevés de notes dépend de l'existence du numéro d'identification d'étudiant dans le tableau des étudiants. Si un étudiant obtient son diplôme, ou abandonne, et est supprimé du tableau des étudiants, alors son lien de parenté. les notes ne sont pas nécessaires dans le tableau des relevés de notes. Avant de créer une relation de clé étrangère, ces deux tables existent de manière totalement indépendante. Nous pouvons insérer de force un score associé d'un étudiant inexistant dans la table de scores, ou nous pouvons forcer la suppression d'un étudiant dans la table des étudiants, quelles que soient les informations de score. Qu'il existe dans la feuille de match. Cependant, après avoir établi une relation de clé étrangère, la base de données MySQL limitera les deux comportements ci-dessus. Chaque fois que des données sont insérées ou supprimées, l'intégrité des données sera vérifiée, de sorte que nos opérations doivent être conformes à la situation réelle.
La création de clés étrangères dans la base de données MySQL doit remplir les quatre conditions suivantes, sinon elle sera rejetée par la base de données MySQL :
1. Créer des clés étrangères Les tables et colonnes existent
2. Les colonnes qui composent la clé étrangère existent dans les index
3. Le moteur de la table de données doit être spécifié comme InnoDB
4. Les types de données des champs de clé étrangère et associés les champs doivent être cohérents
Pour créer une contrainte de clé étrangère lors de la création d'une table de données, il vous suffit d'utiliser le mot-clé clé étrangère pour spécifier le champ de clé étrangère de cette table après l'instruction create de la table de données, et utilisez le mot-clé reference pour spécifier le champ de clé étrangère de la table associée. Associez simplement les champs et contraignez clairement le comportement.
Un exemple d'instruction SQL pour créer une contrainte de clé étrangère est le suivant :
create table student (id int(8),name varchar(20),department varchar(20) ,index (id))ENGINE=InnoDB; create table grade (Sid int(8),Cid int(10),score int,index(Sid),foreign key (Sid) references student(id) on delete restrict on update cascade)ENGINE=InnoDB;
Dans l'instruction SQL ci-dessus, on delete restrict indique que la clé étrangère limitera l'opération de suppression lors de la suppression, tandis que lors de la mise à jour en cascade spécifie que la clé étrangère La clé restreindra l’opération de suppression lors de la synchronisation des opérations de mise à jour.
De même, MySQL prend également en charge l'ajout de contraintes de clé étrangère après la création de la table de données. Dans l'exemple ci-dessus, nous supprimons d'abord la table de notes, puis créons la table de notes. Nous ne créons pas de clés étrangères maintenant. Essayez d'ajouter des clés étrangères après avoir créé la table de notes. Les commandes SQL pertinentes sont les suivantes :
drop table grade; create table grade(Sid int(8),Cid int(10),score int); alter table grade add index(Sid); alter table grade add foreign key (Sid) references student(id) on delete restrict on update cascade;
L'exécution. les résultats sont les suivants :
Ensuite, testons la fonction de contrainte de clé étrangère Tout d'abord, essayons d'insérer la note d'un élève inexistant dans la table des notes et trouvons-la. il est rejeté :
Après cela, essayez de supprimer la table des étudiants. Les étudiants avec des notes ont été rejetés :
Ensuite, nous avons testé la fonction de mise à jour en cascade des contraintes de clé étrangère MySQL et avons constaté que si les données dans le tableau des élèves est modifié, le tableau des notes changera également, comme indiqué ci-dessous :
Apprentissage recommandé : tutoriel vidéo mysql
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!