mysqlに外部キーを追加する方法は何ですか

清浅
リリース: 2020-09-15 11:49:44
オリジナル
28690 人が閲覧しました

Mysql で外部キーを追加するメソッドは次のとおりです: 属性値の直後に追加、SQL ステートメントの最後に追加、fk を使用してテーブル作成後に外部キーを追加

mysqlに外部キーを追加する方法は何ですか

関連する学習の推奨事項: mysql チュートリアル

mysql に外部キーを追加する 4 つの方法

Createメインテーブル: Class

CREATE TABLE class(cid INT PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(15) NOT NULL)
INSERT INTO class VALUES(NULL,'六年级一班')
INSERT INTO class VALUES(NULL,'六年级二班')
ログイン後にコピー

最初のメソッド: 属性値の直後に

CREATE TABLE student(sid INT AUTO_INCREMENT,
sname VARCHAR(10) NOT NULL,
s_cid INT REFERENCES class(cid),
PRIMARY KEY(sid)
);
ログイン後にコピー

を追加//テスト用のデータを追加

INSERT INTO student VALUES(NULL,'王大锤',2)
INSERT INTO student VALUES(NULL,'胡汉三',3)    //约束不生效,原因待查
INSERT INTO student VALUES(NULL,'卧槽',4)     //不敢相信,在测试一次
ログイン後にコピー

この方法、理由はわかりませんが、テストに追加されました何ということですか?オンラインの Baidu では結果が得られず、自習グループでも回答がありませんでした。今はここに残しておきます

2 番目のタイプ: 2. SQL ステートメントの最後に を追加します

CREATE TABLE student(
sid INT AUTO_INCREMENT,
sname VARCHAR(10),
s_cid INT,
PRIMARY KEY(sid),
FOREIGN KEY (s_cid) REFERENCES class(cid)
);
ログイン後にコピー

//データを挿入してテストします

INSERT INTO student VALUES(NULL,'王大锤',2)
INSERT INTO student VALUES(NULL,'胡汉三',3)   //约束生效  插入失败
ログイン後にコピー

外部キー制約が有効になります

# #3 番目の方法: fk

CREATE TABLE student(sid INT AUTO_INCREMENT,
sname VARCHAR(10) NOT NULL,
s_cid INT ,
PRIMARY KEY(sid),
CONSTRAINT fk_student_class FOREIGN KEY(s_cid) REFERENCES class(cid)
);
ログイン後にコピー
INSERT INTO student VALUES(NULL,'王大锤',2)
INSERT INTO student VALUES(NULL,'胡汉三',3)  //约束生效  插入失败
ログイン後にコピー

を使用する

4 番目の方法: テーブルの作成後に外部キーを追加する

CREATE TABLE student(sid INT AUTO_INCREMENT,
sname VARCHAR(10) NOT NULL,
s_cid INT ,
PRIMARY KEY(sid)
);
ログイン後にコピー

//外部キー制約を追加する:

ALTER TABLE student ADD FOREIGN KEY (s_cid) REFERENCES class(cid);
ログイン後にコピー

//テスト

INSERT INTO student VALUES(NULL,'王大锤',2)
INSERT INTO student VALUES(NULL,'胡汉三',3)  //约束生效   插入失败
ログイン後にコピー

以上がmysqlに外部キーを追加する方法は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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