Heim  >  Artikel  >  Datenbank  >  So verwenden Sie Primärschlüssel und Fremdschlüssel in MySQL-Anweisungen

So verwenden Sie Primärschlüssel und Fremdschlüssel in MySQL-Anweisungen

WBOY
WBOYnach vorne
2023-06-03 12:14:022886Durchsuche

    1. Primärschlüssel:

    1.1) Primärschlüsselfelddefinition:

    Wenn in einer Datenbanktabelle eine Reihe von Feldern vorhanden ist, die einen Datensatz eindeutig bestimmen können, können diese als Primärschlüsselfelder von entworfen werden der Tisch.

    Beispiel: Wenn Sie die Informationstabelle einer Person erstellen möchten (Felder: Name, Alter, Herkunftsort, Arbeitseinheit...), dann ist die ID-Nummer die einzige, die Sie identifizieren kann, also die ID-Nummer Primärschlüssel.

    1.2) Erstellen:

    Primärschlüsselfeldname Primärschlüssel

    1.3) Prinzip der Primärschlüsselauswahl;

    Grundsätzlich wird ein Feld als Primärschlüssel verwendet, und es wird empfohlen, ein Feld ohne geschäftliche Bedeutung als zu verwenden der Primärschlüssel, wie zum Beispiel: ID usw.

    1.4) Wie der Primärschlüsselwert generiert wird:

    Der Typ und die Länge des Primärschlüsselfelds werden durch die Art und Weise bestimmt, wie der Primärschlüsselwert generiert wird:

    1.4.1)

    Auto-Inkrementierung: Mit Hilfe des datenbankeigenen Primärschlüsselgenerierungsmechanismus
    ​​​​ Numerische Länge Wird durch die Datenmenge bestimmt

    Erstellung: Primärschlüsselfeldname Primärschlüssel nicht null auto_increment

    Eigenschaften:

    Vorteile: Hohe Entwicklungseffizienz, da automatisch möglich Es ist nummeriert und zum einfachen Auffinden gespeichert. Es nimmt wenig Platz ein und kann Entwicklern Zeit sparen.

    Nachteile: Geringe Betriebseffizienz und Inflexibilität. Aufgrund des automatischen Wachstums ist es schwierig, Daten mit einer bestimmten ID manuell einzufügen oder zu importieren. Wenn die Datenmenge zu groß ist, dauert es länger, bis die Datenbank automatisch vergrößert wird Der Primärschlüssel führt dazu, dass Datenbankabfragevorgänge langsamer werden. Bei einer Operation zum Zusammenführen von Tabellen besteht die Wahrscheinlichkeit, dass der Primärschlüssel dupliziert wird.

    1.4.2)

    assighed: Der Programmierer generiert manuell den Primärschlüsselwert, den einzigen Nicht-Null-Algorithmus.
    hi/low: Die Länge des numerischen Typs wird durch die Datenmenge bestimmt.
    UUID: Die Zeichenfolge Die Länge beträgt 32 Bit.

    public class UUIDUtil {//java中自带UUID的算法
        public static  String getUUID(){
            return UUID.randomUUID().toString().replaceAll("-", "");
        }
    }

    Eigenschaften:

    Vorteile: Die Generierung des Primärschlüsselwerts ist sehr flexibel und kann unter allen Umständen Eindeutigkeit gewährleisten, und die Datenmigration ist bequem.                                                                                                                                                        Nachteile: Es nimmt viel Platz ein, ist schwer zu merken und verringert die Leistung.

    1.4.4)

    Gemeinsamer Primärschlüssel: Wird durch die Art und Länge mehrerer Felder bestimmt

    2. Fremdschlüssel:

    2.1) Fremdschlüsseldefinition:

    Wird normalerweise zum Herstellen einer Beziehung zwischen zwei Tabellen verwendet. Der Hauptzweck von Fremdschlüsseln besteht darin, die Datenintegrität zwischen zwei unabhängigen Instanzen einer Entität aufrechtzuerhalten.

    2.2) Erstellung von Fremdschlüsseln (Einschränkungen) (nicht empfohlen, im Allgemeinen keine Fremdschlüsseleinschränkungen, nur Fremdschlüsselkonventionen):

    Name der Alarmtabelle, Primärschlüsseltabelle, Einschränkung hinzufügen, FK_ID (Fremdschlüsselname), Fremdschlüsselname (Fremdschlüsselfeld). ) verweist auf den Namen der Fremdtabelle (Primärschlüsselfeldname)

    2.3) Das Vorkommen von Fremdschlüsseln:

    Ergänzung:

    Beim Erstellen einer Tabelle können zu diesem Zeitpunkt Geschäftsbeziehungen (Assoziationsbeziehungen) zwischen den Tabellen bestehen generiert werden.


    Beziehungstypen, die in Assoziationsbeziehungen existieren:

    1 zu 1: Ein Datensatz in einer Tabelle (A) kann nur einem Datensatz in einer anderen Tabelle (B) entsprechen, und der andere Datensatz in der anderen Tabelle (B) einem Datensatz kann nur einem Datensatz in einer Tabelle (A) entsprechen.

                  z. B.: Software Engineering 2777 Klassen- und Gruppenleiter, Staatsbürgerschaft und Personalausweis. (Produkttabelle und Beschreibungstabelle des Produkts)

    1 zu viele: Ein Datensatz in einer Tabelle (A) kann mehreren Datensätzen in einer anderen Tabelle (B) entsprechen. Ein Datensatz kann nur einem Datensatz in einer Tabelle (A) entsprechen. .

                                                                                            -Viele-Beziehung. Es kann mehrere Waren, Studenten und Klassen unter einer Produktkategorie geben

    Viele-zu-viele: (Es gibt zwei Tabellen, ein Datenelement in Tabelle A entspricht B Mehrere Einträge in der Tabelle, gleichzeitig entspricht ein Eintrag in Tabelle B mehreren Einträgen in Tabelle A)

                    z. B.: Kundentabelle und Abteilungstabelle.

    Verwandte Abfragen (Daten in mehreren Tabellen gleichzeitig mit Fremdschlüsseln abfragen)

    Arten verwandter Abfragen:

    Innerer Join: Fragen Sie alle Daten ab, die die Bedingungen erfüllen, und erfordern Sie, dass die Ergebnisse entsprechende Datensätze in beiden Tabellen haben.

    Linker äußerer Verbindung: Alle qualifizierten Daten in der linken Tabelle abfragen, auch wenn in der rechten Tabelle kein entsprechender Datensatz vorhanden ist.

    Rechter äußerer Join: Alle qualifizierten Daten in der rechten Tabelle abfragen, auch wenn in der linken Tabelle kein entsprechender Datensatz vorhanden ist. 2.3.1) In eins-zu-viele:

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

    Es gibt entsprechende Datensätze in der Tabelle, die innere Verknüpfungen verwenden. Wenn Sie alle passenden Datensätze der linken Tabelle abrufen möchten, können Sie eine Left-Outer-Join-Abfrage verwenden

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

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

    So verwenden Sie Primärschlüssel und Fremdschlüssel in MySQL-Anweisungen

    Das obige ist der detaillierte Inhalt vonSo verwenden Sie Primärschlüssel und Fremdschlüssel in MySQL-Anweisungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen