您当前的位置:主页 > 产品展示 >


深入解析MySQL外键约束的使用


时间:1554681710浏览:161次 admin

深刻解析MySQL外键约束的适合:

本文将向审稿人绍介MySQL说得中肯外键约束。经过本文的绍介,您会发明当使更新父表说得中肯信息行的时辰跳过对子表信息的大量垂悬使更新是件极其容易的事实。 
本文将向审稿人绍介MySQL说得中肯外键约束。经过本文的绍介,您会发明当使更新父表说得中肯信息行的时辰跳过对子表信息的大量垂悬使更新是件极其容易的事实。 
一、简介
适合MySQL勋绩了信息库迫使的小型Web适合程式的人家,为相干信息库创建表、检索、使更新和切除买卖是对立简略的工序。。在理论上,供给男教师最经用的SQL判决。,而且熟习您选择适合的开会手稿程序讲。,履行MySQL Tabl所需的各式各样的买卖就十足了。,尤其在适合紧紧地MyISAM信息库引擎时。。只是,平坦的在最简略的环境下。,事实比笔者设想的要复杂得多。。让笔者用原生的典型的范例来阐明。。承认你正运转原生的视频博客设置,你快要每天都在使更新。,网站容许游客对你的帖子颁发评论。。
在这种环境下,笔者的信息库时尚可能性包孕无论以任何方式两个MyISAM表。,原生的用来回忆视频博客文字的人。,处置游客评论的等等的方法。很尖利地,这两个表中间有一对多的相干。,因而笔者得在次要的张表中设立释义原生的外键。,去,当信息行被使更新或D时,可以饲料信息库完整性。。
大约的适合程式。,不光饲料两张游戏台的完整性是原生的缜密的的应战,最大的登陆处是笔者得在适合程式中饲料完整性。。这是显得庞大Web使突出在勋绩工序中用不着适合的方法。,因MyISAM表可以想要优良的机能。。
自然,这也要开支定价。,多达我过去的说过的。,适合程式得饲料信息库的完整性和坚固性。,这暗示需求更复杂的课程逻辑来处置RE。。但是可以经过适合剽窃层和O来理想化信息库拜候。,只是跟随适合程式所需的信息表等同的筹集,处置它们所需的逻辑无疑也会因此说服越发复杂。
这么,大约MySQL,即使有信息库级外键处置方法来扶助防守DAT?,答案是一定的!MySQL也可以帮助NYNDB表。,使笔者可以经过一种异常简略的方法来处置外键约束。刚过去的特点容许笔者跳过某个举措。,譬如,使更新和切除表说得中肯某个信息行以饲料P。
每原生的优势都有它的错误。,适合NYNDB表的首要错误是它们比MyISAM慢。,异乎寻常地在大型号的适合中,得查询许多的表。,这点尤为尖利地。。幸运地较新发行MySQL的MyISAM表也已帮助外键约束。
本文将绍介以任何方式将外键约束适合于InnoDB表。更,笔者还将适合原生的简略的鉴于PHP的MySQL剽窃类来创建顾虑的示例法典;自然,您还可以适合等等您喜爱的开会讲。。现时,笔者开端绍介以任何方式将外键约束适合于MySQL。
二、适合外键约束的时期
老实说,在MySQL中适合InnDB表时,不尽然非用外键约束不成,但是,为了外键约束在一点点环境下的影响,笔者将经过前面提到的范例来约定法典。。它由两个MyISAM表化合。,它们分袂用来回忆视频博客文字和评论。。
设立释义信息库时尚时,笔者需求创建两个表中间的一对多相干。,方法是在回忆正文的表中创建外键。,将信息行(即正文)有代理人到使具有特性的视频博客帖子。下面是创建示例MyISAM表的根本SQL法典:
DROP TABLE IF EXISTS `test`.`blogs`;

创建表与试验有关的

`id` INT(10) UNSIGNED AUTO_INCREMENT,

前进课文,

满意的课文,

作者'VARCHAR(45)默许零,

普里罗斯主要的(ID)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `test`.`comments`;

创建表与试验有关的

`id` INT(10) UNSIGNED AUTO_INCREMENT,

`blog_id` INT(10) UNSIGNED DEFAULT NULL,

评论课文,

作者'VARCHAR(45)默许零,

普里罗斯主要的(ID)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;
下面,笔者只设立释义了两个MyISAM表。,它们设立了视频博客适合的信息层。。如您所见,原生的张表叫做视频博客。,它由具有尖利地意思的范畴化合。,分袂为每个视频博客文字ID。、前进和满意的,终于是作者。。次要的个表称为正文。,各式各样的视频博客帖子评析,它适合视频博客文字的ID作为其外键。,创建一对多相干。
直到今天,笔者的任务舒适的。,因笔者合理的创建了两个简略的MyISAM表。。下一步,笔者需求做的是把这些表格填鸭式学的某个记载。,推动演示在第原生的表中切除表项。,您可能性在另原生的表中处死这些买卖。。
三、使更新视频博客文字并防守信息库完整性。
前面党派,笔者创建了两个MyISAM表,作为视频博客适合程式的信息层。。自然,外面的绍介简略。,笔者需求推动议论。。职此之故,笔者将填写这些表格说得中肯某个记载。,方法是适合SQL命令。,列举如下所示:
拔出视频博客(ID), title, content,作者)值(空),第原生的视频博客条专心的前进,第原生的视频博客条专心的满意的, ’Ian’)

拔出正文(ID), blog_id, comment,作者)值(空), 1,评论第原生的视频博客门口, ’Susan Norton’),(零点), 1,评论第原生的视频博客门口,罗斯·威尔逊)下面的法典,性质上仿照了审稿人Susan和Rose对笔者的原生的篇视频博客作出了评论的环境。承认笔者现时适合另一篇文字来使更新第原生的视频博客。。自然,这是可能性的。。
在这种环境下,为了饲料信息库的坚固性,正文表也得呼应地使更新。,或人工控制使更新,或许经过处置信息层适合来使更新它。。就本例说起,笔者将适合SQL命令履行使更新。,列举如下所示:

使更新视频博客集ID=2, title = 第原生的视频博客条专心的前进, content =第原生的视频博客条专心的满意的,作者=某个最大限度的不明的人,在内的ID=1

UPDATE comments SET blog_id = 2 WHERE blod_id = 1  如上所述,因原生的视频博客的信息项的满意的先前使更新。,去正文表得成绩报告单这一零钱。。自然,性质上,刚过去的使更新买卖可能性在适合程式Lev上履行。,缺陷人工控制的。,这就暗示刚过去的逻辑得适合开会讲来成功。

  为了履行刚过去的买卖,大约PHP,您可以经过原生的简略的子工序。,但性质上,假如适合了外键约束的话,正文表的使更新买卖可以付托给信息库。。

  就像这篇文字所说的那么。,InabdMySQL表想要了对该有或起作用的无漏洞的帮助。因而,前面党派笔者会适合外键约束重行前面的示例法典。

  四、信息库的大量垂悬使更新

  下面,笔者将使用外键约束和InnoDB表(而非默许的MyISAM典型)来重行构造前面的示例法典。职此之故,率先,笔者需求重行设立释义这两个示例表。,大约他们就可以适合使具有特性的信息库引擎。。职此之故,您可以适合下面所示的SQL法典。:

DROP TABLE IF EXISTS `test`.`blogs`;

创建表与试验有关的

`id` INT(10) UNSIGNED AUTO_INCREMENT,

前进课文,

满意的课文,

作者'VARCHAR(45)默许零,

普里罗斯主要的(ID)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `test`.`comments`;

创建表与试验有关的

`id` INT(10) UNSIGNED AUTO_INCREMENT,

`blog_id` INT(10) UNSIGNED DEFAULT NULL,

评论课文,

作者'VARCHAR(45)默许零,

普里罗斯主要的(ID),

KEY `blog_ind` (`blog_id`),

CONSTRAINT `comments_ibfk_1` FOREIGN KEY (`blog_id`) REFERENCES `blogs` (`id`) ON UPDATE CASCADE

) ENGINE=InnoDB DEFAULT CHARSET=utf8;   在这一点上的法典与过去的的法典比拟,原生的尖利地的分别是,这两个体现时适合的是NYNDB回忆单元。,因而可以帮助外键约束。以及,笔者还需求注意到设立释义正文表的法典。:

CONSTRAINT `comments_ibfk_1` FOREIGN KEY (`blog_id`) REFERENCES `blogs` (`id`) ON UPDATE CASCADE   性质上,刚过去的国务的是要使充满mysql mysql,当视频博客表使更新时,笔者还需求在评论中使更新外键BrgGyID的值。。更确切地说,我在在这一点上做的是让MySQL在CASCADI中防守信息库完整性。,这暗示当视频博客被使更新时。,相关性正文也应即刻对此更改作出回报或回复。,要紧的是,刚过去的有或起作用的成功无履行。。

  先前设立释义了两个示例MySQL表。,现时,使更新这两个表与运转UPDATE判决平均简略。,列举如下所示:

"使更新视频博客集ID=2, title = 第原生的视频博客条专心的前进, content =第原生的视频博客条专心的满意的,作者=某个最大限度的不明的人,在内的ID=1"  前面说过,笔者用不着使更新正文表。,因MySQL志愿地处置持有违禁物这些。。更,当尝试使更新视频博客表的信息行时,,还可以经过去除查询的“ON UPDATE”党派或许规则“NO ACTION”和“RESTRICT”让MySQL什么也不做。自然,MySQL也可以做等等事实。,这些将分袂在以下文字中绍介。。
经过外面的绍介,据我看来完全地先前对以任何方式在MySQL说得中肯InnoDB表化合适合外键约束受胎原生的透明的的看法,自然,您也可以即刻写法典。,以推动低沉对这一实用的的信息库功用的看法。   五、小结
本用纸覆盖,笔者分绍介了在MySQL中化合适合外键约束和InnoDB表的字母表。多达您在本文说得中肯示例中所音符的,跳过子表信息项的大量垂悬使更新先前舒适的了。,同时也阐明了适合程式以任何方式处置信息层。。自然,当切除P说得中肯信息行时,也可以想要相等的的大量垂悬效应。,笔者他日将在本用纸覆盖分论述。。

关于本站

优博时时彩 - 优博时时彩平台 - 优博平台


微博:大品牌游戏

专注:大品牌游戏

简介:体育资讯第一站