ホームページ > データベース > mysql チュートリアル > MySQLでテーブルを作成するときに外部キーを設定するにはどうすればよいですか?

MySQLでテーブルを作成するときに外部キーを設定するにはどうすればよいですか?

青灯夜游
リリース: 2020-10-07 12:15:15
オリジナル
23077 人が閲覧しました

テーブル作成時に外部キーを設定する Mysql メソッド: "CREATE TABLE" ステートメントで、"[CONSTRAINT >] FOREIGN KEY フィールド名 [, フィールド名 2,...] を渡します。 REFERENCES 」主キー列 1 [,主キー列 2,...]」ステートメントの設定。

MySQLでテーブルを作成するときに外部キーを設定するにはどうすればよいですか?

MySQL 外部キー制約 (FOREIGN KEY) はテーブルの特別なフィールドであり、多くの場合主キー制約と一緒に使用されます。関連付けられた 2 つのテーブルの場合、関連付けられたフィールドの主キーが配置されているテーブルが主テーブル (親テーブル) となり、外部キーが配置されているテーブルが副テーブル (子テーブル) になります。

テーブルの作成時に外部キー制約を設定する

CREATE TABLE ステートメントで、FOREIGN KEY キーワードを使用して外部キーを指定します。構文形式は次のとおりです。

[CONSTRAINT <外键名>] FOREIGN KEY 字段名 [,字段名2,…]
REFERENCES <主表名> 主键列1 [,主键列2,…]
ログイン後にコピー

Example

テーブル間の外部キー関係を示すために、この例では、test_db データベースに部門テーブル tb_dept1 を作成します。構造は下表の通りです。

#フィールド名データ型備考idnamelocationtb_dept1 を作成する SQL ステートメントと実行結果は次のとおりです。以下のように表示します。
# #INT(11)部門番号
VARCHAR(22)部門名
VARCHAR(22)部門の場所
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)
ログイン後にコピー

データ テーブル tb_emp6 を作成し、テーブル tb_emp6 に外部キー制約を作成して、そのキー deptId が外部キーとしてテーブル tb_dept1 の主キー ID に関連付けられるようにします。SQL ステートメントと実行中結果は以下の通り。

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)
ログイン後にコピー

上記のステートメントが正常に実行されると、fk_emp_dept1 という名前の外部キー制約がテーブル tb_emp6 に追加されます。外部キー名は deptId で、テーブル tb_dept1 の主キー ID に依存します。

注: セカンダリ テーブルの外部キーはプライマリ テーブルの主キーに関連している必要があり、主キーと外部キーのデータ型は一貫している必要があります。たとえば、両方とも INT 型であるか、両方とも CHAR 型です。このような要件が満たされていない場合、スレーブ テーブルの作成時に「ERROR 1005 (HY000): Can't create table」エラーが発生します。

推奨チュートリアル:

mysql ビデオ チュートリアル

以上がMySQLでテーブルを作成するときに外部キーを設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート