在使用MYSQL数据库中经常会碰到语句的增删改查,其中首先就是记录的添加,一般会使用insert into语句。例如有一张表就是记录学生信息的
里面已经有了几条记录:
我在插入一条记录,可以写SQL语句:
insert into student (f_master_id,f_name,f_sex,f_age) VALUES(6,'张三丰','男',98);
执行以后,刷新一下可以看到这条记录已经被插入到数据库中了。
如果我发现插入的年龄太大了,想修改的话,一般也是通过SQL语句update来实现的
update student set f_age=16 WHERE f_master_id = 6;
执行一下可以看到年龄已经被修改了
但是如果我不使用update呢?或者我已经记不清楚到底有没有插入过这条记录呢?也就是说如果没有这条记录我们就直接插入,如果有的话我们就修改,这说的好像是两件事情,需要使用作出判断然后使用两天SQL语句来执行才可以
没有插入记录使用insert into
已经插入了但是需要修改的使用update
在MYSQL中就是这样独有的语句来完成者同一件事或者是两件事情。
on duplicate key update
作用就是:当insert已经存在的记录时,执行update
insert into student (f_master_id,f_name,f_sex,f_age) VALUES(6,'张三丰','男',98) on DUPLICATE key update f_master_id=6,f_name='张四丰',f_age=13;
执行结果:
如果我想批量修改语句呢?可以使用关键字values
insert into student (f_master_id,f_name,f_sex,f_age) VALUES(5,'刘一','男',20),(6,'张三丰','男',98) on DUPLICATE key update f_master_id=VALUES(f_master_id),f_name=VALUES(f_name),f_age=VALUES(f_age);
这条SQL语句的意思是:
update student set f_name='刘一',f_age=20 where f_master_id=5;
update student set f_name='张三份',f_age=98 where f_master_id=6;
运行结果:
aaa