最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL中外鍵的創(chuàng)建、約束以及刪除

 更新時間:2021年01月17日 09:14:39   作者:Spike Bo  
這篇文章主要給大家介紹了關于MySQL中外鍵的創(chuàng)建、約束以及刪除的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

在MySQL 3.23.44版本后,InnoDB引擎類型的表支持了外鍵約束。

外鍵的使用條件:

1.兩個表必須是InnoDB表,MyISAM表暫時不支持外鍵(據(jù)說以后的版本有可能支持,但至少目前不支持);

2.外鍵列必須建立了索引,MySQL 4.1.2以后的版本在建立外鍵時會自動創(chuàng)建索引,但如果在較早的版本則需要顯示建立;

3.外鍵關系的兩個表的列必須是數(shù)據(jù)類型相似,也就是可以相互轉(zhuǎn)換類型的列,比如int和tinyint可以,而int和char則不可以;

外鍵的好處:可以使得兩張表關聯(lián),保證數(shù)據(jù)的一致性和實現(xiàn)一些級聯(lián)操作;

一、外鍵的創(chuàng)建

語法一:后續(xù)添加方法

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;

語法二:創(chuàng)建表的方法

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;

一個額外點:

SHOW CREATE TABLE class

可以查詢表的建表信息

在這里插入圖片描述

CREATE TABLE `class` (
 `cls_id` int NOT NULL,
 `cls_name` varchar(15) NOT NULL,
 PRIMARY KEY (`cls_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

下面的演示我們就使用剛剛創(chuàng)建的這個學生表和班級表

內(nèi)容如下

在這里插入圖片描述

在這里插入圖片描述

二,關于四種約束方式

在父表上進行update/delete操作時,子表的操作類型

  1. CASCADE 子表會刪除包含與已刪除鍵值有參照關系的所有數(shù)據(jù)
  2. SET NULL 父表delete、update的時候,子表會將關聯(lián)記錄的外鍵字段所在列設為null
  3. RESTRICT 拒絕有關聯(lián)關系的字段的刪除要求(這是默認設置,也是最安全的設置)
  4. NO ACTION 和RESTRICT 類似

以我們剛剛設置的外鍵為例(on update cascade on delete no action)

當我們嘗試進行刪除操作時

delete from class WHERE cls_id=1

結(jié)果如下

在這里插入圖片描述

可以看到由于外鍵約束中on delete no action的存在,不允許對主表進行刪除操作。但是子表可以

delete from student WHERE cls_id=1

在這里插入圖片描述

當我們對父表的關聯(lián)鍵進行更新操作時,由于on update cascade的存在,可以正常更新

UPDATE class set cls_id=4 where cls_id=1

在這里插入圖片描述

并且隨著主表的更新,子表中的外鍵字段也進行了更新

在這里插入圖片描述

三,刪除外鍵的方法

alter table 子表名 drop foreign key 外鍵約束名
alter table student drop foreign key fk_class_student

當我們將外鍵刪除之后,父表的操作就變得可以正常進行了

在這里插入圖片描述

總結(jié)

到此這篇關于MySQL中外鍵創(chuàng)建、約束以及刪除的文章就介紹到這了,更多相關MySQL外鍵創(chuàng)建、約束及刪除內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

赣州市| 尼木县| 周宁县| 于田县| 苍梧县| 临朐县| 萝北县| 高密市| 公安县| 江川县| 英超| 罗田县| 肃北| 山东| 瓦房店市| 西吉县| 临安市| 古浪县| 泸州市| 宁海县| 湾仔区| 北流市| 山东省| 石台县| 承德市| 洛浦县| 崇义县| 浏阳市| 贺州市| 山西省| 宣武区| 普定县| 新泰市| 白河县| 深泽县| 如东县| 巫山县| 胶州市| 南丰县| 黄冈市| 雅江县|