欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

MySQL中的外鍵作用是什么

小編給大家分享一下MySQL中的外鍵作用是什么,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

10年的呼中網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。營銷型網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整呼中建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)公司從事“呼中網(wǎng)站設(shè)計”,“呼中網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。

MySQL外鍵的作用:

保持?jǐn)?shù)據(jù)一致性,完整性,主要目的是控制存儲在外鍵表中的數(shù)據(jù)。使兩張表形成關(guān)聯(lián),外鍵只能引用外表中列的值!

我們來建兩個表

CREATE TABLE `example1` (
  `stu_id` int(11) NOT NULL DEFAULT '0',
  `course_id` int(11) NOT NULL DEFAULT '0',
  `grade` float DEFAULT NULL,
  PRIMARY KEY (`stu_id`,`course_id`)
);
CREATE TABLE `example2` (
  `id` int(11) NOT NULL,
  `stu_id` int(11) DEFAULT NULL,
  `course_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `f_ck` (`stu_id`,`course_id`),
  CONSTRAINT `f_ck` FOREIGN KEY (`stu_id`, `course_id`) REFERENCES `example1` (`stu_id`, `course_id`)
);
insert into example1 (stu_id,course_id,grade)values(1,1,98.5),(2,2,89);
insert into example2 (id,stu_id,course_id)values(1,1,1),(2,2,2);

我們建了

example1表,里面包含stu_id學(xué)號,course_id課程號,grade分?jǐn)?shù)

example2表,里面包含id,stu_id學(xué)號,course_id課程號,然后建立外鍵

分別插入數(shù)據(jù)到兩個表中。

我們把example2中的stu_id和course_id稱為example2表的外鍵,example1是父表,example2是字表,兩個表形成關(guān)聯(lián),必須字表的數(shù)據(jù)刪除后,才能刪除父表中的對應(yīng)數(shù)據(jù)

現(xiàn)在我們來刪除example1中的一條數(shù)據(jù)

delete from example1 where stu_id=2;

會發(fā)現(xiàn)報錯

ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`test`.`example3`, CONSTRAINT `f_ck` FOREIGN KEY (`stu_id`, `course_id`) REFERENCES `example2` (`stu_id`, `course_id`))

因為example2中的數(shù)據(jù)關(guān)聯(lián)了example1的數(shù)據(jù),這樣是刪不了的,達(dá)到了外鍵的作用;

然后我們來先刪除example2表中的數(shù)據(jù),再刪除example1表中的數(shù)據(jù)

delete from example2 where stu_id=2;
delete from example1 where stu_id=2;

這樣就成功了;

事件觸發(fā)限制:

on delete和on update , 可設(shè)參數(shù)cascade(跟隨外鍵改動), restrict(限制外表中的外鍵改動),set Null(設(shè)空值),set Default(設(shè)默認(rèn)值),[默認(rèn)]no action

我們來看看事件觸發(fā)限制是干嘛的。。。

我們先刪除外鍵,然后重新建立外鍵帶上事件觸發(fā)限制

alter table example2 drop foreign key f_ck; alter table example2 add CONSTRAINT `f_ck` FOREIGN KEY (`stu_id`, `course_id`) REFERENCES `example1` (`stu_id`, `course_id`) ON DELETE CASCADE ON UPDATE CASCADE;

我們先查看一下數(shù)據(jù)

mysql> select * from example1;select * from example2;
+--------+-----------+-------+

| stu_id | course_id | grade |

+--------+-----------+-------+

|      1 |         1 |  98.5 |

+--------+-----------+-------+

1 row in set (0.00 sec)

+----+--------+-----------+

| id | stu_id | course_id |

+----+--------+-----------+

|  1 |      1 |         1 |

+----+--------+-----------+

1 row in set (0.00 sec)

這時example1和example2中的stu_id和course_id都是1,

再來修改example1表中的數(shù)據(jù)看看

update example1 set stu_id=3,course_id=3 where stu_id=1;

再來查看數(shù)據(jù)

mysql> select * from example1;select * from example2;
+--------+-----------+-------+

| stu_id | course_id | grade |

+--------+-----------+-------+

|      3 |         3 |  98.5 |

+--------+-----------+-------+

1 row in set (0.00 sec)

+----+--------+-----------+

| id | stu_id | course_id |

+----+--------+-----------+

|  1 |      3 |         3 |

+----+--------+-----------+

1 row in set (0.00 sec)

發(fā)現(xiàn)沒,example1和example2中的stu_id和course_id都變成了3

我們在來刪除example1表中的數(shù)據(jù)

delete from example1 where stu_id=3;

會發(fā)現(xiàn)可以刪除,而且example2中的數(shù)據(jù)也沒有了;

其實啊,外鍵就這個作用,保持?jǐn)?shù)據(jù)一致性,完整性,是不讓改還是一起改,由事件觸發(fā)器決定;

看完了這篇文章,相信你對MySQL中的外鍵作用是什么有了一定的了解,想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

網(wǎng)頁名稱:MySQL中的外鍵作用是什么
當(dāng)前路徑:http://www.chinadenli.net/article6/jdheig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)微信小程序外貿(mào)網(wǎng)站建設(shè)網(wǎng)站制作云服務(wù)器網(wǎng)站營銷

廣告

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

h5響應(yīng)式網(wǎng)站建設(shè)