内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

MySQL創(chuàng)建數(shù)據(jù)表并建立主外鍵關(guān)系詳解

前言

網(wǎng)站設(shè)計(jì)制作過程拒絕使用模板建站;使用PHP+MYSQL原生開發(fā)可交付網(wǎng)站源代碼;符合網(wǎng)站優(yōu)化排名的后臺(tái)管理系統(tǒng);成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營銷網(wǎng)站建設(shè)收費(fèi)合理;免費(fèi)進(jìn)行網(wǎng)站備案等企業(yè)網(wǎng)站建設(shè)一條龍服務(wù).我們是一家持續(xù)穩(wěn)定運(yùn)營了10多年的創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)公司。

為MySQL數(shù)據(jù)表建立主外鍵需要注意以下幾點(diǎn):

  • 需要建立主外鍵關(guān)系的兩個(gè)表的存儲(chǔ)引擎必須是InnoDB。
  • 外鍵列和參照列必須具有相似的數(shù)據(jù)類型,即可以隱式轉(zhuǎn)換的數(shù)據(jù)類型。
  • 外鍵列和參照列必須創(chuàng)建索引,如果外鍵列不存在索引,mysql將自動(dòng)創(chuàng)建索引。

一、SQL語句創(chuàng)建數(shù)據(jù)表并設(shè)置主外鍵關(guān)系

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),
-- 方式一:不指定外鍵名稱,數(shù)據(jù)庫自動(dòng)生成
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;

二、當(dāng)數(shù)據(jù)表已經(jīng)存在時(shí),就要使用下面的方法建立主外鍵關(guān)系

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

三、刪除主外鍵約束

-- 通過修改列的屬性來刪除自增長,第一個(gè)(ID)為原列名,第二個(gè)(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;

 四、主外鍵關(guān)系的約束

如果子表試圖創(chuàng)建一個(gè)在主表中不存在的外鍵值,數(shù)據(jù)庫會(huì)拒絕任何insert或update操作。

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

on delete和on update都有下面四種動(dòng)作。

  • cascade:主表刪除或更新相應(yīng)的數(shù)據(jù)行,則子表同時(shí)刪除或更新與主表相匹配的行,即級(jí)聯(lián)刪除、更新。
  • set null:主表刪除或更新相應(yīng)的數(shù)據(jù)和,則子表同時(shí)將與主表相匹配的行的外鍵列置為null。當(dāng)外鍵列被設(shè)置為not null時(shí)無效。
  • no action:數(shù)據(jù)庫拒絕刪除或更新主表。
  • restrict:數(shù)據(jù)庫拒絕刪除或更新主表。如果未指定on delete或on update的動(dòng)作,則on delete或on update的默認(rèn)動(dòng)作就為restrict。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

本文名稱:MySQL創(chuàng)建數(shù)據(jù)表并建立主外鍵關(guān)系詳解
新聞來源:http://m.rwnh.cn/article28/gddojp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站網(wǎng)站營銷、網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)公司網(wǎng)站建設(shè)、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
呼图壁县| 南充市| 乌拉特后旗| 项城市| 长沙市| 府谷县| 万盛区| 白银市| 新巴尔虎右旗| 克东县| 梁河县| 湘潭市| 德江县| 新绛县| 望城县| 二连浩特市| 鹰潭市| 蒲江县| 湄潭县| 东台市| 土默特左旗| 佛山市| 河池市| 焦作市| 清镇市| 通化市| 分宜县| 武隆县| 紫云| 什邡市| 三门峡市| 屏南县| 两当县| 汉川市| 武鸣县| 车致| 新巴尔虎右旗| 且末县| 瓦房店市| 哈密市| 仁寿县|