校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > MySQL中外鍵的創建、約束以及刪除

MySQL中外鍵的創建、約束以及刪除

熱門標簽:怎樣在地圖標注銷售區域 啥是企業400電話辦理 南昌三維地圖標注 外呼系統打電話上限是多少 地圖標注費用是多少 百應電話機器人優勢 武漢網絡外呼系統服務商 曲靖移動外呼系統公司 電話外呼系統改號

前言

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

外鍵的使用條件:

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

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

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

外鍵的好處:可以使得兩張表關聯,保證數據的一致性和實現一些級聯操作;

一、外鍵的創建

語法一:后續添加方法

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;

語法二:創建表的方法

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

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

內容如下

二,關于四種約束方式

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

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

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

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

delete from class WHERE cls_id=1

結果如下

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

delete from student WHERE cls_id=1

當我們對父表的關聯鍵進行更新操作時,由于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

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

總結

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

您可能感興趣的文章:
  • MySQL非空約束(not null)案例講解
  • MySQL外鍵約束(FOREIGN KEY)案例講解
  • MySQL 外鍵約束和表關系相關總結
  • MySQL完整性約束的定義與實例教程
  • MySQL 8.0新特性 — 檢查性約束的使用簡介
  • Mysql中索引和約束的示例語句
  • MySQL外鍵約束的實例講解
  • 詳解MySQL 外鍵約束
  • mysql完整性約束實例詳解
  • MySQL約束超詳解

標簽:荊州 吉林 錦州 甘南 滄州 隨州 資陽 黑河

巨人網絡通訊聲明:本文標題《MySQL中外鍵的創建、約束以及刪除》,本文關鍵詞  MySQL,中外,鍵,的,創建,約束,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL中外鍵的創建、約束以及刪除》相關的同類信息!
  • 本頁收集關于MySQL中外鍵的創建、約束以及刪除的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 礼泉县| 华亭县| 太仆寺旗| 永定县| 茶陵县| 加查县| 隆昌县| 长岛县| 宜宾市| 桑植县| 龙海市| 宁陵县| 留坝县| 固始县| 色达县| 剑河县| 乳山市| 新乡市| 德州市| 高台县| 温泉县| 洮南市| 邛崃市| 海安县| 唐海县| 沿河| 册亨县| 平塘县| 余江县| 定陶县| 志丹县| 于都县| 内江市| 威海市| 宜宾县| 永福县| 如东县| 青河县| 泾阳县| 西林县| 洛隆县|