Maison  >  Article  >  base de données  >  Qu'est-ce que la clé étrangère MySQL

Qu'est-ce que la clé étrangère MySQL

藏色散人
藏色散人original
2023-04-11 10:45:473365parcourir

La clé étrangère MySQL est une fonction de traitement de données très utile qui peut mettre à jour rapidement les données entre les tables ; en termes simples, elle peut établir une association entre deux tables et faire fonctionner une table. À ce moment, les données d'une autre table changeront également simultanément.

Qu'est-ce que la clé étrangère MySQL

L'environnement d'exploitation de ce tutoriel : système Windows 10, version mysql8, ordinateur Dell G3.

Qu'est-ce que la clé étrangère MySQL ?

L'utilisation des clés étrangères Mysql

Les clés étrangères sont une chose très, très facile à utiliser, et elles sont également une fonction que possèdent de nombreuses bases de données relationnelles. c'est une relation qui peut être établie entre deux tables, de sorte que lorsqu'une table est utilisée, les données de l'autre table changent également simultanément.

Exemple :
一个学生表里面有学生的所有信息,其中有一个字段是班级id,又有一个班级表,记录着所有的班级信息,按照逻辑来说,如果我们删除了班级
表里面的某个班级,学生表里面是这个班级id的信息就应该修改。

L'exemple ci-dessus peut être complété normalement si nous utilisons d'abord un programme, puis modifions le champ d'identifiant de classe qui correspond aux informations sur l'étudiant de cette classe dans la table des étudiants. deux parties. Mais si nous utilisons des clés étrangères, cela ne prend qu'une seule étape. Tant qu'une des clés étrangères est associée, l'autre sera automatiquement mise à jour, cela est évidemment plus conforme au programme. C'est aussi plus simple

Détails avant utilisation
  1. Lors du choix d'un moteur de stockage pour la base de données, vous devez choisir un moteur de stockage qui s'adapte aux clés étrangères, comme le moteur de stockage par défaut de mysql innodb
  2. Les types de champs de clé étrangère associée les champs doivent être Pour être cohérent, si le class_id de la table student est de type int, alors le type de class_id de la table de classe doit également être de type int
Créez des contraintes de clé étrangère dans le. new table
	create table stu_study (
	  sid int primary key auto_increment,-- 定义Sid  
      sname varchar(15) not null,
      course_id int default null,  -- 定义课程id 课程id是外键所以要与关联的主表的字段类型保持一致
      constraint stu_study_class -- 一个表里可能有多个表之间关联,所以外键需要起一个名字
      foreign key (class_id) -- 关联的外键名
      references classes(id)  -- 关联的主表和主表的字段
      on delete cascade  -- 当删除的时候触发
    )engine=InnoDB default charset utf8  -- 默认存储引擎和编码的字符串

Quest-ce que la clé étrangère MySQL

Ajouter et supprimer des clés étrangères dans les tables existantes
  1. Supprimer les clés étrangères
    ···
    – Supprimer les clés étrangères (contraintes de clé étrangère)
    modifier la table stu_study drop clé étrangère stu_study_classes;
    ·· ·
    Quest-ce que la clé étrangère MySQL
    Pour supprimer une clé étrangère, supprimez-la en fonction du nom de la clé étrangère dans le tableau. Cela nous permet également indirectement de savoir que le nom de la clé étrangère ne peut pas être répété.
  2. Ajouter des clés étrangères
	-- 添加外键
  alter table stu_study add
  constraint stu_study_classes  -- 外键名 是一定不能够重复的,通常会用关联的两个表名进行命名
  foreign key(course_id)
  references classes(id)
  on delete cascade;

Quest-ce que la clé étrangère MySQL
L'ajout de clés étrangères à une table existante est très similaire à l'ajout de clés étrangères lors de la création d'une table. Un détail est qu'il doit utiliser la contrainte de nom de clé étrangère pour définir le nom de la clé étrangère. key.
Nous constaterons que l'ajout et la modification de clés étrangères sont très similaires à l'ajout et la modification de champs de table. Les mots-clés utilisés sont add, drop, etc.

Opérations des actions associées

Sous-table
Quest-ce que la clé étrangère MySQL
Table principale
. Quest-ce que la clé étrangère MySQL
Nous pouvons simplement comprendre le mot table et sous-table car la table avec le jeu de clés étrangères est la sous-table
Il existe de nombreux types d'actions liées, telles que cascade,set Nullno action Ces trois sont toutes définies lors de la définition de la clé étrangère, telles que comme
Quest-ce que la clé étrangère MySQL
signifie l'action effectuée lors de la suppression, les principales différences sont les suivantes :

  1. cascade 删除主表的某个字段的时候,子表含有这个字段的数据会被清空,这个还是属于相对危险的一个操作的
  2. +set null 删除主表的某个字段的时候,子表含有这个字段的这个哪一行的这个字段会用null来显示,但是有个细节就是设置外键的这个字段字段类型就不能设置为not null类型的,否则会报错
  3. no action 这个字段会比较有意思,也就是说当主表要删除某个行的时候,如果外键关联有含有这个主表的外键的字段数据的话,就不会删除成功,系统会直接报错
关联更新操作

之前是主要讲了关联删除,是因为外键在使用的时候关联删除操作是使用的比较频繁的,关联更新的频率是相对来说低一点儿的
关联更新的三个关联操作和删除时一样的,分别是cascade,set null,no action意思是也是一样的,主表某个字段更新了,子表也会更新那个字段!!,主表更新的某条数据,子表的使用的那个数据会变成空,和子表在使用的情况下,主表就不能够更新数据

	alter table stu_study drop foreign key stu_study_classes;  -- 删除外键
	-- 添加外键
	alter table stu_study add 
    constraint stu_study_classes 
    foreign key (course_id) 
    references classes(id) 
    on delete set null -- 一次性设置外键的两种动作
    on update cascade

Quest-ce que la clé étrangère MySQL
Quest-ce que la clé étrangère MySQL

总结
  • 数据库的外键是非常非常好用的一个技术,可以让我们快速的进行表之间的数据的更新
  • 外键可以简单的理解成会自动的替我们做一个数据变动的处理

推荐学习:《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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn