關於Mysql外來鍵從新學習

2022-09-14 21:24:29 字數 1521 閱讀 3148

參考:

說實話,這是乙個抄剩飯的文件。

因為考試。

在實際開發中,可能用外來鍵的情況不多,至少我設計我自己的專案是不會用外來鍵。用了後,資料不自由了。當然,如果表設計後,給資料表加上外來鍵,可能是一種不錯的選擇,但,自己的專案還是不會使用外來鍵來約束自己的資料。至少我在**中,做到部分的資料約束。

innodb,如果引擎不是innodb是無法新增外來鍵的。我試了,乙個小時,看了很多文件,然後51jb的**乙個文章講了關於innodb,必須是innodb,否則外來鍵的設定會失效。(雖然那個csdn的博文也講了,但我確實試了乙個小時,總以為是我的**的問題)

建表

create table class(

id int primary key auto_increment,

cname varchar(20) not null

)engine = innodb default charset=utf8;

create table student(

id int primary key auto_increment,

sname varchar(20) not null,

cid int not null,

constraint stu_f_key foreign key (cid) references class(id) on update cascade

)engine = innodb default charset=utf8;

# 插入資料

insert into class(cname) values('計應1班'),('計應2班');

insert into student(sname,cid) values('小皮',1),('小王',2);

操作因為使用了on update cascade

使用,我們修改class的id,相應的student的cid也會改變

關於on delete cascade

on delete ***,on update *** 屬於級聯操作,使用on delete時候要小心,因為如果使用on delete cascade ,如果刪了class的例項,則會刪除student的例項。

on delete set null。當外來鍵所約束的例項被刪除時,將當前例項的所有字段值設定為空。

其實用級聯很少,總是聽別人說影響效率,當然,資料小的時候,不會出什麼問題。如果資料大了,則需要優化資料庫和查詢語句。(不過這些目前我都沒有學)。

mysql關於外來鍵設定

今天在設計酒店管理系統時走了很多彎路 1.mysql使用的預設資料庫引擎myisam並不能很好支援外來鍵,事務等操作,外來鍵總是設定不上,需要將引擎改為innodb,這個是最完善支援各種sql操作的。engine innodb 2.在最初設計資料庫是就應當把所有關係想好,確認關係正確再去生成資料庫,...

關於MySQL 外來鍵索引

1 什麼時候需要用到外來鍵索引呢?答 a表中存在唯一索引id a,b表中的字段包含id a,由於b表自身已經有主鍵索引,此時如果將字段id a設定為外來鍵索引索引 foreign key 則建立外來鍵索引。使用場景 1 父表更新時,子表也更新 父表刪除時,如果 2 子表有匹配的項,則刪除失敗。3 父...

mysql書外來鍵 MySQL學習5 外來鍵續

一對多補充 級聯刪除 當一張表刪除記錄時,若繫結給了另一張表中的外來鍵,則一同刪除另一張表中關聯的記錄 更新於刪除都需要考慮到關聯與被關聯的關係 同步更新與同步刪除 被關聯表 create table dep id int primary key auto increment,dep name ch...