面试官问我:MySQL如何实现无数据插入和数据更新?

 2024-02-19 01:01:47  阅读 0

写在前面

马上就要到金九银十年跳槽的黄金期了,很多读者都开始出去面试了。 这不,还有一位读者出去面试,被面试官问了一个MySQL问题:向MySQL中插入数据,当MySQL中没有当前ID标识的数据时如何插入数据,当有标识的数据时更新数据通过当前 ID。 其实这个问题一点也不难! !

让我们从一个简单的问题开始

在正式回答这个面试问题的时候,我们先来看一个比较简单的问题:如何向MySQL中插入数据,存在则忽略,不存在则插入? 其实这个更简单的问题和标题有异曲同工之妙:当要插入的数据在MySQL中不存在时,将要插入的数据插入到MySQL中。 不同的是:标题中的问题是有数据插入时执行更新操作,而这个更简单的问题是直接忽略,有数据插入时不执行任何操作。

我们先来回答这个比较简单的问题。 其实,在面试过程中,我们需要推测面试官的心理。 显然,这里,面试官想问的是如何通过SQL语句来实现,而这样的问题往往有一个前提:那就是数据表必须有一个唯一键,也就是唯一索引。 如果你的答案是你写了一段Java代码或者C语言代码来实现的话,那么你基本上就通过了。 这是不言而喻的,因为你的回答方向与面试中预期的方向不同!

对于这个比较简单的问题,我们可以用语句来实现。 语法格式如下。

insert ignore into table(col1,col2) values ('value1','value2');

例如,我们执行以下SQL语句向MySQL中插入数据。

insert ignore into user_info (last_name,first_name) values ('binghe','binghe');

这样,如果表中已经存在=''和=''的数据,则不会插入。 如果没有,则会插入一条新数据。

上面是一种用法,也可以使用....语句来实现,这里就不举例了。

分析标题问题

接下来我们看标题中的主题,向MySQL中插入数据,存在则更新,不存在则插入。 本质上,数据表中还是需要有一个唯一键,即唯一索引。 通常在面试过程中,面试官会默许这些先决条件的存在。

带条件的insert语句_insert语句加条件_insert加条件

这里,有两种方法可以实现这种效果。 一种方法是将语句与ON KEY语句结合起来,另一种方法是通过语句来实现。

语句和ON KEY语句的实现

如果指定ON KEY并且插入行会导致索引或KEY中出现重复值,则执行。 例如,如果列 a 定义为并包含值 1,则以下两个语句具有相同的效果:

INSERT INTO table (a,b,c) VALUES (1,2,3)  ON DUPLICATE KEY UPDATE c=c+1; 
UPDATE table SET c=c+1 WHERE a=1; 

如果该行作为新记录插入,则受影响的行值为1; 如果原始记录被更新,则受影响行的值为2。

语句执行

insert语句加条件_insert加条件_带条件的insert语句

using 的最大优点是可以将 sum 合二为一,形成原子操作。 这消除了在同时使用 和 时考虑添加事务等复杂操作的需要。 使用时,表中必须有唯一索引,并且该索引所在的字段不能允许空值,否则就会一模一样。 执行后,系统返回受影响的行数。 如果返回1,则表示表中没有重复记录。 如果返回2,则表示有重复记录。 系统会自动先删除该记录,然后再重新记录。 用于插入这条记录。

语法非常相似。 例如,以下语句插入或更新一条记录。

REPLACE INTO users (id,name,age) VALUES(1, 'binghe', 18); 

大好处

关注“冰川科技”微信公众号,后台回复关键词“设计模式”即可获取《Java 23设计模式深入入门》PDF文档。 回复“Java8”关键字即可获取《Java8新特性教程》PDF文档。 回复“限流”关键词即可获取PDF文档《亿级流量下的分布式限流解决方案》。 这三个PDF是最初创建和整理的超硬核教程。 它们是面试的必备品! !

好了,今天不说啦! 别忘了点赞、转发,让更多的人看到,一起学习,一起进步! !

写在最后

如果你觉得冰河写的还不错,请微信搜索并关注“冰河科技”微信公众号,从冰河“冰河科技”微信官方学习高并发、分布式、微服务、大数据、互联网和云原生技术账号更新了大量技术主题,每一篇技术文章都充满了有用的信息! 许多读者通过阅读“冰川科技”微信公众号上的文章,击败面试官,成功跳槽到大公司,并且许多读者实现了技术飞跃,成为公司的技术骨干! 如果你也想像他们一样提升自己的能力,实现技术能力的飞跃,进大厂,升职加薪,那就关注“冰川科技”微信公众号,这里会更新超硬核每天都有技术资讯,让您知道如何去做。 不再为提高技术能力而困惑!

标签: 插入 语句 题目

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码