Maison > Article > base de données > Comment utiliser les clés primaires et les clés étrangères dans les instructions MySQL
Dans une table de base de données, s'il existe un ensemble de champs qui peuvent déterminer de manière unique un enregistrement, ils peuvent être conçus comme les champs de clé primaire de le tableau.
Exemple : Si vous souhaitez créer un tableau d'informations sur une personne (champs : nom, âge, lieu d'origine, unité de travail...), alors le numéro d'identification est le seul qui puisse vous identifier, le numéro d'identification est donc Clé primaire.
Clé primaire du nom du champ de clé primaire
En principe, utilisez un champ comme clé primaire, et il est recommandé d'utiliser un champ sans signification commerciale comme la clé primaire, telle que : id, etc.
Le type et la longueur du champ de la clé primaire sont déterminés par la manière dont la valeur de la clé primaire est générée :
1.4.1)
Incrément automatique : à l'aide de le mécanisme de génération de clé primaire de la base de données
Longueur numérique Déterminée par la quantité de données
Création : nom du champ de clé primaire clé primaire non nulle auto_increment
Caractéristiques :
Avantages : Haute efficacité de développement car elle peut être automatiquement numérotée et stocké pour une récupération facile. Il prend peu de place et peut faire gagner du temps aux développeurs.
Inconvénients : faible efficacité opérationnelle et manque de flexibilité. En raison de sa croissance automatique, il sera difficile d'insérer ou d'importer manuellement des données avec un identifiant spécifié. Si la quantité de données est trop importante, l'augmentation automatique de la base de données prendra plus de temps. la clé primaire. Cela entraîne un ralentissement des opérations de requête de base de données. S'il y a une opération de fusion de tables, il existe une probabilité que la clé primaire soit dupliquée.
1.4.2)
assighed : Le programmeur génère manuellement la valeur de la clé primaire, le seul algorithme non nul
hi/low : La longueur du type numérique est déterminée par la quantité de données
UUID : La chaîne. la longueur est de 32 bits
public class UUIDUtil {//java中自带UUID的算法 public static String getUUID(){ return UUID.randomUUID().toString().replaceAll("-", ""); } }
Caractéristiques :
Avantages : La génération de valeur de clé primaire est très flexible et peut garantir l'unicité en toutes circonstances, et la migration des données est pratique. Inconvénients : cela prend beaucoup de place, est difficile à mémoriser et réduira les performances.
1.4.4)
Clé primaire commune : Déterminée par le type et la longueur de plusieurs champs
2. Clé étrangère :
2.2) Création de clé étrangère (contrainte) (non recommandée, généralement pas de contraintes de clé étrangère, uniquement des conventions de clé étrangère) :
2.3) L'occurrence des clés étrangères :
Types de relations qui existent dans les relations d'association :
1 à 1 : Un enregistrement dans une table (A) ne peut correspondre qu'à un enregistrement dans une autre table (B), et l'autre enregistrement dans l'autre table (B) Un enregistrement ne peut correspondre qu’à un seul enregistrement dans une table (A).
Classe 2777, chef de classe et d'équipe, citoyenneté et carte d'identité. (Tableau produit et tableau de description du produit)
1-à-plusieurs : Un enregistrement dans une table (A) peut correspondre à plusieurs enregistrements dans une autre table (B). Un enregistrement ne peut correspondre qu'à un enregistrement dans une table (). UN).
relation multiple. Il peut y avoir plusieurs biens, étudiants et classes sous une même catégorie de produits
Plusieurs-à-plusieurs : (Il y a deux tableaux, une donnée dans le tableau A correspond à B Plusieurs entrées dans le tableau, en même temps, une entrée dans le tableau B correspond à plusieurs entrées dans le tableau A)
ex : table clients et table département.
Requêtes associées (interroger des données dans plusieurs tables simultanément à l'aide de clés étrangères)
Types de requêtes associées :
Jointure interne : interrogez toutes les données qui remplissent les conditions et exigez que les résultats aient des enregistrements correspondants dans les deux tables
Externe gauche Connexion : Interrogez toutes les données qualifiées dans la table de gauche, même s'il n'y a pas d'enregistrement correspondant dans la table de droite
Jointure externe droite : Interrogez toutes les données qualifiées dans la table de droite, même s'il n'y a aucun enregistrement correspondant dans la table de gauche Records. 2.3.1) En un-à-plusieurs :
Exemple : A (1) ---------- b (n)
Father WatchTBL_STUDENT TBL_CLASS
ID NAME CLASS_ID ID Name 1001 zs 111 111 class1
1002 ls 111 222 class2
1003 ww 222
1004 zl
//查询所有姓张的学生的id,name和所在班级name select s.id,s.name,c.name as className from tbl_student s join tbl_class c on s.class_id=c.id//假如外键不可以为空 where s.name like 'z%'
2.3.2)在一对一中:
tbl_person tbl_card
id name id name
1001 zs 1001 card1
特点:
a)共享主键:(不推荐)
添加数据:先添加先产生的表,再后产生的表记录
删除数据:先删除后产生的表记录,再删除先产生的表记录
查询数据:无需进行连接查询:
//查询zhangsan的驾照信息 1001 select * from tbl_card where id='1001'
2.3.3)多对多:
tbl_student tbl_course
id name id name
1001 zs 111 java
1002 ls 222 mysql
tbl_student_course_relation
student_id course_id
1001 111
1001 222
1002 111
1002 222
特点:
添加数据时,先添加父表记录(tbl_student,tbl_course),再添加子表(tbl_student_course_relation)记录;
删除数据时,先删除子表记录(tbl_student_course_relation),再删除父表记录(tbl_student,tbl_course)
查询数据时,可能会进行关联查询:
//查询所有姓张的学生的id,name,和所选课程的name select s.id,s.name,c.name as courseName from tbl_student s join tbl_student_course_relation scr on s.id=scr.student_id join tbl_course c on scr.course_id=c.id where s.name like 'z%'
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!