Maison  >  Article  >  base de données  >  Comment utiliser les clés primaires et les clés étrangères dans les instructions MySQL

Comment utiliser les clés primaires et les clés étrangères dans les instructions MySQL

WBOY
WBOYavant
2023-06-03 12:14:022951parcourir

    1. Clé primaire :

    1.1) Définition du champ de clé primaire :

    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.

    1.2) Créer :

    Clé primaire du nom du champ de clé primaire

    1.3) Principe de sélection de la 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.

    1.4) Comment la valeur de la clé primaire est générée :

    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.1) Définition de clé étrangère :

    Habituellement utilisée pour établir une relation entre deux tables. L'objectif principal des clés étrangères est de maintenir l'intégrité des données entre deux instances indépendantes d'une entité.

    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) :

    table d'alerte nom de la table de clé primaire ajouter une contrainte FK_ID (nom de clé étrangère) nom de clé étrangère (champ de clé étrangère) ) fait référence au nom de la table étrangère (nom du champ de clé primaire)

    2.3) L'occurrence des clés étrangères :

    Supplément :

    Lors de la création d'une table, il peut y avoir des relations commerciales (relations d'association) entre les tables. être généré.


    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 Watch

    TBL_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%'

    Il y a des enregistrements correspondants dans la table, utilisant des jointures internes. Si vous souhaitez récupérer tous les enregistrements correspondants de la table de gauche, vous pouvez utiliser une requête de jointure externe gauche

     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%'

    三.主键和外键的区别总结:

    Comment utiliser les clés primaires et les clés étrangères dans les instructions 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:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer