中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL創建數據表并建立主外鍵關系詳解

發布時間:2020-09-29 02:43:07 來源:腳本之家 閱讀:288 作者:Brambling 欄目:MySQL數據庫

前言

mysql數據表建立主外鍵需要注意以下幾點:

  • 需要建立主外鍵關系的兩個表的存儲引擎必須是InnoDB。
  • 外鍵列和參照列必須具有相似的數據類型,即可以隱式轉換的數據類型。
  • 外鍵列和參照列必須創建索引,如果外鍵列不存在索引,mysql將自動創建索引。

一、SQL語句創建數據表并設置主外鍵關系

create table demo.ChineseCharInfo
(
ID int not null auto_increment,
Hanzi varchar(10) not null,
primary key (ID)
)
engine=innodb auto_increment=1 default charset=utf8 collate=utf8_general_ci;
create table demo.ChinesePinyinInfo
(
ID int not null auto_increment,
CharID int null,
Pinyin varchar(10) null,
Tone tinyint unsigned null,
primary key (ID),
-- 方式一:不指定外鍵名稱,數據庫自動生成
foreign key (CharID) references ChineseCharInfo(ID) on delete cascade on update cascade 
-- 方式二:指定外鍵名稱為(FK_Name)
-- constraint FK_Name foreign key (CharID) references ChineseCharInfo(ID) on delete cascade on update cascade 
)
engine=innodb auto_increment=1 default charset=utf8 collate=utf8_general_ci;

二、當數據表已經存在時,就要使用下面的方法建立主外鍵關系

-- 為表(demo.ChinesePinyinInfo)中字段(CharID)添加外鍵,并指定外鍵名為(FK_Name)
alter table demo.ChinesePinyinInfo add constraint FK_Name foreign key (CharID) references ChineseCharInfo(ID);
-- 為表(demo.ChinesePinyinInfo)中字段(CharID)添加外鍵,不指定外鍵名,由數據庫自動生成外鍵名
alter table demo.ChinesePinyinInfo add foreign key (CharID) references ChineseCharInfo(ID);

三、刪除主外鍵約束

-- 通過修改列的屬性來刪除自增長,第一個(ID)為原列名,第二個(ID)為新列名
alter table demo.ChinesePinyinInfo change ID ID int not null;
-- 刪除表(demo.ChinesePinyinInfo)中的主鍵約束,如果主鍵列為自增列,則需要先刪除該列的自增長
alter table demo.ChinesePinyinInfo drop primary key;
-- 刪除表(demo.ChinesePinyinInfo)中的名稱為(FK_Name)的外鍵
alter table demo.ChinesePinyinInfo drop foreign key FK_Name;

 四、主外鍵關系的約束

如果子表試圖創建一個在主表中不存在的外鍵值,數據庫會拒絕任何insert或update操作。

如果主表試圖update或者delete任何子表中存在或匹配的外鍵值,最終動作取決于外鍵約束定義中的on delete和on update選項。

on delete和on update都有下面四種動作。

  • cascade:主表刪除或更新相應的數據行,則子表同時刪除或更新與主表相匹配的行,即級聯刪除、更新。
  • set null:主表刪除或更新相應的數據和,則子表同時將與主表相匹配的行的外鍵列置為null。當外鍵列被設置為not null時無效。
  • no action:數據庫拒絕刪除或更新主表。
  • restrict:數據庫拒絕刪除或更新主表。如果未指定on delete或on update的動作,則on delete或on update的默認動作就為restrict。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

历史| 拜城县| 湘乡市| 宁晋县| 扎鲁特旗| 黄大仙区| 丰都县| 全南县| 屏东县| 遂溪县| 皮山县| 德惠市| 东兰县| 昌江| 铅山县| 宜兰县| 准格尔旗| 廉江市| 临高县| 无锡市| 永泰县| 佳木斯市| 扶沟县| 南召县| 峡江县| 公安县| 文成县| 东丰县| 洮南市| 凌海市| 策勒县| 五指山市| 莱芜市| 开鲁县| 陆良县| 泰宁县| 西盟| 广昌县| 门头沟区| 台山市| 耿马|