《玩转MySQL中的外键约束》.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《玩转MySQL中的外键约束》.doc

玩转MySQL中的外键约束 玩转MySQL的外键约束之级联删除篇 玩转MySQL中的外键约束之更新和删除 玩转MySQL中的外键约束之PHP篇 一、利用外键约束更新MySQL中的数据 现在,最流行的开源关系型数据库管理系统非MySQL莫属,而MySQL又支持多个存储引擎,其中默认的也是速度较快的存储引擎为MyISAM,对许多读者来说,在开发自己数据库驱动的web应用程序之前,可能已经使用了它很长一段时间了。 然而,有时候我们的项目可能需要额外的特性,例如需要处理外键约束,这时我们就需要用到其它类型的MySQL存储引擎。在这种情况下,InnoDB表将非常适合我们的要求,尽管在性能方面可能比MyISAM表要稍逊一筹。大家知道,使用InnoDB表外键约束主要优点之一就是,它使我们可以在数据库级别处理和维护多个表之间的关系,而无需将此任务推给与这些表打交道的应用程序的某些模块或者程序库。 当然,前面的几篇文章中,我们已经就IndoDB表的外键约束做过相应介绍,但是那里都是通过手工方式来操作外键约束的。在本文中,我们将说明如何在更新和删除父表中的数据时,如何通过脚本语言来触发相应子表的级联更新和删除操作。 这里,我们博客应用程序的数据层由两个表构成,在前面的示例中,对这些表的操作,都是通过手工键入SQL命令完成的,现在,我们将介绍如何使用PHP程序设计语言来完成这些工作。之所以选择PHP,是因为它目前MySQL最常见的搭配语言,下面我们以PHP 5为例来说明如何外键约束操作两个InnoDB表。 通过阅读本文,您将更加真切地体会到外键约束的特性。 现在,我们开始见证PHP 5和外键约束结合在一起所带来的威力吧! 二、以级联方式更新和删除数据库中的数据 古人云,温故而知新,那么先让我们来回顾一下前面学过的内容吧。之前,我们介绍过如何运用外键约束级联更新和删除存放博客文章评论的InnoDB表中的数据。如果您尚未阅读前面的文章也不要紧,下面我们简单回顾这些内容。 这里是我们的示例中用到的两个表的定义,如下所示: DROP TABLE IF EXISTS `test`.`blogs`; CREATE TABLE `test`.`blogs` ( `id` INT(10) UNSIGNED AUTO_INCREMENT, `title` TEXT, `content` TEXT, `author` VARCHAR(45) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; DROP TABLE IF EXISTS `test`.`comments`; CREATE TABLE `test`.`comments` ( `id` INT(10) UNSIGNED AUTO_INCREMENT, `blog_id` INT(10) UNSIGNED DEFAULT NULL, `comment` TEXT, `author` VARCHAR(45) DEFAULT NULL, PRIMARY KEY (`id`), KEY `blog_ind` (`blog_id`), CONSTRAINT `comments_ibfk_1` FOREIGN KEY (`blog_id`) REFERENCES `blogs` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 上面的代码定义了两个表,需要注意一下第二个,因为它为“blog_id”字段规定了一个约束,所以当post表中的数据被更新和删除时,将触发相应的级联操作。 为了帮您理解这一过程,我们可以在表中填上一些数据,这时可以通过SQL语句INSERT来完成,如下: INSERT INTO blogs (id, title, content, author) VALUES (NULL,Title of the first blog entry, Content of the first blog entry, IAN) INSERT INTO comments (id, blog_id, comment, author) VALUES (NULL, 1, Commenting first blog entry, Tom), (NULL, 1, Commenting first blog entry, Rose) 现在,我们唯一的一条博客数据已经有了两条评论数据,如果由于任何原因需要更新博客及其评论数据的话,可以通过下列命令完成: UPDATE blogs SET

文档评论(0)

ghfa + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档