Heim  >  Artikel  >  Datenbank  >  Wie lege ich beim Erstellen einer Tabelle in MySQL Fremdschlüssel fest?

Wie lege ich beim Erstellen einer Tabelle in MySQL Fremdschlüssel fest?

青灯夜游
青灯夜游Original
2020-10-07 12:15:1523016Durchsuche

So legen Sie Fremdschlüssel beim Erstellen einer MySQL-Tabelle fest: Übergeben Sie in der Anweisung „CREATE TABLE“ „[CONSTRAINT c16ba48e6c2c64afb5373e74eef78613] FOREIGN KEY field name [, field name 2,...] REFERENCES d0be32966218866385f5a6bbced41c7a Primärschlüsselspalte 1 [, Primärschlüsselspalte 2,…]“-Anweisungseinstellung.

Wie lege ich beim Erstellen einer Tabelle in MySQL Fremdschlüssel fest?

MySQL-Fremdschlüsseleinschränkung (FOREIGN KEY) ist ein spezielles Feld der Tabelle, das häufig zusammen mit Primärschlüsseleinschränkungen verwendet wird. Bei zwei Tabellen mit einer zugehörigen Beziehung ist die Tabelle, in der sich der Primärschlüssel im zugehörigen Feld befindet, die Primärtabelle (übergeordnete Tabelle) und die Tabelle, in der sich der Fremdschlüssel befindet, die sekundäre Tabelle (untergeordnete Tabelle).

Festlegen von Fremdschlüsseleinschränkungen beim Erstellen der Tabelle

Geben Sie in der CREATE TABLE-Anweisung den Fremdschlüssel über das Schlüsselwort FOREIGN KEY an. Das spezifische Syntaxformat lautet wie folgt:

[CONSTRAINT <外键名>] FOREIGN KEY 字段名 [,字段名2,…]
REFERENCES <主表名> 主键列1 [,主键列2,…]

Beispiel

In der Reihenfolge um die Tabellen- und Fremdschlüsselbeziehungen zwischen Tabellen anzuzeigen. In diesem Beispiel wird eine Abteilungstabelle tb_dept1 in der Datenbank test_db erstellt.

Feldname Datentyp Bemerkungen
id INT(11) Abteilungsnummer
Name VARCHAR(22) Abteilungsname
Standort VARCHAR(22) Abteilungsort

Die SQL-Anweisung zum Erstellen von tb_dept1 und die laufenden Ergebnisse lauten wie folgt.

mysql> CREATE TABLE tb_dept1
    -> (
    -> id INT(11) PRIMARY KEY,
    -> name VARCHAR(22) NOT NULL,
    -> location VARCHAR(50)
    -> );
Query OK, 0 rows affected (0.37 sec)

Erstellen Sie die Datentabelle tb_emp6 und erstellen Sie eine Fremdschlüsseleinschränkung für die Tabelle tb_emp6, sodass ihre Schlüssel-Abteilungs-ID mit der Primärschlüssel-ID der Tabelle tb_dept1 als Fremdschlüssel verknüpft ist. Die SQL-Anweisung und die Ausführungsergebnisse lauten wie folgt .

mysql> CREATE TABLE tb_emp6
    -> (
    -> id INT(11) PRIMARY KEY,
    -> name VARCHAR(25),
    -> deptId INT(11),
    -> salary FLOAT,
    -> CONSTRAINT fk_emp_dept1
    -> FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
    -> );
Query OK, 0 rows affected (0.37 sec)

mysql> DESC tb_emp6;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int(11)     | NO   | PRI | NULL    |       |
| name   | varchar(25) | YES  |     | NULL    |       |
| deptId | int(11)     | YES  | MUL | NULL    |       |
| salary | float       | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
4 rows in set (1.33 sec)

Nachdem die obige Anweisung erfolgreich ausgeführt wurde, wird eine Fremdschlüsseleinschränkung mit dem Namen fk_emp_dept1 zur Tabelle tb_emp6 hinzugefügt. Der Fremdschlüsselname ist deptId, der von der Primärschlüssel-ID der Tabelle tb_dept1 abhängt.

Hinweis: Der Fremdschlüssel der Sekundärtabelle muss mit dem Primärschlüssel der Primärtabelle verknüpft sein und die Datentypen des Primärschlüssels und des Fremdschlüssels müssen konsistent sein. Beispielsweise sind beide vom Typ INT oder beide vom Typ CHAR. Wenn diese Anforderungen nicht erfüllt sind, tritt beim Erstellen der Slave-Tabelle der Fehler „ERROR 1005 (HY000): Tabelle kann nicht erstellt werden“ auf.

Empfohlenes Tutorial: MySQL-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWie lege ich beim Erstellen einer Tabelle in MySQL Fremdschlüssel fest?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn