开始学SQL的时候学的是MSSQL,后来由于项目需要转到了MySQL。两者语法大体上是一样的,只是个别有些差异。具体不详述,相关文章很多,可以自己搜索查看。只是在开发项目时看到别人写的插入语句有些陌生,用的是Replace into,而不是Insert into,为了探个究竟,看了几篇文章,总结下。
替换
当插入一条记录时,希望如果记录已经存在,就需要先删除再插入,如果不存在就直接插入。这种情况用REPLACE
就很合适,它自己做查询判断,然后插入记录。
REPLACE INTO idol(id, name, gender, job) VALUES(1, 'Denzel', 'male', 'movie star');
如果id=1
的记录不存在,REPLACE
会直接插入记录,否则就删出已有记录再插入
更新
当插入一条记录时,希望如果记录已经存在,就更新,如果不存在就直接插入。这种情况用INSERT INTO ... ON DUPLICATE KEY UPDATE ...
就很合适,由UPDATE
指定需要更新的字段
INSERT INTO idol(id, name, gender, job) VALUES(1, 'Denzel', 'male', 'movie star') ON DUPLICATE KEY UPDATE name='Denzel.Washington';
如果id=1
的记录不存在,INSERT
就直接插入记录,否则就按照UPDATE
更新指定字段
忽略
当插入一条记录时,希望如果记录已经存在,就忽略,如果不存在就直接插入。这种情况用INSERT IGNORE INTO ...
就很合适。
INSERT IGNORE INTO idol(id, name, gender, job) VALUES(1, 'Denzel', 'male', 'movie star');
如果id=1
的记录不存在,INSERT
就直接插入记录,否则就忽略,不执行任何操作
快照
有时候我们希望对一个表进行快照,可以用下面的语句
CREATE TABLE my_idol SELECT * FROM idol WHERE id=1;
新创建的表结构和SELECT
使用的表结构完全一致。
网友评论