mysql外键约束创建及删除_MySQL中的外键的创建,约束和删除
一、外鍵的創建
語法一:后續添加方法
alter table 表名 add constraint 約束名 foreign key(當前表中約束的字段) references 主表表名(要約束的字段名);
alter table student add constraint fk_class_student foreign key(cls_id) class(cls_id) on update cascade on delete no action;1
2
語法二:創建表的方法
CREATE TABLE student(
sid int PRIMARY KEY,
cls_id int not null,
sname varchar(10) not null,
constraint fk_class_student foreign key(cls_id) references class(cls_id) on update cascade on delete no action
)ENGINE=InnoDB DEFAULT CHARSET=utf8;1
2
3
4
5
6
一個額外點:
SHOW CREATE TABLE class1
可以查詢表的建表信息
CREATE TABLE `class` (
`cls_id` int NOT NULL,
`cls_name` varchar(15) NOT NULL,
PRIMARY KEY (`cls_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf81
2
3
4
5
下面的演示我們就使用剛剛創建的這個學生表和班級表
內容如下
二,關于四種約束方式
在父表上進行update/delete操作時,子表的操作類型
CASCADE ??? 子表會刪除包含與已刪除鍵值有參照關系的所有數據
SET NULL ??? 父表delete、update的時候,子表會將關聯記錄的外鍵字段所在列設為null
RESTRICT ??? 拒絕有關聯關系的字段的刪除要求(這是默認設置,也是最安全的設置)
NO ACTION ??? 和RESTRICT 類似
以我們剛剛設置的外鍵為例(on update cascade on delete no action)
當我們嘗試進行刪除操作時
delete from class WHERE cls_id=11
結果如下
可以看到由于外鍵約束中on delete no action的存在,不允許對主表進行刪除操作。但是子表可以
delete from student WHERE cls_id=11
當我們對父表的關聯鍵進行更新操作時,由于on update cascade的存在,可以正常更新
UPDATE class set cls_id=4 where cls_id=11
并且隨著主表的更新,子表中的外鍵字段也進行了更新
三,刪除外鍵的方法
alter table 子表名 drop foreign key 外鍵約束名
alter table student drop foreign key fk_class_student1
2
當我們將外鍵刪除之后,父表的操作就變得可以正常進行了
文章來源: blog.csdn.net,作者:Spike Bo,版權歸原作者所有,如需轉載,請聯系作者。
原文鏈接:blog.csdn.net/m0_51709303/article/details/112589209
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的mysql外键约束创建及删除_MySQL中的外键的创建,约束和删除的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下mysql案例_Linux下
- 下一篇: mysql+误操作怎么恢复_MySQL