亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

MySQL外鍵使用及說明詳解

2024-07-24 13:10:19
字體:
來源:轉載
供稿:網友

一、外鍵約束

MySQL通過外鍵約束來保證表與表之間的數據的完整性和準確性。

外鍵的使用條件:

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

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

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

外鍵的好處:

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

外鍵的定義語法:

[CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)REFERENCES tbl_name (index_col_name, ...)[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}][ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]

該語法可以在 CREATE TABLE 和 ALTER TABLE 時使用,如果不指定CONSTRAINT symbol,MYSQL會自動生成一個名字。

ON DELETE、ON UPDATE表示事件觸發限制,可設參數:

RESTRICT(限制外表中的外鍵改動)
CASCADE(跟隨外鍵改動)
SET NULL(設空值)
SET DEFAULT(設默認值)
NO ACTION(無動作,默認的)

簡單演示一下使用,做dage和xiaodi兩個表,大哥表是主鍵,小弟表是外鍵

建表:

CREATE TABLE `dage` (`id` int(11) NOT NULL auto_increment,`name` varchar(32) default '',PRIMARY KEY (`id`))ENGINE=InnoDB DEFAULT CHARSET=latin1;CREATE TABLE `xiaodi` (`id` int(11) NOT NULL auto_increment,`dage_id` int(11) default NULL,`name` varchar(32) default '',PRIMARY KEY (`id`),KEY `dage_id` (`dage_id`),CONSTRAINT `xiaodi_ibfk_1` FOREIGN KEY (`dage_id`) REFERENCES `dage` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;

插入個大哥:

mysql> insert into dage(name) values('銅鑼灣');Query OK, 1 row affected (0.01 sec)mysql> select * from dage;+----+--------+| id | name |+----+--------+| 1 | 銅鑼灣 |+----+--------+1 row in set (0.00 sec)

插入個小弟:

mysql> insert into xiaodi(dage_id,name) values(1,'銅鑼灣_小弟A');Query OK, 1 row affected (0.02 sec)mysql> select * from xiaodi;+----+---------+--------------+| id | dage_id | name |+----+---------+--------------+| 1 | 1 | 銅鑼灣_小弟A |+----+---------+--------------+

把大哥刪除:

mysql> delete from dage where id=1;ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`bstar/xiaodi`, CONSTRAINT `xiaodi_ibfk_1` FOREIGN KEY (`dage_id`) REFERENCES `dage` (`id`))

提示:不行呀,有約束的,大哥下面還有小弟,可不能扔下我們不管呀!

插入一個新的小弟:

mysql> insert into xiaodi(dage_id,name) values(2,'旺角_小弟A'); ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`bstar/xiaodi`, CONSTRAINT `xiaodi_ibfk_1` FOREIGN KEY (`dage_id`) REFERENCES `dage` (`id`))

提示:小子,想造反呀!你還沒大哥呢!

把外鍵約束增加事件觸發限制:

mysql> show create table xiaodi;CONSTRAINT `xiaodi_ibfk_1` FOREIGN KEY (`dage_id`) REFERENCES `dage` (`id`)mysql> alter table xiaodi drop foreign key xiaodi_ibfk_1; Query OK, 1 row affected (0.04 sec)Records: 1 Duplicates: 0 Warnings: mysql> alter table xiaodi add foreign key(dage_id) references dage(id) on delete cascade on update cascade;Query OK, 1 row affected (0.04 sec)Records: 1 Duplicates: 0 Warnings: 0

再次試著把大哥刪了:

mysql> delete from dage where id=1;Query OK, 1 row affected (0.01 sec)mysql> select * from dage;Empty set (0.01 sec)mysql> select * from xiaodi;Empty set (0.00 sec) 

需要注意點:

MySQL允許使用外鍵,但是為了完整性檢驗的目的,在除了InnoDB表類型之外的所有表類型中都忽略了這個功能。這可能有些怪異,實際上卻非常正常:對于數據庫的所有外鍵的每次插入、更新和刪除后,進行完整性檢查是一個耗費時間和資源的過程,它可能影響性能,特別是當處理復雜的或者是纏繞的連接樹時。

因而,用戶可以在表的基礎上,選擇適合于特定需求的最好結合。所以,如果需要更好的性能,并且不需要完整性檢查,可以選擇使用MyISAM表類型,如果想要在MySQL中根據參照完整性來建立表并且希望在此基礎上保持良好的性能,最好選擇表結構為innoDB類型。

以上所述是小編給大家介紹的MySQL外鍵使用及說明詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩黄色在线免费观看| 欧美日韩免费在线观看| 亚洲欧洲在线免费| 亚洲在线免费视频| 国产精品美女www| 亚洲欧美在线播放| 久久国产精品网站| 乱亲女秽乱长久久久| 亚洲精品视频免费| 色777狠狠综合秋免鲁丝| 另类视频在线观看| 亚洲第一区中文字幕| 欧美剧在线观看| 国产91精品久久久久| 久久久999国产精品| 国模精品视频一区二区三区| 欧美精品中文字幕一区| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美成人在线免费视频| 国产精品伦子伦免费视频| 日韩激情视频在线| 97婷婷涩涩精品一区| 欧美性xxxx在线播放| 不卡av在线播放| 青青草99啪国产免费| 国产成人精品在线| 欧美日韩国产在线| 国产精品视频成人| 国产精品久久久久免费a∨| 国产精品jvid在线观看蜜臀| 亚洲老头老太hd| 在线免费观看羞羞视频一区二区| 欧美在线亚洲一区| 亚洲男人天堂网站| 国产精品福利久久久| 久久久久久久久久久免费精品| 中文字幕国内精品| 亚洲午夜精品久久久久久性色| 亚洲第一免费网站| 久久伊人色综合| 成人亲热视频网站| 国产午夜精品久久久| 亚洲成人av片在线观看| 欧美国产日韩xxxxx| 高清一区二区三区四区五区| 最新69国产成人精品视频免费| 2021国产精品视频| 日韩中文字幕免费视频| 中文字幕日韩精品在线| 91精品久久久久久久久久入口| 91久久精品国产91久久| 亚洲视频电影图片偷拍一区| 日韩电影免费观看在线观看| 亚洲色图综合网| 国产精品扒开腿做爽爽爽视频| 亚洲成年人影院在线| 亚洲视频专区在线| 亚洲精品在线观看www| 国内免费精品永久在线视频| 国产综合久久久久| 欧美激情一区二区久久久| 亚洲欧美制服中文字幕| 九九热视频这里只有精品| 国产精品福利无圣光在线一区| 亚洲另类欧美自拍| 国产欧美婷婷中文| 亚洲精品乱码久久久久久金桔影视| 成人在线小视频| 欧美激情喷水视频| 精品久久在线播放| 亚洲香蕉av在线一区二区三区| 成人黄色av免费在线观看| 亚洲久久久久久久久久久| 色综合天天狠天天透天天伊人| 久久久亚洲精品视频| 亚洲欧洲日韩国产| 欧美日韩精品中文字幕| 国产99久久久欧美黑人| 中文字幕精品影院| 日韩中文字幕欧美| 一区二区三区 在线观看视| 欧美精品在线观看| 日韩av在线一区二区| 欧美国产日韩一区二区三区| 久久精品国产清自在天天线| 国产精品久久一区| 国产婷婷色综合av蜜臀av| 日韩av毛片网| 伊人成人开心激情综合网| 亚洲综合第一页| 欧美在线免费视频| 97精品国产97久久久久久| 国产高清在线不卡| 精品视频9999| 国产精品一区电影| 日韩精品视频免费专区在线播放| 国内精品久久久久久| 亚洲天堂开心观看| 久久99精品国产99久久6尤物| 久久色免费在线视频| 欧美性资源免费| 国内精品久久久久久久久| 性亚洲最疯狂xxxx高清| 91精品免费视频| 国产精品第一视频| 欧美成人h版在线观看| 97avcom| 国产区精品在线观看| 91久久在线观看| 久久久女女女女999久久| 久久这里有精品| 亚洲韩国青草视频| 欧美性生交xxxxxdddd| 欧美电影《睫毛膏》| 国产精品99久久久久久久久| 中文字幕无线精品亚洲乱码一区| 国产欧美一区二区三区四区| 国产一区二区三区免费视频| 久久久久久久久国产精品| 久久久成人精品视频| 日韩精品视频三区| 亚洲国产一区自拍| 国语自产在线不卡| 亚洲男人天堂视频| 亚洲视频视频在线| 亚洲欧美成人网| 高跟丝袜一区二区三区| 日韩在线观看高清| 91高清免费在线观看| 亚洲精品久久7777777| 爱福利视频一区| 亚洲天堂av综合网| 国产精品成人va在线观看| 国产精品免费一区二区三区都可以| 欧美精品激情在线观看| 欧美性极品少妇精品网站| 久久亚洲综合国产精品99麻豆精品福利| 色伦专区97中文字幕| 91夜夜揉人人捏人人添红杏| 中文字幕国产日韩| 日韩av一区在线观看| 久久精品国产69国产精品亚洲| 亚洲日韩中文字幕| 亚洲精品一区二区在线| 成人欧美一区二区三区黑人孕妇| 国产色综合天天综合网| 青青精品视频播放| 久久久综合免费视频| 久久久久久久久网站| 红桃视频成人在线观看| 国产一区二区黄| 性色av一区二区三区在线观看| 日本精品久久电影| 亚洲女成人图区| 亚洲欧洲成视频免费观看| 亚洲自拍小视频免费观看| 国产欧美一区二区三区在线看| 91禁外国网站| 成人免费xxxxx在线观看| 国产精品久久电影观看| 亚洲色图综合久久| 成人网在线免费看| 7m第一福利500精品视频| 国产精品免费一区二区三区都可以|