何时使用不同的永不拒绝(“插入或更新”)MySQL语句?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了何时使用不同的永不拒绝(“插入或更新”)MySQL语句?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1650字,纯文字阅读大概需要3分钟。
内容图文
![何时使用不同的永不拒绝(“插入或更新”)MySQL语句?](/upload/InfoBanner/zyjiaocheng/899/2cbf3c2938134e58bc2e5fa7e566fd41.jpg)
应用程序中的标准问题是如果记录不存在则插入记录 – 如果记录存在则更新.在PRIMARY KEY未知的情况下,通常通过发出SELECT然后在找到记录时运行INSERT或UPDATE来解决这个问题.
但是,我知道至少有三种方法可以将记录插入到数据库中,即使记录已经存在.就个人而言,如果已经存在,我宁愿删除新的插入请求,但是在某些情况下,您可能希望删除数据库中的记录并使用新记录.
CREATE TABLE IF NOT EXISTS `table` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`foo` int(10) unsigned NOT NULL,
`bar` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `row` (`foo`,`bar`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
以下是三种方法:
> INSERT IGNORE INTO table(foo,bar)VALUES(2,3);
> INSERT INTO表(foo,bar)VALUES(2,3)ON DUPLICATE KEY UPDATE;
>更换到表格(foo,bar)VALUES(2,3);
在什么时候应该使用这些方法?
有人能给出一些正确的使用场景的例子吗?
解决方法:
>当您只想插入新行时,应使用INSERT
假设您正在存储日志条目,您将要记录每个事件,使用INSERT.
>如果您希望表中存在特定键,则应使用INSERT IGNORE,如果它是创建它的当前插入,或者它是否已存在,则无关紧要.
假设您有一个电话号码和使用次数表,您会找到一个您不确定的新电话号码,但是您希望它在那里.
您使用INSERT IGNORE确保它在那里.
>如果要确保表中存在特定键,则应使用REPLACE INTO,如果存在,则需要使用新值,而不是存在.
您有另一个带有电话号码的表,这次您会找到一个新号码和一个与之关联的名称.
您可以使用REPLACE INTO查找和更新完整记录,或只是插入新信息.
> INSERT INTO … ON DUPLICATE KEY UPDATE …
请注意,这不是编写REPLACE INTO的替代方法,只要您确定存在特定键,但是如果它确实更新了某些列,而不是所有列,则应使用上述方法.
例如,如果您要存储来自某个IP的访问次数,以及该用户访问过的第一个页面.
INSERT INTO访问者(ip,visits,first_page)VALUES(< ip>,1,< current_page>)ON DUPLICATE KEY visits = visits 1;
内容总结
以上是互联网集市为您收集整理的何时使用不同的永不拒绝(“插入或更新”)MySQL语句?全部内容,希望文章能够帮你解决何时使用不同的永不拒绝(“插入或更新”)MySQL语句?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。